Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi IsEmpty funktioniert nicht bei SELECT MAX ... (https://www.delphipraxis.net/139421-isempty-funktioniert-nicht-bei-select-max.html)

divBy0 28. Aug 2009 14:37

Datenbank: SQLite • Version: 3 • Zugriff über: Zeos

IsEmpty funktioniert nicht bei SELECT MAX ...
 
Hallo,

ich habe ein kleines Problem.

Eine einfache Abfrage 'SELECT MAX(Id) FROM barcodes' soll die höchste ID zurückliefern, dass funktioniert wenn mind. ein Eintrag in der Datentabelle besteht.

Mein Problem ist jetzt, dass es vorkommen kann, dass kein Eintrag in der Datentabelle steht und dann habe ich ein Problem, da ich beim Übernehmen in eine Integervariable eine Fehlermeldung "Ist kein gültiger Integerwert" bekomme.

Wie kann ich denn prüfen, ob ein Wert zurückkam.

Mit ZQuery.IsEmpty und ZQuery.RecNo funktioniert das leider nicht.

Bernhard Geyer 28. Aug 2009 14:47

Re: IsEmpty funktioniert nicht bei SELECT MAX ...
 
Frag den Spaltenwert doch als String ab und wende selbst StrToIntDef(Wert, 0) an.

divBy0 28. Aug 2009 15:00

Re: IsEmpty funktioniert nicht bei SELECT MAX ...
 
So habe ich es jetzt gelöst, aber das gefällt mir nicht so wirklich.

Ich dachte da gibts was eleganteres. :-D

hoika 28. Aug 2009 15:17

Re: IsEmpty funktioniert nicht bei SELECT MAX ...
 
Hallo,

das ist aber wohl SQL-Standard Max(NULL) = NULL
(0 darf er nicht, es könnte ja ein Datensatz mit genau 0 drinstehen).

Select Max() liefert NULL, wenn keine Datensätze in der Tabelle sind.

Fields[0].IsNull sollte funktionieren.


Heiko

divBy0 28. Aug 2009 15:23

Re: IsEmpty funktioniert nicht bei SELECT MAX ...
 
Danke! Das ist es. :thumb:

HeikoAdams 28. Aug 2009 15:26

Re: IsEmpty funktioniert nicht bei SELECT MAX ...
 
Zitat:

Zitat von hoika
Fields[0].IsNull sollte funktionieren.

Vielleicht nicht ganz so elegant, aber
Delphi-Quellcode:
VarIsNull(FieldByName('xy').AsVariant)
sollte genau so gut funktionieren.

shmia 28. Aug 2009 17:00

Re: IsEmpty funktioniert nicht bei SELECT MAX ...
 
Zitat:

Zitat von divBy0
...aber das gefällt mir nicht so wirklich. Ich dachte da gibts was eleganteres. :-D

Zuerst prüfen, ob Feld "Anzahl" <> 0 und falls ja, Feld "MaxID" auslesen.
SQL-Code:
SELECT MAX(Id) AS MaxID, Count(*) AS Anzahl FROM barcodes


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:29 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