Domino 9 und frühere Versionen > ND8: Entwicklung

MySQL ODBC mit Lotus Notes Agent auf 64Bit ODBCResult leer

(1/2) > >>

robin:
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

robin:
ach ja noch eine Info - Wenn ich am Server mit Access über ODBC auf die Mysql DB zugreife
bekomme ich auch alle Werte - kann anscheinend nicht am ODBC Treiber liegen.

robin:
morgen - hat keiner einen Anhaltspunkt

Thomas Schulte:
Nein. Ich nehme an das herzallerliebste Suchinstrument hast du schon beauftragt?

Ich hab mal im Notes.net irgendwo einen Beitrag über ein ähnliches, oder das gleiche Phänomen gefunden, weiss aber nicht mehr in welchem der Foren.

Ansonsten würde ich mir an deiner Stelle mal einen eigenen anderen Domino Server raufsetzen und den vielleicht eben nicht mit 64 Bit sondern mit 32 Bit. Und dann erst mal probieren ob es wirklich an der 64 Bit Version liegt. Es könnten ja vielleicht auch noch andere Einflußfaktoren eine Rolle spielen.

robin:
das mitn server aufsetzen bin ich gerade dabei :-) weil ich wirklich nicht mehr weiß was da sein könnte.  tüfftel da schon 2 tage dran rum - und die Suchfunktionen hab ich schon benützt und leider nichts dazu gefunden. Bin gespannt wies mit 32 bit server funktioniert (oder nicht) - aber das löst leider mein Problem noch nicht. Trotzdem danke - werd mal im Notes.net suchen.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln