Autor Beitrag
pheeos
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 15.11.04 22:04 
Hallo Leute!
Ich hoffe ihr helft auch einem Delphi Newbie ;-)

Ich greife per ODBC auf eine PervasiveSQL DB zu, das klappt soweit.
Nun muss ich herausfinden, welches der maximal Wert einer bestimmten spalte ist,also
ausblenden Delphi-Quelltext
1:
2:
3:
query := 'SELECT max("001-Kunden_Nr") FROM "001-Kunden"';
tquery.add(query);
tquery.active;


Wie bekomm ich nun das Ergebnis des Querys ausgelesen?
Hatte mal gefunden
ausblenden Delphi-Quelltext
1:
result := tquery.FieldByName('001-Kunden_Nr').AsString;					


Das führt bei mir zu einem Fehler..

Hoffe ihr habt nen heissen Tip für mich.

Grüsse,

Michael :)

Moderiert von user profile iconUdontknow: Delphi-Tags hinzugefügt.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 16.11.04 12:15 
Hast du dran gedacht, deine Variable "result" (übrigens: eine schlechte Wahl als Bezeichner) auch als String zu definieren?
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Di 16.11.04 12:24 
Wenn Du in SQL eine Agregat-Funktion verwendest (z.B. MAX) wird der ursprüngliche Feldname nicht mehr verwendet. Jede Datenbank nennt das Feld in diesem Fall anders. Die bessere Alternative ist, das Feld in SQL manuell selbst zu benennen. Dein Code sieht danach in etwa so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
query := 'SELECT max("001-Kunden_Nr") as Maxwert FROM "001-Kunden"'
tquery.add(query); 
tquery.active; 
result := tquery.FieldByName('maxwert').AsString;

Das dürfte eigentlich auch bei Pervasive so funktionieren ;-)
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 16.11.04 13:02 
Aaaaauuuuaaaa!!!
Das habe ich doch glatt übersehen. :oops:
Verdammt, ist das peinlich.
P.S.: Falls das mit dem "as Maxwert" nicht gehen sollte (sollte aber), dann müsste es so funktionieren:
ausblenden Delphi-Quelltext
1:
result := tquery.Fields[0].AsString;					
pheeos Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 16.11.04 16:28 
UGrohne hat folgendes geschrieben:
Wenn Du in SQL eine Agregat-Funktion verwendest (z.B. MAX) wird der ursprüngliche Feldname nicht mehr verwendet. Jede Datenbank nennt das Feld in diesem Fall anders. Die bessere Alternative ist, das Feld in SQL manuell selbst zu benennen. Dein Code sieht danach in etwa so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
query := 'SELECT max("001-Kunden_Nr") as Maxwert FROM "001-Kunden"'
tquery.add(query); 
tquery.active; 
result := tquery.FieldByName('maxwert').AsString;

Das dürfte eigentlich auch bei Pervasive so funktionieren ;-)



Jo das wars!!
Vielen Dank Leuts! :)