Seite 1 von 1

Feldnamen

Verfasst: Di, 19. Okt 2021 23:22
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

Re: Feldnamen

Verfasst: Mi, 20. Okt 2021 8:59
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)

Re: Feldnamen

Verfasst: Mi, 20. Okt 2021 19:06
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

Re: Feldnamen

Verfasst: Mi, 20. Okt 2021 21:42
von Werner_Bayern
SQL-Syntax wäre:

Code: Alles auswählen

SELECT * FROM adressen WHERE adressen.land = 'Malta' INTO OBJECTS aData

Re: Feldnamen

Verfasst: Mi, 20. Okt 2021 22:15
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

Re: Feldnamen

Verfasst: Do, 21. Okt 2021 17:47
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

Re: Feldnamen

Verfasst: Do, 21. Okt 2021 19:40
von Jan
Hallo Frank,

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

Jan

Re: Feldnamen

Verfasst: Di, 02. Nov 2021 10:30
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