InfoPath - Datentyp eines Feldes ermitteln 
Freitag, Juni 1, 2007, 10:56 AM
Wer schon einmal versucht hat, die Daten eines InfoPath Formulars über einen Webservice in eine Datenbank zu schreiben, wird sicherlich auch versucht haben, den Datentyp der ursprünglichen XML-Felder zu bestimmen um ggf. Konvertierungen durchzuführen.
Leider erhält man beim Versuch, den Datentyp per Code zu ermitteln, immer String als Ergebnis.
Ein Blick auf das XML eines XPathNavigator Objektes einer DataSource verrät, dass hier auch gar keine Datentypen hinterlegt sind, und diese auch folglich nicht ausgelesen werden können. Die gesamte Schema-Information befindet sich nämlich in der MySchema.xsd Datei, die sch z.B. in der fertigen .xsn des Formulars befindet.

Um den Datentyp zur Laufzeit dennoch ermitteln zu können, kann man über die OpenFileFromPackage Methode des Template Objekts auf die MySchema.xsd zugreifen:

public void pbStart_Clicked(object sender, ClickedEventArgs e)
{
string sType = "";
XmlDocument doc = new XmlDocument();
doc.Load(this.Template.OpenFileFromPackage("myschema.xsd"));
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("xsd", "http://www.w3.org/2001/XMLSchema");
XmlNodeList list = doc.SelectNodes("//xsd:element[@name='Geburtstag']", nsmgr);
sType = list.Item(0).Attributes.GetNamedItem("type").Value;
doc = null;
}


Danke an Daniel, der diesen Weg herausgefunden hat!


  |  Permalink   |  Related Link

InfoPath Fomulare werden nur verzögert installiert 
Mittwoch, Mai 30, 2007, 03:10 PM
Immer wieder kommt es bei Installieren/Uploaden von InfoPath Formularen in SharePoint zu dem Phänomen, dass der Status auf Installing, Upgrading oder Deleting stehen bleibt.
Das Formular ist dann nicht nutzbar und es dauert dann ein oder mehrere Stunden, bis das Formular in den Status Ready übergeht - ein Phänomen, dass es zusätzlich zu der Sommerzeit-Problematik zu geben scheint.
Ursache ist scheinbar ein Fehler in der Routine, die den Startpunkt für einen solchen Job festlegt: Liegt dieser eininge Stunden in der Zukunft, muss man eben so lange warten, bis dieser Zeitpunkt erreicht ist...

Es scheint allerdings dafür einen Workaround zu geben, indem man SharePoint zwingt, die "One-Time"-Jobs sofort auszuführen:

stsadm.exe -o execadmsvcjobs

Eine wirklich wichtige Information, meine ich!
Gefunden unter:

http://www.sharepointblogs.com/spfromscratch/

(Geändert 04.06.2007)

  |  Permalink   |  Related Link

InfoPath & FormsServer - Automatisch mehrere Formulare hochladen 
Donnerstag, April 12, 2007, 04:18 PM
Hat man einmal in all seinen InfoPath Formularen Änderungen vorgenommen und sie publiziert, muss man sie immer noch einzeln in der Central Administration uploaden, was ziemlich mühsam sein kann.

Mit stsadm.exe und dem folgenden Batch-Script geht das jedoch viel einfacher und schneller:

@echo off
echo Starting form upload! This may take a while...
echo _______________________________________________
echo.
if "%1"=="" goto end
:start
echo Uploading: %1
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm" -o upgradeformtemplate -filename %1
SHIFT
if "%1"=="" goto end
goto start
:end
echo _______________________________________________
echo.
echo OK, all form templates have been uploaded!
pause



Hierzu aus dem Code z.B. eine MassUpload.bat Datei erstellen und in den SendTo Ordner legen. (z.B.: C:\Documents and Settings\Administrator\SendTo)
Die gewünschten .xsn-Dateien markieren und SendTo -> MassUpload.bat wählen.

Alle markierten InfoPath Formulare werden nun der Reihe nach installiert, was allerdings auch seine Zeit dauert... Diese Zeit kann man jedoch sinnvoll anderweitig nutzen :)

