Domino 9 und frühere Versionen > ND8: Entwicklung

INSERT in SQL-DB

(1/2) > >>

magic_halli:
Hi,

ich möchte diverse ItemValues in eine SQL 2005 DB schreiben. Ich weiß, das Thema wurde hier bereits einige male durchgekaut, aber ich habe zu meinem Problem/Fehler bis jetzt keine Lösung gefunden...

Hier erstmal mein relevanter Code:

--- Code: ---      Dim con As New ODBCConnection

            If (con.ConnectTo("DBBenutzerDSN","User","Pass")) Then
Print "Connected to DB."


Dim GlobalObjectId As String
Dim subject As String

GlobalObjectId = docTask.GetItemValue("GlobalObjectId")(0)
subject = docTask.GetItemValue("Subject")(0)

'##### INSERT #####
Dim qry As New ODBCQuery
Dim result As New ODBCResultSet

Set qry.Connection = con
qry.SQL = "SELECT * FROM Task"
Set result.Query = qry
result.Execute
If result.IsResultSetAvailable Then
result.AddRow
Call result.SetValue("GlobalObjectId",GlobalObjectId)
Call result.SetValue("Subject",subject)
result.UpdateRow
Else
Print "ResultSet is Unavailable. Exit!"
Exit Sub
End If

'##### END INSERT #####
Else
Print "Connection failed to DB!"
End If

Exit Sub
result.Close(DB_CLOSE)
con.Disconnect
Print "Connection closed. Finished!"

ErrorHandling:
result.Close(DB_CLOSE)
con.Disconnect
Print Error
Print con.GetExtendedErrorMessage
Print result.GetErrorMessage


--- Ende Code ---
Hier sind mal nur 2 Werte für mein Insert exemplarisch angegeben. Ich habe alle möglichen Werte überprüft, dass sie genau dem DB-Format entsprechen!

Wenn ich den Code ausführe , passiert folgendes:
1. Erfolgreiche Verbindung zur DB
2. Code läuft bis 'result.UpdateRow' durch
3. 'result.UpdateRow' geht ins ErrorHandling und zeigt folgendes an
"LS:DO- The operation failed for unspecified reasons."
4. Messagebox mit Ausschrift "NO ERROR" erscheint
5. Fertig

Ich kanns mir nicht erklären... Code sollte doch so korrekt sein?!
Könnt ihr mir helfen?
Welche Debugger Werte könnten noch Aufschluss über mögl. Fehler geben?


Danke und Gruß

Rico.

magic_halli:
So, nach ewigem sinnlosen nachjagen von Hinweisen etc. habe ich jetzt letztendlich erstmal auf das reine INSERT-Statement umgestellt! Schade, zumal mein Code auch von der Hilfe so angegeben wird... vielleicht finde ich ja nochwas.


Aber eine Frage habe ich noch zwecks INSERT und NotesDateTime --> DateTime (SQL):
Ich möchte einen NotesDateTime-Value in eine DateTime-Spalte in der SQL 2005-DB inserten.
Klappt natürlich nicht!  ;)
Nun hab ich schon mit diversen Konvertierungsfkt. hantiert - will nicht! Wie macht man das???

--- Code: ---Dim startDate As New NotesDateTime(docTask.GetItemValue("StartDateTime")(0))
...
qry.SQL = "INSERT INTO Task(StartDate) VALUES ('startDate')"
result.Execute

--- Ende Code ---
String und Integerwerte etc. werden korrekt in die Table aufgenommen.
Wie macht man das mit einer NotesDateTime to DateTime???


Gruß Rico.

TRO:
nur so ins Blaue (ohne wirklich richtig Ahnung von SQL zu haben), wie wärs mit

timeV = notesDateTime.LSLocalTime
oder
To get: gmtV = notesDateTime.LSGMTTime

beides liefert einen Variant vom Typ Date.


hth

Thomas

m3:
Au mann, Dir ist aber schon klar, dass unterschiedliche RDBMS auch unterschiedliche SQL-Syntax haben (können), oder? Allein Dein Unternehmen unterstützt mindestens Oracle, DB2 und MS SQL Server. Da kann sich auch mal das INSERT ein wenig unterscheiden.

Ebenso gibt es in der Dokumentation des RDBMS die genaue Syntax, wie das RDBMS das Datum für ein INSERT/UPDATE formatiert haben will. Bitte geh zu Eurem Datenbank-Guru, wenn Du dazu Fragen hast.

Wenn Du mal weißt, wie das RDBMS Deiner/Eurer Wahl das Datum erwartet, DANN kannst Du anfangen, das Notes-Datum entsprechend aufzubereiten.


Darf ich mal nach Deinem Vorwissen im Bereich der Programmierung fragen? Die Fragen in letzter Zeit lassen auf ein paar eklatante Lücken schließen. Ev, können wir Dir ein paar Trainings/Bücher empfehlen, welche Dir das Leben vereinfachen können.

Und ich hoffe, Du schreibst da nicht Code, der ungeprüft in Euer Produkt eingebunden wird.

(So und für die letzten beiden Zeilen werde ich jetzt sicher wieder als überheblicher Pimpf/Ösi beschimpft, obwohl ich sie nett meine)

flaite:

--- Zitat ---qry.SQL = "INSERT INTO Task(StartDate) VALUES ('startDate')"

--- Ende Zitat ---
Das zumindest kann nicht gehen.
Damit ist nämlich startDate ein String.

Wie wärs mit

--- Code: ---qry.SQL = "INSERT INTO Task(StartDate) VALUES (" + startDate + ")"

--- Ende Code ---

Gut für SQL ist "Head First SQL".

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln