AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Grösste Kundennummer per SELECT wählen
Thema durchsuchen
Ansicht
Themen-Optionen

Grösste Kundennummer per SELECT wählen

Ein Thema von hsbc · begonnen am 13. Mai 2005 · letzter Beitrag vom 13. Mai 2005
Antwort Antwort
hsbc

Registriert seit: 28. Jan 2004
Ort: Krems/Donau
404 Beiträge
 
Delphi 7 Professional
 
#1

Grösste Kundennummer per SELECT wählen

  Alt 13. Mai 2005, 12:19
Datenbank: Firebird • Version: 1.5.2 • Zugriff über: Delphi 7 Professional + Zeos-Lib.
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:
  T_KUNDEN.SQL.Text := 'SELECT * FROM KUNDEN WHERE KUNDENNR = ' +
    IntToStr(MAX(T_KUNDENKUNDENNR)) + ' ORDER BY KUNDENNR';
Ich habe irgendwo gelesen, dass es mit MAX funktionieren soll, aber leider. Wahrscheinlich kennt Firebird diese Funktion nicht.
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Grösste Kundennummer per SELECT wählen

  Alt 13. Mai 2005, 12:22
Besser so:
T_KUNDEN.SQL.Text := 'SELECT MAX(KundenNr) AS MaxNr FROM Kunden' Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#3

Re: Grösste Kundennummer per SELECT wählen

  Alt 13. Mai 2005, 12:25
Hi!

Versuchs mal mit:SELECT MAX(KUNDENNR) as 'Hoechste KundenNrFROM KUNDEN GROUP BY KUNDENNR MAX() geht nur zusammen mit GROUP BY meine ich mich zu erinnern.

mfg phlux
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.017 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

Re: Grösste Kundennummer per SELECT wählen

  Alt 13. Mai 2005, 12:32
Zitat von phlux:
MAX() geht nur zusammen mit GROUP BY meine ich mich zu erinnern.
Falsch erinnert.
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
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
hsbc

Registriert seit: 28. Jan 2004
Ort: Krems/Donau
404 Beiträge
 
Delphi 7 Professional
 
#5

Re: Grösste Kundennummer per SELECT wählen

  Alt 13. Mai 2005, 12:56
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
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#6

Re: Grösste Kundennummer per SELECT wählen

  Alt 13. Mai 2005, 13:17
Zitat von Stevie:
Zitat von phlux:
MAX() geht nur zusammen mit GROUP BY meine ich mich zu erinnern.
Falsch erinnert.
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
ach ja stimmt, hab einfach übersehn, dass das feld unique ist.

@hsbc: cAsE SenSitiVe?

Edit: Ach ja wenn die Tabelle T_KUNDEN heißt, dann heißts natürlich ... FROM T_KUNDEN
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#7

Re: Grösste Kundennummer per SELECT wählen

  Alt 13. Mai 2005, 13:19
Hallo,

hast Du einfach mal

Select Max(KuNr) From DB Bei mir läuft das so ohne Probleme.
Gruß

Albi
  Mit Zitat antworten Zitat
hsbc

Registriert seit: 28. Jan 2004
Ort: Krems/Donau
404 Beiträge
 
Delphi 7 Professional
 
#8

Re: Grösste Kundennummer per SELECT wählen

  Alt 13. Mai 2005, 13:26
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
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.017 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

Re: Grösste Kundennummer per SELECT wählen

  Alt 13. Mai 2005, 13:36
Zitat von hsbc:
Im Feldeditor sind ALLE Felder eingetragen.
Willst du damit sagen, dass du alle Felder der Tabelle eingetragen hast?
Dann ist klar, woher der Fehler kommt! In der Abfrage müssen dann auch alle Felder zurückgeliefert werden, die dort eingetragen sind.

Zitat:
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
1. Klar, alle Felder werden ja auch zurückgeliefert.
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
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
hsbc

Registriert seit: 28. Jan 2004
Ort: Krems/Donau
404 Beiträge
 
Delphi 7 Professional
 
#10

Re: Grösste Kundennummer per SELECT wählen

  Alt 13. Mai 2005, 14:14
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz