Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Abfrage mittels SQL - Ergebnis? (https://www.delphipraxis.net/210414-abfrage-mittels-sql-ergebnis.html)

hoika 21. Apr 2022 16:00

AW: Abfrage mittels SQL - Ergebnis?
 
Hallo,
liefert eben keinen Record

Doch, genau einen Rekord mit einem Feld.

*krümelkacker" aus ;)

NoGAD 21. Apr 2022 16:14

AW: Abfrage mittels SQL - Ergebnis?
 
Die Lösung von Uwe hat mir sehrr geholfen.

Dadurch kann ich nun auf den kompletten Record zugreifen.

Ich wusste einfach nicht, dass nach einem Select MAX(... der Record nicht alle Spalten ermöglicht.

Bisher hatte ich immer mit ABSTable gearbeitet.

LG

Uwe Raabe 21. Apr 2022 17:07

AW: Abfrage mittels SQL - Ergebnis?
 
Zitat:

Zitat von NoGAD (Beitrag 1504887)
Bisher hatte ich immer mit ABSTable gearbeitet.

Und wie hast du es da gemacht?

mkinzler 21. Apr 2022 17:19

AW: Abfrage mittels SQL - Ergebnis?
 
SQL-Code:
select top 1,1 * from dbKunden order by KUNDENNUMMER desc;

NoGAD 21. Apr 2022 21:29

AW: Abfrage mittels SQL - Ergebnis?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1504890)
Zitat:

Zitat von NoGAD (Beitrag 1504887)
Bisher hatte ich immer mit ABSTable gearbeitet.

Und wie hast du es da gemacht?

Mittels ABSTable1.Locate('KUNDEN', 'SUCHSTRING', []);

Dann hatte ich den Datensatz, den ich benötigte.

LG

NoGAD 21. Apr 2022 21:30

AW: Abfrage mittels SQL - Ergebnis?
 
Zitat:

Zitat von mkinzler (Beitrag 1504891)
SQL-Code:
select top 1,1 * from dbKunden order by KUNDENNUMMER desc;

Hallo Markus, kannst Du mir das bitte erklären, was diese Abfrage macht?

LG :-)

Uwe Raabe 21. Apr 2022 21:54

AW: Abfrage mittels SQL - Ergebnis?
 
Zitat:

Zitat von NoGAD (Beitrag 1504920)
Mittels ABSTable1.Locate('KUNDEN', 'SUCHSTRING', []);

Dann hatte ich den Datensatz, den ich benötigte.

Ich vermute mal, KUNDEN steht für KUNDENNUMMER und SUCHSTRING für die höchste Kundennummer? Dann musst du aber diese ja auch irgendwie ermitteln, oder?

Aber egal. Wenn die Query
SQL-Code:
SELECT * FROM dbKUNDEN
ist, dann funktioniert das Locate dort auch so. Bei
SQL-Code:
SELECT * FROM dbKUNDEN ORDER BY KUNDENNUMMER
kommen die Daten sogar sortiert an. Dann wäre ein
Delphi-Quellcode:
ABSQuery1.Last
ausreichend um den Datensatz mit der höchsten Kundennummer auszuwählen.

NoGAD 21. Apr 2022 22:54

AW: Abfrage mittels SQL - Ergebnis?
 
Hallo uwe,

danke für Deine Erklärung.

Mir ist ein Fehler bei meiner Antwort unterlaufen.

Bisher hatte ich das natürlich nicht mittels Locate gemacht, sondern ich bin alle Datensätze durchgegangen und habe mit dem jeweils nächsten abgeglichen und dann immer die höhere Kundennummer als neue Referenz benutzt:

Delphi-Quellcode:
var
 Dummy_MaxStr : String;
 Dummy_MaxInt: Integer;
begin

 Dummy_MaxInt := 0;
 ABSTable1.Open;
 ABSTable1.First;
 repeat
  Dummy_MaxStr := ABSTable.FieldByName('KUNDENNUMMER').AsString;
  if isinteger(Dummy_MaxStr) then
   if Dummy_MaxStr.ToInteger > Dummy_MaxInt then
    Dummy_MaxInt := Dummy_MaxStr.ToInteger;
  ABSTable.Next;
 until ABSTable1.EOF;

 ShowMessage(Dummy_MaxInt.ToString);


Das hatte ich bisher in etwa so gemacht, hatte aber bei einer großen Datenbank lange gedauert.

LG :-)

mkinzler 22. Apr 2022 06:41

AW: Abfrage mittels SQL - Ergebnis?
 
Zitat:

Zitat von NoGAD (Beitrag 1504921)
Zitat:

Zitat von mkinzler (Beitrag 1504891)
SQL-Code:
select top 1,1 * from dbKunden order by KUNDENNUMMER desc;

Hallo Markus, kannst Du mir das bitte erklären, was diese Abfrage macht?

LG :-)

Es sortiert die Kundennummern von groß nach klein und liefert dann den 1. Datensatz (höchster Wert)

Frickler 22. Apr 2022 08:16

AW: Abfrage mittels SQL - Ergebnis?
 
Da wäre es ja wesentlich einfacher (und vermutlich auch schneller) gewesen, einen Index auf die Kundennummer zu setzen und dann zum letzten Datensatz zu springen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr.
Seite 2 von 3     12 3      

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