Hallo,
ich komme mit einer Tabellenanfügeabfrage nicht weiter und brauche Hilfe!
Habe folgendenden SQL text erstellt der auch unter SQL Ausführen funktioniert:
INSERT INTO "BestellungGesTbl" ("Hersteller","Artikelnummer","Bezeichnung","Menge","RepNr", "Ersatzteil_ID","Status" ) SELECT "Ersatzteil_Tbl"."Hersteller", "Ersatzteil_Tbl"."Artikelnummer", "Ersatzteil_Tbl"."Bezeichnung", "ReptaraturteileNeu_Tbl"."Menge", "ReptaraturteileNeu_Tbl"."RepNr", "Ersatzteil_Tbl"."Ersatzteil_ID", "ReptaraturteileNeu_Tbl"."Status" FROM "ReptaraturteileNeu_Tbl", "Ersatzteil_Tbl" WHERE "ReptaraturteileNeu_Tbl"."RTID" = "Ersatzteil_Tbl"."Ersatzteil_ID" AND "Ersatzteil_Tbl"."Hersteller" = 0 AND "ReptaraturteileNeu_Tbl"."Status" = 1
Daraus für ein Makro folgendes geschrieben:
"INSERT INTO ""BestellungGesTbl"" (""Hersteller"",""Artikelnummer"",""Bezeichnung"",""Menge"",""RepNr"", ""Ersatzteil_ID"",""Status"" ) (SELECT ""Ersatzteil_Tbl"",""Hersteller"", ""Ersatzteil_Tbl"",""Artikelnummer"", ""Ersatzteil_Tbl"",""Bezeichnung"", ""ReptaraturteileNeu_Tbl"",""Menge"", ""ReptaraturteileNeu_Tbl"",""RepNr"",""Ersatzteil_Tbl"",""Ersatzteil_ID"", ""ReptaraturteileNeu_Tbl"",""Status"" FROM ""ReptaraturteileNeu_Tbl"",""Ersatzteil_Tbl"" WHERE ""ReptaraturteileNeu_Tbl"",""RTID"" = ""Ersatzteil_Tbl"",""Ersatzteil_ID"" AND ""Ersatzteil_Tbl"",""Hersteller"" = 0 AND ""ReptaraturteileNeu_Tbl"",""Status"" = 1)"
Nun reichen meine SQL kenntnisse beiweitem nicht aus um das zukontrollieren bzw zu verbessern.
Dann habe ich hier im Forum folgendes gefunden und meinen SQL Text eingefügt:
Sub NeueBestellung
Dim oStatement As Object, oDatenbankKontext As Object, oDatenquelle As Object
Dim oVerbindung As Object
Dim sSQL As String
oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
oDatenquelle = oDatenbankKontext.getByName( "Lokdatenbank" )
oVerbindung = oDatenquelle.getConnection( "" , "" )
oStatement = oVerbindung.createStatement()
sSQL = "INSERT INTO ""BestellungGesTbl"" (""Hersteller"",""Artikelnummer"",""Bezeichnung"",""Menge"",""RepNr"", ""Ersatzteil_ID"",""Status"" ) (SELECT ""Ersatzteil_Tbl"",""Hersteller"", ""Ersatzteil_Tbl"",""Artikelnummer"", ""Ersatzteil_Tbl"",""Bezeichnung"", ""ReptaraturteileNeu_Tbl"",""Menge"", ""ReptaraturteileNeu_Tbl"",""RepNr"",""Ersatzteil_Tbl"",""Ersatzteil_ID"", ""ReptaraturteileNeu_Tbl"",""Status"" FROM ""ReptaraturteileNeu_Tbl"",""Ersatzteil_Tbl"" WHERE ""ReptaraturteileNeu_Tbl"",""RTID"" = ""Ersatzteil_Tbl"",""Ersatzteil_ID"" AND ""Ersatzteil_Tbl"",""Hersteller"" = 0 AND ""ReptaraturteileNeu_Tbl"",""Status"" = 1)"
oStatement.execute(sSQL)
oVerbindung.close()
oStatement.close()
End Sub
es ergibt die Fehlermeldung:
.......Missing ) in Statement.......
Ich möchte Euch um Hilfe Bitten
Viele Grüße Volker
Tabellenanfügeabfrage als Makro mit SQL
Moderator: Moderatoren
Re: Tabellenanfügeabfrage als Makro mit SQL
Hallo Volker,
Dein Code ist nicht gleich. In der SELECT-Anweisung hast Du Tabellennamen und Feldnamen mit einem Komma voneinander getrennt aufgeführt. Dies ist bei Deinem direkten Code nicht der Fall.
Im Makro macht das so den Eindruck, als ob Du 7 Felder in der Tabelle "BestellungGesTbl" mit dem Inhalt von 14 Feldern füllen möchtest.
2. Haken könnte sein, dass Du Zeilenumbrücke in deinem Code hast. Ich umgehe das, indem ishc
sSql = "..."
sSql = sSql + "..."
schreibe. So etwas geht auch, indem direkt vor dem Umbruch ein Unterstrich eingefügt wird. Dann kannst Du einfach mit der Variablendefinition fortfahren.
Gruß
Robert
Dein Code ist nicht gleich. In der SELECT-Anweisung hast Du Tabellennamen und Feldnamen mit einem Komma voneinander getrennt aufgeführt. Dies ist bei Deinem direkten Code nicht der Fall.
Im Makro macht das so den Eindruck, als ob Du 7 Felder in der Tabelle "BestellungGesTbl" mit dem Inhalt von 14 Feldern füllen möchtest.
2. Haken könnte sein, dass Du Zeilenumbrücke in deinem Code hast. Ich umgehe das, indem ishc
sSql = "..."
sSql = sSql + "..."
schreibe. So etwas geht auch, indem direkt vor dem Umbruch ein Unterstrich eingefügt wird. Dann kannst Du einfach mit der Variablendefinition fortfahren.
Gruß
Robert
Re: Tabellenanfügeabfrage als Makro mit SQL
Hallo Robert, vielen Dank für die Hilfe,
im direkten Code ist als Trenner zwischen Tabellebezeichnung und Spalte ein Punkt gesetz ,das funktioniert.
Im Makro nicht. daher habe ich ein Komma gesetzt, wahrscheinlich fasch?
ich möchte 7 Felder in der Tbl" BestellungGesTbl" füllen, eigentlich mit Werten aus einer Abfrage. das sah dann so aus:
INSERT INTO "BestellungGesTbl" ("Hersteller","Artikelnummer","Bezeichnung","Menge","RepNr", "Ersatzteil_ID","Status" ) SELECT "Hersteller", "Artikelnummer", "Bezeichnung","Menge","RepNr", "Ersatzteil_ID","Status" FROM "BestellLGB_Abfr"
funktionierte natürlich nicht, weil ich erst lernen mußte das SQL nicht auf eine Abrage zugreift.
Danach die Abfrage In SQL erstellt
SELECT "Ersatzteil_Tbl"."Hersteller", "Ersatzteil_Tbl"."Artikelnummer", "Ersatzteil_Tbl"."Bezeichnung", "ReptaraturteileNeu_Tbl"."Menge", "ReptaraturteileNeu_Tbl"."RepNr", "Ersatzteil_Tbl"."Ersatzteil_ID", "ReptaraturteileNeu_Tbl"."Status" FROM "ReptaraturteileNeu_Tbl", "Ersatzteil_Tbl" WHERE "ReptaraturteileNeu_Tbl"."RTID" = "Ersatzteil_Tbl"."Ersatzteil_ID" AND "Ersatzteil_Tbl"."Hersteller" = 0 AND "ReptaraturteileNeu_Tbl"."Status" = 1
Diese habe ich dann um den Bereich INSERT ergänzt:
INSERT INTO "BestellungGesTbl" ("Hersteller","Artikelnummer","Bezeichnung","Menge","RepNr", "Ersatzteil_ID","Status" ) SELECT "Ersatzteil_Tbl"."Hersteller", "Ersatzteil_Tbl"."Artikelnummer", "Ersatzteil_Tbl"."Bezeichnung", "ReptaraturteileNeu_Tbl"."Menge", "ReptaraturteileNeu_Tbl"."RepNr", "Ersatzteil_Tbl"."Ersatzteil_ID", "ReptaraturteileNeu_Tbl"."Status" FROM "ReptaraturteileNeu_Tbl", "Ersatzteil_Tbl" WHERE "ReptaraturteileNeu_Tbl"."RTID" = "Ersatzteil_Tbl"."Ersatzteil_ID" AND "Ersatzteil_Tbl"."Hersteller" = 0 AND "ReptaraturteileNeu_Tbl"."Status" = 1
dieser SQL Text funktioniert unter SQL ausführen.
Unter punkt 2 schreibst Du
.....Haken könnte sein, dass Du Zeilenumbrücke in deinem Code hast..... bewußt habe ich keine eingefügt, zumindes erkenne ich kein.
Ich stosse da an meine Grenzen was SQL betrifft, sorry
beste Grüße Volker
im direkten Code ist als Trenner zwischen Tabellebezeichnung und Spalte ein Punkt gesetz ,das funktioniert.
Im Makro nicht. daher habe ich ein Komma gesetzt, wahrscheinlich fasch?
ich möchte 7 Felder in der Tbl" BestellungGesTbl" füllen, eigentlich mit Werten aus einer Abfrage. das sah dann so aus:
INSERT INTO "BestellungGesTbl" ("Hersteller","Artikelnummer","Bezeichnung","Menge","RepNr", "Ersatzteil_ID","Status" ) SELECT "Hersteller", "Artikelnummer", "Bezeichnung","Menge","RepNr", "Ersatzteil_ID","Status" FROM "BestellLGB_Abfr"
funktionierte natürlich nicht, weil ich erst lernen mußte das SQL nicht auf eine Abrage zugreift.
Danach die Abfrage In SQL erstellt
SELECT "Ersatzteil_Tbl"."Hersteller", "Ersatzteil_Tbl"."Artikelnummer", "Ersatzteil_Tbl"."Bezeichnung", "ReptaraturteileNeu_Tbl"."Menge", "ReptaraturteileNeu_Tbl"."RepNr", "Ersatzteil_Tbl"."Ersatzteil_ID", "ReptaraturteileNeu_Tbl"."Status" FROM "ReptaraturteileNeu_Tbl", "Ersatzteil_Tbl" WHERE "ReptaraturteileNeu_Tbl"."RTID" = "Ersatzteil_Tbl"."Ersatzteil_ID" AND "Ersatzteil_Tbl"."Hersteller" = 0 AND "ReptaraturteileNeu_Tbl"."Status" = 1
Diese habe ich dann um den Bereich INSERT ergänzt:
INSERT INTO "BestellungGesTbl" ("Hersteller","Artikelnummer","Bezeichnung","Menge","RepNr", "Ersatzteil_ID","Status" ) SELECT "Ersatzteil_Tbl"."Hersteller", "Ersatzteil_Tbl"."Artikelnummer", "Ersatzteil_Tbl"."Bezeichnung", "ReptaraturteileNeu_Tbl"."Menge", "ReptaraturteileNeu_Tbl"."RepNr", "Ersatzteil_Tbl"."Ersatzteil_ID", "ReptaraturteileNeu_Tbl"."Status" FROM "ReptaraturteileNeu_Tbl", "Ersatzteil_Tbl" WHERE "ReptaraturteileNeu_Tbl"."RTID" = "Ersatzteil_Tbl"."Ersatzteil_ID" AND "Ersatzteil_Tbl"."Hersteller" = 0 AND "ReptaraturteileNeu_Tbl"."Status" = 1
dieser SQL Text funktioniert unter SQL ausführen.
Unter punkt 2 schreibst Du
.....Haken könnte sein, dass Du Zeilenumbrücke in deinem Code hast..... bewußt habe ich keine eingefügt, zumindes erkenne ich kein.
Ich stosse da an meine Grenzen was SQL betrifft, sorry
beste Grüße Volker
Re: Tabellenanfügeabfrage als Makro mit SQL
Moin Volker,
versuche es mit mit dem folgenden Makro:
Hier habe ich mit einem Editor in deinem funktionierenden SQL Code alle einfachen Anführungszeichen durch doppelte ersetzt, und dann den gesamten String noch einmal in Anführungzeichen gesetzt.
Gruß R
versuche es mit mit dem folgenden Makro:
Code: Alles auswählen
Sub NeueBestellung
Dim oStatement As Object, oDatenbankKontext As Object, oDatenquelle As Object
Dim oVerbindung As Object
Dim sSQL As String
oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
oDatenquelle = oDatenbankKontext.getByName( "Lokdatenbank" )
oVerbindung = oDatenquelle.getConnection( "" , "" )
oStatement = oVerbindung.createStatement()
sSQL = "INSERT INTO ""BestellungGesTbl"" (""Hersteller"",""Artikelnummer"",""Bezeichnung"",""Menge"",""RepNr"", ""Ersatzteil_ID"",""Status"" ) SELECT ""Ersatzteil_Tbl"".""Hersteller"", ""Ersatzteil_Tbl"".""Artikelnummer"", ""Ersatzteil_Tbl"".""Bezeichnung"", ""ReptaraturteileNeu_Tbl"".""Menge"", ""ReptaraturteileNeu_Tbl"".""RepNr"", ""Ersatzteil_Tbl"".""Ersatzteil_ID"", ""ReptaraturteileNeu_Tbl"".""Status"" FROM ""ReptaraturteileNeu_Tbl"", ""Ersatzteil_Tbl"" WHERE ""ReptaraturteileNeu_Tbl"".""RTID"" = ""Ersatzteil_Tbl"".""Ersatzteil_ID"" AND ""Ersatzteil_Tbl"".""Hersteller"" = 0 AND ""ReptaraturteileNeu_Tbl"".""Status"" = 1"
oStatement.execute(sSQL)
msgbox "done"
End Sub
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO
Gelöst: Tabellenanfügeabfrage als Makro mit SQL
moin R,
super, vielen Dank für Deine Mühe, es funktioniert! Du hast mir sehr geholfen!!
Ich hatte dasauch mit den doppelten Anführungszeichen gelsen und probiert, funktionierte nicht.
Jetzt mit deinem Makro läufte es perfekt. Also muß auch der komplett Sting in Anführungszeichen gesetzt werden!
Wieder etwas gelernt.
Beste Grüße
Volker
super, vielen Dank für Deine Mühe, es funktioniert! Du hast mir sehr geholfen!!
Ich hatte dasauch mit den doppelten Anführungszeichen gelsen und probiert, funktionierte nicht.
Jetzt mit deinem Makro läufte es perfekt. Also muß auch der komplett Sting in Anführungszeichen gesetzt werden!
Wieder etwas gelernt.
Beste Grüße
Volker