Ich habe versucht, ein Batch-Update-Programm für eine MOSS-Site zu erstellen, basierend auf dem MSDN-Beispiel hier: http://msdn.microsoft.com/en-us/library/cc404818.aspx . Obwohl die Aktualisierungsabfrage fehlerfrei ausgeführt wird, ändern sich die Daten in der Liste leider nicht.
Hier ist der von mir verwendete Batch-Befehl:
<Method ID="3767">
<SetList>8468cf0a-7e10-439c-a9b4-4197543e7b38</SetList>
<SetVar Name="Cmd">Save</SetVar>
<SetVar Name="ID">3767</SetVar>
<SetVar Name="Date_x0020_of_x0020_Birth1">1971-12-18T00:00:00Z</SetVar>
</Method>
Nach der Ausführung des Batch-Update-Befehls:
string batchReturn = web.ProcessBatchData(batch);
returns:
<Results>
<Result ID="3767" Code="0"></Result>
</Results>
Die Hauptversionsnummer des Listeneintrags wird inkrementiert, aber die Daten im Feld werden nicht geändert: Date_x0020_of_x0020_Birth1
Ich bin verblüfft.
Mehr Hintergrund: Date_x0020_of_x0020_Birth1 ist ein neues Feld, das dem Standard-Inhaltstyp für diese Liste hinzugefügt wurde. Es handelt sich um ein DateTime-Feld. Es ersetzt das ursprüngliche Feld Date_x0020_of_x0020_Birth (jetzt mit dem Anzeigenamen "Date of Birth(Text)"), das ein Textfeld war und daher Werte vor dem 01/01/1900 enthalten konnte. Bei der Stapelaktualisierung werden die Daten aus dem Textfeld nach Möglichkeit in das neue DateTime-Feld kopiert.
Das Einzige, was mir einfällt, ist, dass ich es benutze:
<SetVar Name="Cmd">Save</SetVar>
Vielleicht brauche ich den Befehl "Aktualisieren" oder "Speichern", also habe ich dies versucht:
<Method ID="1" Cmd="Update">
<Field Name='ID'>3767</Field>
<Field Name="Date_x0020_of_x0020_Birth1">1971-12-18T00:00:00Z</Field>
</Method>
Aber das kehrt zurück:
<Results>37671971-12-18T00:00:00Z<Result ID="1" Code="-2130575350">
<ErrorText>Invalid URL Parameter
The URL provided contains an invalid Command or Value. Please check the URL again.
</ErrorText>
</Result>
3767Date_x0020_of_x0020_Birth1
<Result ID="1" Code="-2147023673">
<ErrorText>The operation failed because an unexpected error occurred. (Result Code: 0x800704c7)</ErrorText>
</Result>
</Results>