AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADOQuery INSERT und Select
Thema durchsuchen
Ansicht
Themen-Optionen

ADOQuery INSERT und Select

Ein Thema von lemmond1976 · begonnen am 18. Jul 2003 · letzter Beitrag vom 24. Feb 2017
 
nahpets
(Gast)

n/a Beiträge
 
#10

AW: ADOQuery INSERT und Select

  Alt 24. Feb 2017, 13:15
Delphi-Quellcode:
//Abfrage des Autowerts
ADOQUERY.Close;
ADOQUERY.SQL.Clear;
ADOQUERY.SQL.Add('SELECT @@IDENTITY AS ID');
ADOQUERY.ExecSQL;
ADOQUERY.Open;
ADOQUERY.First;
ID:=ADOQUERY.FIELDBYNAME('ID').AsInteger;
Das lässt sich auch vereinfachen:
Delphi-Quellcode:
//Abfrage des Autowerts
ADOQUERY.Close;
ADOQUERY.SQL.Text := 'SELECT @@IDENTITY AS ID';
ADOQUERY.Open;
ID:=ADOQUERY.FIELDS[0].AsInteger;
ADOQUERY.Close;
Mit ExecSQL wird das Statement ausgeführt, wenn man auch keine Ergebnismenge erhält und mit Open wird es ein zweites Mal ausgeführt. Auf ExecSQL kann man hier also durchaus verzichten. Bei einem Datensatz als Ergebnis mag das laufzeittechnisch nicht von Belang sein, bei einer größeren Ergebnismenge aber durchaus.
Und fragt man auf diese Weise eine Sequenz ab, wird das Ergbebnis für den nächsten Wert immer doppelt so hoch vom vorherigen entfernt sein, wie die Schrittweite der Sequenz, sprich: Man überspringt einen Wert.
Nach dem Open ist man auf dem ersten Datensatz, man muss also nicht nochmal extra mit First auf den ersten Datensatz gehen.
Da wir nur eine Spalte in der Ergebnismenge haben, können wir die auch direkt abgreifen, statt sie erst per FieldByName zu suchen. Das "AS ID" könnte man sich daher sparen.
Und am Ende, wenn das Ergebnis abgeholt wurde, wird die Datenmenge wieder geschlossen. Sie muss nicht bis zur nächsten Benutzung offen bleiben.

Und damit lässt sich das Ganze wunderbar in 'ner Funktion kapseln.
  Mit Zitat antworten Zitat
 


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 11:28 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 by Thomas Breitkreuz