SQL INSERT über Makro

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

MHage
**
Beiträge: 49
Registriert: Fr, 17.12.2010 19:28

SQL INSERT über Makro

Beitrag von MHage »

Hallo,

ich versuche einen Datensatz in eine MySQL Tabelle zu schreiben. Ich suche jetzt schon zwei Tage und finde einfach den Fehler nicht.
Ich bekomme im Moment einen Syntx Fehler im Query. Ich poste mal den Teil. Vielleicht kann ja jemand helfen....

Code: Alles auswählen

Sub SchreibeDB
	
   ' Variable deklarieren
   Dim oDatenbankKontext as Object
   Dim oDatenquelle as Object
   Dim oVerbindung as Object
   Dim oStatement as Object
   Dim Sql As String
   ' Datenbank-Kontext holen
   oDatenbankKontext = createUnoService _
      ( "com.sun.star.sdb.DatabaseContext" )
   
   ' Datenquelle holen
   oDatenquelle = oDatenbankKontext._
   getByName( dbname )
			
			' ID - Mitglieds_Nr - Konto_Inhaber - Zahldatum - Verwendungszweck - Betrag
	  
   oVerbindung = oDatenquelle.getConnection( "", "" )		' Verbindung erstellen
   oStatement = oVerbindung.createStatement()				' Statement erzeugen
			' Datensatz erzeugen
		  	' in DB schreiben mit SQLle einfügen
			Sql = "INSERT INTO ""Beitragszahlungen"" (""Mitglieds_Nr"", ""Konto_Inhaber"", ""Zahldatum"", ""Verwendungszweck"", ""Betrag"")
			VALUES	('"+sSender_Mitglied_Nr+"', '"+sSender_Name+"', '"+sVerein_Datum+"', '"+sVerein_Verwendung1+"', '"+sSender_Betrag+"')"
			SQL_Anweisung.executeUpdate (Sql)
   oStatement.close()		' Verbindung und Statement schliessen
End Sub

Habe leider noch nicht viel Ahnung von der Materie...

Gruß
Matze
gogo
*****
Beiträge: 207
Registriert: Mi, 10.11.2010 13:11

Re: SQL INSERT über Makro

Beitrag von gogo »

Schau Dir mal den Editor an, im Besonderen die Farben nach dem 'VALUES'. Mit Copy-paste Deines Statements ist der String nämlich bei mir beim ersten Hochkomma zu Ende...

Schreib' mal die ganze SQL-Definition in eine Zeile!

Wenn's im Editor so aussieht:
Sql = "INSERT INTO ""Beitragszahlungen"" (""Mitglieds_Nr"", ""Konto_Inhaber"", ""Zahldatum"", ""Verwendungszweck"", ""Betrag"") VALUES ('"+sSender_Mitglied_Nr+"', '"+sSender_Name+"', '"+sVerein_Datum+"', '"+sVerein_Verwendung1+"', '"+sSender_Betrag+"')"

Sollte das Statement funktionieren.

Unter der Definition von SQL mal ein:

Code: Alles auswählen

msgbox Sql
einfügen, dann kannst Du Dir den String mal ansehen wenn er fertig ist.

g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
MHage
**
Beiträge: 49
Registriert: Fr, 17.12.2010 19:28

Re: SQL INSERT über Makro

Beitrag von MHage »

Hallo,

ich habe den Code-Fetzen mal bereinigt... sieht gleich viel besser aus :D

Aber irgendwo scheint noch ein Fehler zu sein. Ich stell ihn nochmal ein.

Code: Alles auswählen

Sub SchreibeDB
   
   ' Variable deklarieren
	Dim DatabaseContext As Object
 	Dim DataSource As Object
	Dim Connection As Object
	Dim Statement as Object
	Dim Sql As String
   
	DatabaseContext=CreateUnoService("com.sun.star.sdb.DatabaseContext")			' Datenbank-Kontext holen
	DataSource=DatabaseContext.getbyname("192.168.100.2/dbname")			' Datenquelle holen
	If not Datasource.ispasswordrequired then
	Connection=Datasource.getConnection("","")			' Verbindung erstellen
	else
	Connection=Datasource.getConnection("benutzername","passwort")
	End If
   
	Statement = Connection.createStatement()            		' Statement erzeugen
	' ID - Mitglieds_Nr - Konto_Inhaber - Zahldatum - Verwendungszweck - Betrag
	' Datensatz erzeugen, in DB schreiben mit SQL einfügen
	Sql = "INSERT INTO ""Beitragszahlungen"" (""Mitglieds_Nr"", ""Konto_Inhaber"", ""Zahldatum"", ""Verwendungszweck"", ""Betrag"") VALUES('"+sSender_Mitglied_Nr+"', '"+sSender_Name+"', '"+sVerein_Datum+"', '"+sVerein_Verwendung1+"', '"+sSender_Betrag+"')"
	SQL_Anweisung.executeUpdate (Sql)
	Statement.close()      ' Verbindung und Statement schliessen
End Sub
Die Fehlermeldung:

Bild

Gruß
Matze
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: SQL INSERT über Makro

Beitrag von Karolus »

Hallo
Ich würde mal den Namen der Datenbank überprüfen, könnte sein das die nicht '...dbname' heißt.

Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Antworten