Hallo!
Ich hab ein Problem mit einer Schnittstelle zu meiner MySQL Datenbank. Habe eine kleine Funktion gebaut welche mir Datensätze aus einer MySQL DB über ODBC rausliest und als Dokumente im Notes speichert.
Nun habe ich diese Funktion in einen Agent eingebaut und auf unserem 64 Bit Server laufen gelassen (ODBC = 3.51 64 Bit).
Das Problem ist nun, dass ich zwar die richtige Anzahl der Datensätze bekomme jedoch nur der erste Datensatz befüllt ist. Wenn ich mit odbcResult.NextRow den nächsten Datensatz bearbeiten möchte kommen mit GetValue nur noch leer Werte zurück. Wie gesagt passiert nur wenn ich den Agent am Server laufen lasse.
Führe ich mit dem Client (32Bit) den Agent aus funktioniert alles superprächtig alle Datensätze werden korrekt gespeichert.
Hier mal eine Testfunktion wo das gleich auftritt:
Sub Initialize
Dim db As NotesDatabase
Set currdb = session.CurrentDatabase()
Set odbcDBConnection = New ODBCConnection
Set qry = New ODBCQuery
Set odbcRes = New ODBCResultSet
Set session = New NotesSession
'Create logfile
Set logdoc = currdb.CreateDocument()
Call logdoc.ReplaceItemValue("form","LOGFILE")
Call logdoc.ReplaceItemValue("LOGFILE_SOURCE","Funktion Test SQL 3.1")
Call logdoc.ReplaceItemValue("LOGFILE_STARTDATUM",Now())
Call logdoc.ReplaceItemValue("LOGFILE_KURZTEXT","Aufruf der Funktion " & currdb.Server)
Call logdoc.ReplaceItemValue("LOGFILE_TEXT", "Function wurde am Server" & currdb.Server & " gestartet" & Chr(13))
Call logdoc.Save(True,False)
odbcIsConnected = odbcDBConnection.ConnectTo("INTRANET_DATA1")
Call logdoc.ReplaceItemValue("LOGFILE_TEXT",logdoc.Getitemvalue("LOGFILE_TEXT")(0) & "Connect auf ODBC aufgerufen" & Chr(13))
Call logdoc.Save(True,False)
If (odbcIsConnected = False) Then
logfile_text = logdoc.GetItemValue("LOGFILE_TEXT")
Call logdoc.ReplaceItemValue("LOGFILE_TEXT", logfile_text & "keine Verbindung zur Datenbank" & Chr(13) )
Call logdoc.ReplaceItemValue("LOGFILE_ABLAUF","Critical")
Call logdoc.save(True,False)
Exit Sub
End If
REM ODBC Query erzeugen
Set qry= New ODBCQuery
Set qry.Connection = odbcDBConnection
' searchDate = GetStrDate ( -1)
' searchDateheute = GetStrDate(0)
searchDate = "2009-12-07"
searchDateheute = "2009-12-10"
qry.SQL = "select * from TESTODBC"
Set odbcRes.Query = qry
odbcRes.CacheLimit = 100
odbcRes.FetchBatchSize = 100
Call odbcRes.Execute()
odbcRes.FetchBatchSize = 100
logtext = ""
odbcRes.CurrentRow = 1
logtext = logtext & odbcRes.FieldExpectedDataType("FELD1",DB_CHAR)
K_Famname = odbcRes.GetValue("FELD1",K_Famname)
logtext = logtext & odbcRes.GetErrorMessage & Chr(13)
logtext = logtext & "Verarbeite Name: " & K_Famname & Chr(13)
odbcRes.CurrentRow = 2
K_Famname = odbcRes.GetValue("FELD1",K_Famname)
logtext = logtext & odbcRes.GetErrorMessage & Chr(13)
logtext = logtext & "Verarbeite Name: " & K_Famname & Chr(13)
Call odbcRes.Close()
Call odbcDBConnection.Disconnect()
logtext = logtext + "Ende der Funktion:" & Chr(13)
logfile_text = logdoc.GetItemValue("LOGFILE_TEXT")(0)
Call logdoc.ReplaceItemValue("LOGFILE_TEXT", logfile_text & logtext )
Call logdoc.ReplaceItemValue("LOGFILE_ABLAUF","Normal")
Call logdoc.save(True,False)
End Sub
---> Row 1 wird normal ausgegeben -> bei Row 2 wird dann Leerstring reingeschrieben.
Hat jemand eine Idee was ich hier falsch mache
?
lg Michael