![]() |
Datenbank: Firebird • Version: 1.5.2 • Zugriff über: Delphi 7 Professional + Zeos-Lib.
Grösste Kundennummer per SELECT wählen
Hallo allerseits,
Gibt es eine Möglichkeit, per SELECT z.B. die größte Kunden-Nummer zu wählen. Ich probierte es wie folgt, aber leider klappt das nicht.
Delphi-Quellcode:
Ich habe irgendwo gelesen, dass es mit MAX funktionieren soll, aber leider. Wahrscheinlich kennt Firebird diese Funktion nicht.
T_KUNDEN.SQL.Text := 'SELECT * FROM KUNDEN WHERE KUNDENNR = ' +
IntToStr(MAX(T_KUNDENKUNDENNR)) + ' ORDER BY KUNDENNR'; Ich würde eine Möglichkeit suchen, die sowohl für Firebird, als auch für MSSQL funktioniert. Ich will aber nicht SELECT * verwenden, da es sich um mehrere Tausend Datensätze handeln kann. Wenn es nichts passendes gibt, müsste ich wahrscheinlich mit SELECT ??? irgendeinen Datensatz anwählen und dann mit KUNDEN.Last zum letzten Datensatz gelangen. mfg Herbert |
Re: Grösste Kundennummer per SELECT wählen
Besser so:
SQL-Code:
Grüße vom marabu
T_KUNDEN.SQL.Text := 'SELECT MAX(KundenNr) AS MaxNr FROM Kunden'
|
Re: Grösste Kundennummer per SELECT wählen
Hi!
Versuchs mal mit:
SQL-Code:
MAX() geht nur zusammen mit GROUP BY meine ich mich zu erinnern.
SELECT MAX(KUNDENNR) as 'Hoechste KundenNr' FROM KUNDEN GROUP BY KUNDENNR
mfg phlux :hi: |
Re: Grösste Kundennummer per SELECT wählen
Zitat:
Deine Abfrage würde alle Kundennummern zurückliefern, weil sich Max auf jede Gruppe bezieht und du nach Kundennummern gruppiert hast - welche mit Sicherheit unique sind. MfG Stevie |
Re: Grösste Kundennummer per SELECT wählen
Hallo nochmals,
jetzt dürfte er zwar MAX kennen, aber jetzt kommt folgende Fehlermeldung: Das Feld 'KUNDENNR' wurde nicht gefunden obwohl KUNDENNR auch der PrimärIndex in der Tabelle T_KUNDEN ist. Wie kann es so etwas geben? mfg Herbert |
Re: Grösste Kundennummer per SELECT wählen
Zitat:
@hsbc: cAsE SenSitiVe? Edit: Ach ja wenn die Tabelle T_KUNDEN heißt, dann heißts natürlich ... FROM T_KUNDEN |
Re: Grösste Kundennummer per SELECT wählen
Hallo,
hast Du einfach mal
SQL-Code:
Bei mir läuft das so ohne Probleme.
Select Max(KuNr) From DB
|
Re: Grösste Kundennummer per SELECT wählen
CaseSensitive habe ich beachtet,
T_Kunden ist auch klar, es ist momentan überhaupt ein sonderbares Verhalten, das ich noch nicht kenne: SELECT * FROM KUNDEN - funktioniert, liefert alle Felder einwandfrei zurück SELECT KUNDENNR FROM KUNDEN - Fehlermeldung: Das Feld (nächstes Feld) wurde nicht gefunden - Ich will ja nur die KundenNr SELECT MAX(KUNDENNR) AS MaxNr FROM KUNDEN - Fehlermeldung: Das Feld KUNDENNR wurde nicht gefunden. SELECT * FROM KUNDEN WHERE KUNDENNR = 12345 - funktioniert auch Im Feldeditor sind ALLE Felder eingetragen. Im TZQuery ist RequestLive auf TRUE gestellt. Was kann ich da noch versuchen - vor allem wundert mich SELECT KUNDENNR FROM KUNDEN mfg Herbert |
Re: Grösste Kundennummer per SELECT wählen
Zitat:
Dann ist klar, woher der Fehler kommt! In der Abfrage müssen dann auch alle Felder zurückgeliefert werden, die dort eingetragen sind. Zitat:
2. In den Fields des Datasets ist das nächste Feld eingetragen, wird aber von deiner Datenmenge nicht zurückgeliefert. 3. Kundennummer ist das Field des Datasets und wird nicht gefunden, weil es ja nicht von der Datenmenge geliefert wird (dort wird ja nur das "Feld" MaxNr geliefert. 4. Klar, wie bei 1... Also: Deine Fehler sind keine Datenbank- bzw SQL-Fehler, sondern Delphi-Fehler! ;-) Lösung: Nur die Felder in dem DataSet (bzw der davon abgeleiteten Kompo, also deiner TZQuery) eintragen, die auch tatsächlich zurückgeliefert werden. MfG Stevie |
Re: Grösste Kundennummer per SELECT wählen
Hallo nochmals,
ok - so funktioniert es, Stevie, obwohl es mir im Moment noch nicht ganz klar ist. Demzufolge brauche ich z.B. 2 Query's, wenn ich einmal wie oben beschrieben, die letzte Kundennummer abfrage und andererseits die anderen Kundendaten selbst ändere. Dementsprechend müsste auch folgende Abfrage funktionieren: SELECT KUNDENNR FROM KUNDEN ( wenn im Feldeditor nur KUNDENNR eingetragen ist ) Dies funktioniert aber auch nicht, kommt ebenfalls die Fehlermeldung: KUNDENNR wurde nicht gefunden. Oder habe ich da noch etwas falsch verstanden. Aber egal, die Abfrage nach der letzten Kundennummer funktioniert jetzt mal. Jedenfalls recht herzlichen Dank für die Hilfe. mfg Herbert |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz