Feldnamen

Alles zum SQL-Dialekt

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Feldnamen

Beitrag von Jan »

Moin,

eine Frage, die nur indirekt etwas mit SQL zu tun hat.

Wenn ich diese Zeile einbaue und kompiliere

Code: Alles auswählen

SELECT * FROM adressen WHERE land = 'Malta' INTO OBJECTS aData
dann bekomme ich diese Compilerwarnung
Ambiguous variable reference land
Usage of dynamic scoped variabl land
Das kommt, weil ich alle Warnungen auf nicht deklarierte Variablen etc. einschalte. Das ist natürlich hier enorm lästig. Mir stellt sich also die Frage wie ich das Feld so im SELECT einbaue, das der Compiler nicht meckert.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Feldnamen

Beitrag von Marcus Herz »

Schau dir mal die PPO Datei an, dann siehst du den Code und etvl. was nicht deklariert ist
Du kannst auch vorher

Code: Alles auswählen

#pragma info(DYN)
select ......
#pragma info(NODYN)
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Feldnamen

Beitrag von Jan »

Marcus,

es ist ja klar was da moniert wird. Der Feldname wird nicht als Feldname erkannt. Das ist ja auch normal beim kompilieren. Sonst umgehe ich das immer durch die Angabe des Alias, hier wäre das also bei dbf-Zugriffen ein adressen->land.

Ich hab das jetzt gerade mal auch in der SQL-Anweisung versucht. Und unfassbar - das klappt! Das sieht dann also jetzt so aus:

Code: Alles auswählen

SELECT * FROM adressen WHERE adressen->land = 'Malta' INTO OBJECTS aData
Ich bin jetzt echt platt. Das hätte ich nie erwartet. Da hat Alaska einen guten Job gemacht.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Feldnamen

Beitrag von Werner_Bayern »

SQL-Syntax wäre:

Code: Alles auswählen

SELECT * FROM adressen WHERE adressen.land = 'Malta' INTO OBJECTS aData
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Feldnamen

Beitrag von Jan »

Hallo Werner,

danke für den Hinweis.

Nur - das mag Xbase++ aber leider nicht. Compilerfehler "Cannot match to any predicted input, near <.> in relational expression of logical NOT expression". Interessant. Ich hatte nach meinem Versuch ja gedacht das Xbase++ den Alias-Operator intern in das passende SQL-Äquivalent umwandelt. Selbst wenn der das macht - im Quellcode mag der das jedenfalls nicht.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Frank Grossheinrich
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 142
Registriert: Fr, 31. Mär 2017 15:06
Wohnort: Eschborn
Hat sich bedankt: 5 Mal
Danksagung erhalten: 81 Mal
Kontaktdaten:

Re: Feldnamen

Beitrag von Frank Grossheinrich »

Jan hat geschrieben: Mi, 20. Okt 2021 19:06 Ich hab das jetzt gerade mal auch in der SQL-Anweisung versucht. Und unfassbar - das klappt! Das sieht dann also jetzt so aus:

Code: Alles auswählen

SELECT * FROM adressen WHERE adressen->land = 'Malta' INTO OBJECTS aData
Ich bin jetzt echt platt. Das hätte ich nie erwartet. Da hat Alaska einen guten Job gemacht.
:)
Na, das ist ja wirklich ein Ding. Und ist auch mal schön zu lesen. Danke.

Das gibt es seit dem letzten Release:
"Ensure that alias names in filter expressions are properly processed by the PostgreSQL ISAM emulation. (pgdbe.dll) (W21HHY) (PDR7425)"
Der PDR ist noch etwas aussagekräftiger.

Grüße, Frank
We love Xbase++, and you?
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Feldnamen

Beitrag von Jan »

Hallo Frank,

ich rede hier aber nicht von PostgreSQL ISAM. Sondern USqlStatement direkt auf eine sqlite.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Frank Grossheinrich
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 142
Registriert: Fr, 31. Mär 2017 15:06
Wohnort: Eschborn
Hat sich bedankt: 5 Mal
Danksagung erhalten: 81 Mal
Kontaktdaten:

Re: Feldnamen

Beitrag von Frank Grossheinrich »

Hi Jan,
na, noch besser ... denn dort ist es schon länger (eigentlich seit Anfang an) drinne.
Wir hatten aber in der PGDBE noch einen Fehler, den wir nun behoben haben.
War trotzdem nett zu lesen.
Grüße, Frank
We love Xbase++, and you?
Antworten