Hallo,
seit dem Beginn meiner Ausbildung vor drei Jahren bin ich fleißiger Leser hier im Forum. Ich hab viele Lösungen zu Problemen gefunden. Nun hat mich die Suchfunktion und auch google leider im Stich gelassen.
Ich bin gerade an einem Projekt, in dem ich Daten aus einer SQL-Datenbank lesen und schreiben muss.
Das Lesen funktioniert ohne Probleme, das Schreiben soll über gespeicherte Prozeduren bewerkstelligt werden.
Und genau hier liegt mein Problem: Die gespeicherten Prozeduren sollen über Rückgabewerte sagen, ob das Eintragen der Daten funktioniert hat oder ob es einen Fehler (z.B. falsche Werte) gegeben hat.
Die Prozedur habe ich leider noch nicht, ich habe aber eine kleine Test-Prozedur erstellt, die soweit auch funktioniert. Das einzige was ich nicht hinbekomme ist, dass ich die Rückgabewerte bekomm.
Im Moment bekomm ich immer nur die Werte, die ich übergeben hab zurück.
Nun die Frage, was mach ich falsch bzw. ist das überhaupt so möglich wie ich mir das vorstelle.
Versuch mit LS:DO
Dim con As New ODBCConnection
Dim qry As New ODBCQuery
Dim result As New ODBCResultSet
Dim i As Integer
Set qry.Connection = con
Set result.Query = qry
Call con.ConnectTo("XYZ","zyx","123")
If con.IsConnected Then
MsgBox "Connected"
Else
MsgBox "Not Connected"
End If
qry.SQL = "exec dbo.Test_GIS 2,'Test'"
Call result.ExecProcedure("dbo.Test_GIS", 2, "Test")
'Call result.Execute
For i = 1 To result.NumColumns Step 1
If result.IsValueNull(i) Then
MsgBox "Kein Rückgabewert"
Else
MsgBox result.GetValue(i)
End If
Next
If con.IsConnected Then
Call con.Disconnect
MsgBox "Disconnected"
End If
Versuch mit LCConnection
Dim lcConn As LCConnection
Dim lcFldLst As LCFieldList
Dim lcFldLstRet As LCFieldList
Dim lcti As LCField
Dim lcto As LCField
Set lcConn = New LCConnection("oledb")
Set lcFldLst = New LCFieldList
Set lcFldLstRet = New LCFieldList
lcConn.Server = "w2k3-gis\SQLExpress"
lcConn.Database = "XYZ"
lcConn.Password = "123"
lcConn.UserID = "zyx"
lcConn.Provider = "sqloledb"
Call lcConn.Connect()
MsgBox "Connected To Tisoware"
MsgBox lcConn.Execute("exec dbo.Test_GIS 2,'Test'",lcFldLst),,"Execute SQL-Statement"
While lcConn.Fetch(lcFldLst) > 0
MsgBox sGetString(lcFldLst.getField(1).Value),,"Field1" 'Hier kommt Test zurück, sollte aber Fehler kommen
Wend
Call lcConn.Disconnect()
MsgBox "Disconnected"
Und hier noch die SQL-Prozedur
ALTER PROCEDURE [dbo].[TEST_GIS]
-- Add the parameters for the stored procedure here
@ti1 int = 1,
@to1 varchar(254) = '' OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
-- Insert statements for procedure here
-- SELECT @ti1, @to1
SELECT @to1
if @ti1 = 1
begin
SELECT @to1 = 'OK'
end
else
begin
SELECT @to1 = 'Fehler'
end
return
END
Noch ein paar Infos: Ich arbeite mit Notes 8.5.3. Der SQL-Server ist ein MS SQL-Server 2005
Ich hoffe ihr könnt mir helfen.
Gruß Daniel