Nachtrag:
Damit das Script funktioniert müssen die Formulare bereits in SharePoint hochgeladen worden sein, da hier nur ein upgradeformtemplate durchgefürt wird. Für neue Formulare müsste der Parameter durch uploadformtemplate ersetzt werden.

  |  Permalink   |  Related Link

DOM-Zeit 
Donnerstag, April 5, 2007, 07:28 PM
Es sieht ja ganz schick aus, besonders im Dunkeln, aber manchmal kann man sich schwer konzentrieren, wenn all die Lichter des Frühjahrs-DOMs vor dem Bürofenster blinken, und der Fahrgeschäftsbetreiber zum 798. Mal seinen Standardspruch ins Mikrofon grunzt.



(Wer es nicht kennt: Der Hamburger DOM ist ein sehr großes Volksfest (Kirmes, Jahrmarkt, Rummel) mitten in Hamburg und direkt vor unserem Bürogebäude.)

  |  Permalink   |  Related Link

MOSS 2007 - Dynamische XML-Darstellung einer Liste 
Mittwoch, April 4, 2007, 10:45 AM
Oft kommt es vor, dass man von einer SharePoint Liste die zugehörige XML-Darstellung benötigt, um z.B. von einer externen Anwendung auf die Daten zuzugreifen. Zwar kann man jede Liste exportieren, aber eine dynamische Ansicht scheint es nicht zu geben.

Mit einem kleinen Trick kann man dennoch an die XML-Darstellung einer Liste gelangen.

Um das XML von z.B. einer Lsite "Mitarbeiter" zu erhalten, muss man zunächst die GUID der Liste kennen.



Die GUID steht eigentlich immer im Quellcode einer Seite, die zu der Liste gehört - oder in der URL der List-Settings, dann aber URL-Encoded.



Ist die GUID z.B. "bba776c9-2536-447e-9c4a-f6c93d1a00a9", kann man sich über die owxssvr.dll ganz einfach das XML ausgeben lassen:

http://devserver:8090/_vti_bin/owssvr.dll?Cmd=Display&List=
{bba776c9-2536-447e-9c4a-f6c93d1a00a9}&XMLDATA=TRUE




Der XML-Code im Detail:

<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
<s:ElementType name='row' content='eltOnly' rs:CommandTimeout='30'>
<s:AttributeType name='ows_DocIcon' rs:name='Type' rs:number='1'>
<s:datatype dt:type='string' dt:maxLength='512' />
</s:AttributeType>
<s:AttributeType name='ows_Attachments' rs:name='Attachments' rs:number='2'>
<s:datatype dt:type='boolean' dt:maxLength='1' />
</s:AttributeType>
<s:AttributeType name='ows_LinkTitle' rs:name='MA-Nr' rs:number='3'>
<s:datatype dt:type='string' dt:maxLength='512' />
</s:AttributeType>
<s:AttributeType name='ows_Vorname' rs:name='Vorname' rs:number='4'>
<s:datatype dt:type='string' dt:maxLength='512' />
</s:AttributeType>
<s:AttributeType name='ows_Nachname' rs:name='Nachname' rs:number='5'>
<s:datatype dt:type='string' dt:maxLength='512' />
</s:AttributeType>
<s:AttributeType name='ows_Durchwahl' rs:name='Durchwahl' rs:number='6'>
<s:datatype dt:type='string' dt:maxLength='512' />
</s:AttributeType>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row ows_Attachments='0' ows_LinkTitle='02734' ows_Vorname='Max' ows_Nachname='Mustermann' ows_Durchwahl='-123' />
<z:row ows_Attachments='0' ows_LinkTitle='18223' ows_Vorname='John' ows_Nachname='Smith' ows_Durchwahl='-462' />
</rs:data>
</xml>


Diese Methode eignet sich z.B. hervorragend, um in InfoPath Dropdown-Listen zu füllen.


Quelle:
http://www.sharepoint-tips.com/2007/01/ ... nting.html

  |  Permalink   |  Related Link


Zurück Weiter