Seite 1 von 1

Marko Abfrage auf eine PostGre SQL DB

Verfasst: Di 7. Jun 2016, 17:21
von Kenji
Hallo zusammen,

ich habe mal wieder mit Schwierigkeiten in einem meiner Makros zu kämpfen...

Die Abfrage selbst zielt auf eine PostGreSQL DB, die per ODBC Verbindung angebunden ist. Nun lese ich aus einer bestimmten Tabelle in der DB Namen aus, die in ein Dropdownmenü ausgegeben werden.
Die Namen können z.B. D--000XXX0007 oder AR-000XXX0008 heißen.

Den ausgewählten Namen lasse ich per getSelectedItem Befehl in eine Variable speichern. Mit Hilfe dieser Variable soll nun eine zweite SQL Abfrage funktionieren, die mir aber Probleme bereitet.
"SELECT ""data_1"",""data_2"",""data_3"" FROM ""daten"" WHERE ""data_4""=" & gewname(i) & ""

Der im Dropdownmenü gewählte Name wird vorher in die Variable gewname gespeichert.

Nun lasse ich die Abfrage laufen und er gibt mir einen Syntaxfehler aus. Wenn zwischen dem ersten Buchstaben und den ersten Zahlen -- stehen bricht er mit der Meldung ab, dass die Spalte D (um das Beispiel von oben zu nehmen) nicht existiert. Sobald nur ein - zwischen den ersten Buchstaben und ersten Zahlen steht bricht er mit der Meldung ab "Syntaxfehler bei xxx0008".

Ich nehme an, dass der Name nicht komplett "genommen" wird in der Abfrage, sondern immer nur Bruchteile. Wie muss ich die Variable nun "einpacken", damit er den kompletten Begriff nutzt?

Viele Grüße

Kenji

Re: Marko Abfrage auf eine PostGre SQL DB

Verfasst: Di 7. Jun 2016, 19:43
von gogo
Das mit den Abfrage-Bruchteilen könnte sein - zumindest könnten die 2 Bindestriche schuld daran sein, dass Dein Code geteilt wird. Denn (zumindest bei MySQL) sind 2 Bindestriche das Zeichen für einen Kommentar im SQL-Code. Evtl musst Du die Zeichen escapen. Normalerweise macht man das mit einem \ vor dem -

Re: Marko Abfrage auf eine PostGre SQL DB

Verfasst: Mi 8. Jun 2016, 11:29
von gogo
... ausserdem vergleichst Du hier einen Text - der muss in Single-Quotes eingeschlossen sein, sonst wird angenommen dass es sich um Felder, Zahlen, Funktionen oder Variablen handelt:

Code: Alles auswählen

"SELECT ""data_1"",""data_2"",""data_3"" FROM ""daten"" WHERE ""data_4""= '" & gewname(i) & "'"
ergibt:
SELECT "data_1","data_2","data_3" FROM "daten" WHERE "data_4"= 'D--000XXX0007'

"SELECT ""data_1"",""data_2"",""data_3"" FROM ""daten"" WHERE ""data_4""= " & gewname(i) & ""
ergibt:
SELECT "data_1","data_2","data_3" FROM "daten" WHERE "data_4"= D--000XXX0007
oder:
SELECT "data_1","data_2","data_3" FROM "daten" WHERE "data_4"= AR-000XXX0008
... woraus sich Deine 2 Fehler erklären lassen:
AR-000XXX0008 bedeutet : Ergebnis von Spalte AR minus Spalte 000XXX0008 ... es gibt keine Spalte AR!
bzw:
D--000XXX0007 bedeutet : Ergebnis von Spalte D minus minus Spalte 000XXX0007 ... Syntaxfehler!

Re: Marko Abfrage auf eine PostGre SQL DB

Verfasst: Di 14. Jun 2016, 11:44
von Kenji
Hallo,

vielen Dank für die Info. Hat wunderbar funktioniert...

Grüße

Kenji