Hallo,
ich hab vor kurz etwas ähnliches gepostet, nun mach ich dies für den einen Fall mal etwas genauer.
Ich möchte gern aus einem Notes Agenten eine SQL DB ansprechen und Werte auslesen.
Nun die erste Frage, wie spreche ich den eine SQL View an!? Ist dies das gleiche als würde ich eine SQL Tabel ansprechen!?
Das andere Problem was ich habe, ist die Tatsache, dass ich keinerlei Werte von der SQL DB erhalte.
Code sieht wie folgt aus... (ist aus einen Musterbeispiel übernommen und angepasst worden)
Sub Click(Source As Button)
Dim Con As New ODBCConnection
Dim Qry As New ODBCQuery
Dim Res As New ODBCResultSet
Dim IsConnected As Integer
Dim sValue As String
IsConnected = Con.ConnectTo("SDE_SQL")
table=con.ListTables 'Ausgabe alle Tabellen, keine weiter Funktion dahinert
Set Qry.Connection = Con
'Qry.SQL = {SELECT * FROM _SMDBA_Incident Details} ' dies ist die View
Qry.SQL = {SELECT * FROM events} ' hier hab ich es mit einer Tabelle probiert
Set Res.Query = Qry
Res.Execute
'spätestens ab hier würde ich erwarten, dass ich im Debugger einige Werte sehe oder ähnliches.... ist aber nicht der Fall. Auch die Rows stehen nur auf 0 oder 1
IsConnected = Res.FirstRow
Do While IsConnected = True
sValue = Res.GetValue("Nachname")
Print sValue
IsConnected = Res.NextRow
Loop
IsConnected = Res.Close( DB_CLOSE )
IsConnected = Con.Disconnect
End Sub
hat jemand eine Idee woran dies liegen kann, dass ich garnichts zurück bekomme!?
Danke
Gruß
stan
Deine Aussage ja, ich meld mich beim Connect an.
widerspricht dem Code
IsConnected = Con.ConnectTo("SDE_SQL")
status = odbcConnection. ConnectTo( dataSourceName$ [ , userID$ [ , password$ ]] )
Du gibst nur die Datasource an, keine Credentials.
Weiters solltest Du den Rückgabewert der Funktionen auch auswerten. Die liefern ev. Hinweise, was nicht klappt. Z.B. ob der ConnectTo überhaupt geklappt hat.
Also statt da selbst rumzubasteln würd ich mir einfach code aus der Hilfe kopieren und den mit Errorhandling versehen.
Uselsx "*LSXODBC"
Sub Initialize
on error goto Errorhandler
Dim con As New ODBCConnection
Dim qry As New ODBCQuery
Dim result As New ODBCResultSet
Dim firstName As String
Dim lastName As String
Dim msg As String
Set qry.Connection = con
Set result.Query = qry
con.ConnectTo("ATDB")
qry.SQL = "SELECT * FROM STUDENTS"
result.Execute
msg = "Student names:" & Chr(10)
If result.IsResultSetAvailable Then
Do
result.NextRow
firstName = result.GetValue("FIRSTNAME", _
firstName)
lastName = result.GetValue("LASTNAME", _
lastName)
msg = msg & Chr(10) & firstName & " " & _
lastName
Loop Until result.IsEndOfData
Messagebox msg,, "Student Names"
result.Close(DB_CLOSE)
Else
Messagebox "Cannot get result set for STUDENTS"
Exit Sub
End If
con.Disconnect
Ende:
exit sub
Errorhandler:
print Error$ & "(" & Cstr(Err) & ") in Zeile: " & Cstr(Erl)
resume Ende
End Sub
zu a ) den Status hab ich mir zurückgeben lassen = 0
zu b ) da hab ich nichts brauchbares gefunden
zu c ) ist eigetnlich nur der Code mit der Error Meldung, bloß etwas angepasst...
siehe
On Error Goto Errorhandler
Dim con As New ODBCConnection
Dim qry As New ODBCQuery
Dim result As New ODBCResultSet
Dim firstName As String
Dim lastName As String
Dim msg As String
Set qry.Connection = con
Set result.Query = qry
con.ConnectTo("SDE_SQL")
qry.SQL = "SELECT * FROM _SMDBA_Incident"
result.Execute 'hier kommt der Fehler
msg = "Student names:" & Chr(10)
If result.IsResultSetAvailable Then
Do
result.NextRow
firstName = result.GetValue("FIRSTNAME", _
firstName)
lastName = result.GetValue("LASTNAME", _
lastName)
msg = msg & Chr(10) & firstName & " " & _
lastName
Loop Until result.IsEndOfData
Messagebox msg,, "Student Names"
result.Close(DB_CLOSE)
Else
Messagebox "Cannot get result set for STUDENTS"
Exit Sub
End If
con.Disconnect
Ende:
Exit Sub
Errorhandler:
Print Error$ & "(" & Cstr(Err) & ") in Zeile: " & Cstr(Erl)
Resume Ende
gruß
stan