Ich habe ein Stück Code in einer selbsterstellen NotesScript Library das ungefähr folgendermaßen aussieht:
ODBC Vorbereitungsgedöns:
dsn = GetFieldValueTxt( ExportProfileDoc,"LeadExportSystemDSN")
Set qry.Connection = con
Set result.Query = qry
con.ConnectTo(dsn)
If Not con.IsConnected Then
Messagebox "Could not connect to " & dsn,, "Error"
Exit Sub
End If
qry.SQL = "Select * from testrecords"
result.Execute
...
Jetzt kommt das eigentliche Problem:
while ....
If Not KundenData.IsAlreadyExported(dsn) Then
result.AddRow
NrAddressesExported=NrAddressesExported+1
Call KundenData.FillODBCResultSet(result)
result.UpdateRow
End If
next ....
"KundenData" ist eine Klasse, die alle Werte enthält, sie in den Datensatz der ODBC Datenquelle geschrieben werden sollen, deren Function "FillODBCResulSet" führt eine Reihe von result.SetValue("Name", Me.getName()) Anweisungen aus, um das Resultset zu befüllen.
Leider funktioniert der Code nur beim ersten Durchlaufen der Schleife. AB dem zweiten Durchlauf gibt's ständig die Fehlermeldung:
"LS:DO- The previous added row has not been updated."
Wenn ich jetzt mit dem Debugger durch diesen Code gehe, sehe ich dass bei Aufruf von result.AddRow die Eigenschaft "CurrentRow" von "result" von "1" auf "-3" wechselt. Beim Aufruf von result.UpdateRow bleibt die aber bei -3, so dass beim nächsten Durchlauf der Schleife der Fehler auftaucht.
Nun habe ich natürlich einen Error Handler im Einsatz, der so aussieht:
errorhdl:
Print "Fehler in libHVBAdressExport: cInteressentDataset ->DoExport(): " + Error$ + ", Zeile: " + Str(Erl)
Print "Fehler in libHVBAdressExport: cInteressentDataset ->DoExport(): " + Cstr(result.GetErrorMessage()) + ", Zeile: " + Str(Erl)
If result.GetError = DBstsAHVR Then
result.UpdateRow
End If
Das soll eigentlich bei Auftauchen des obigen Fehlers (woher der auch immer kommen soll) das resultset wirklich noch einmal updaten. Aber natürlich ändert das nicht und auch der nächste Durchlauf der Schleife führt wieder zu obiger Fehlermeldung.
Ich habe ziemlich geneu den gleichen Code an weiteren Stellen meiner Library im Einsatz, wobei er lediglich mit anderen "KundenData" Klassen benutzt wird. Dort funktioniert das einwandfrei, aber hier will mir Notes das Resultset offensichtlich um's Verrecken nicht updaten. Was kann ich tun?
Ach ja: die Funktion FIllODBCResultset läuft ohne Exception durch und die Zeile "result.UpdateRow" wird jedesmal tatsächlich durchlaufen.
Danke im Voraus
Peter
Resume Next