Autor Thema: INSERT in SQL-DB  (Gelesen 3584 mal)

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
INSERT in SQL-DB
« am: 03.04.09 - 09:28:04 »
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

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.
Lotus Notes 8.0.2

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: INSERT in SQL-DB
« Antwort #1 am: 03.04.09 - 16:49:54 »
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
String und Integerwerte etc. werden korrekt in die Table aufgenommen.
Wie macht man das mit einer NotesDateTime to DateTime???


Gruß Rico.
Lotus Notes 8.0.2

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: INSERT in SQL-DB
« Antwort #2 am: 03.04.09 - 20:37:33 »
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

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: INSERT in SQL-DB
« Antwort #3 am: 03.04.09 - 21:44:45 »
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)
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: INSERT in SQL-DB
« Antwort #4 am: 03.04.09 - 22:57:54 »
Zitat
qry.SQL = "INSERT INTO Task(StartDate) VALUES ('startDate')"
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 + ")"

Gut für SQL ist "Head First SQL".
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: INSERT in SQL-DB
« Antwort #5 am: 04.04.09 - 01:09:06 »
Von Vorgehen in der Arbeit mit relationalen DBs ist es immer ziemlich sinnvoll, dass du dir einen Client der Datenbank besorgst und dort losgelöst von Notes oder was-auch-immer erst einmal das SQL Statement an sich ausprobierst.

Ich mag Squirrel. Das ist ein ich glaub sogar irgendwie Eclipse basierter RDBMS, die man für praktisch alle RDBMS benutzen kann. Allerdings ist die UI an einigen STellen leicht ungewöhnlich und Auskennen mit JavaClassPath erleichtert den Einstieg.

Ansonsten haben die RDBMS auch eigene Clients und DB-Admins wissen in aller Regel, wie man die für die jeweilige Datenbank bekommt.

 
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: INSERT in SQL-DB
« Antwort #6 am: 04.04.09 - 01:24:49 »
Mich stört eines an den Threads von Rico (deswegen beteilige ich mich auch so gut wie gar nicht daran): Es wirft ein extrem schlechtes Licht auf seinen Arbeitgeber, da impliziert wird, dass mit Forumshilfe hier fehlendes Know-How der Firma kompensiert werden soll. Die Firma ist zudem auch noch im Profil von Nico hinterlegt. Oder Nico hat den Arbeitgeber beschwindelt und versucht dieses hier zu kompensieren. Oder er ist Lehrling und hat einen miesen Ausbilder.

Wie dem auch sei: Irgendetwas stimmt hier massiv nicht.

Bernhard

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: INSERT in SQL-DB
« Antwort #7 am: 06.04.09 - 10:57:44 »
Hi,

die Lösung:
qry.SQL = "INSERT INTO Task(StartDate) VALUES('" & startDate.LSLocalTime & "')"

Danke


PS:
Ich entwickle alles erstmal in einer Notes-Testumgebung. Auch habe ich eine SQL-TestDB.
Vorgabe des RDBMS ist SQL!
Sämtlicher Code wird natürlich überprüft und getestet, bevor hier irgendwas live geht!
@koehlerbv
Was soll ich dazu sagen?!?! ???
Weder habe ich irgendjemand "beschwindelt", noch versuche ich irgendetwas zu kompensieren! Bin auch kein Lehrling, habe keinen miesen Ausbilder etc... Ich versuche lediglich, mit Hilfe des Forums einige Antworten auf MEINE Fragen zu erhalten. Mein Arbeitgeber hat damit nichts zu tun, auch wenn dies vielleicht für einige den Anschein erweckt! Als Neueinsteiger in Notes versuche ich lediglich Wissen aufzubauen, um dieses dann erfolgreich anzuwenden (was mir immer besser/schneller gelingt). Ich versteh jetzt ehrlich gesagt die Aufregung nicht so ganz.

Naja, danke nochmals für die Hilfe/Geduld...
Lotus Notes 8.0.2

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz