AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken ID nicht gefunden nach last_insert_rowid()
Thema durchsuchen
Ansicht
Themen-Optionen

ID nicht gefunden nach last_insert_rowid()

Ein Thema von EdAdvokat · begonnen am 13. Mai 2017 · letzter Beitrag vom 16. Mai 2017
Antwort Antwort
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: ID nicht gefunden nach last_insert_rowid()

  Alt 14. Mai 2017, 13:01
Himitsu's Vorschlag hat es gebracht:qMain.SQL.Text := 'SELECT ID FROM KONTAKTE ORDER BY ID DESC LIMIT 1'; So wird nach dem Einfügen (INSERT) eines neuen Datensatzes dieser mit exakter ID richtig angezeigt und gespeichert.
Die Variante qMain.SQL.Text := 'SELECT max(ID) as ID from KONTAKTE'; hat nicht geklappt.
Ich habe ein Verständnisproblem: Wir wollten doch die ID des letzten eingefügten DS bekommen. Warum führt da DESC zum Ziel, das doch absteigend sortiert? Was bewirkt LIMIT 1?
Habe zwischenzeitlich auf der SQLite3-Seite gestöbert: https://www.sqlite.org/c3ref/last_insert_rowid.html
Dort sind div. Funktionen aufgeführt die zumeist mit SQLITE3_... beginnen, doch deren Verwendung führt dazu dass Embar. meint, diese Funktionen nicht zu kennen. Wie ist das zu verstehen?

Entschuldigung: habe soeben meinen Denkfehler erkannt: ja wir wollen doch die ID des letzten Datensatzes also muss es rückwärts gehen, also DESC!. Liege ich da richtig? und Limit 1 damit wirklich nur die ID des letzten DS verarbeitet wird?!
Norbert

Geändert von EdAdvokat (14. Mai 2017 um 13:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#2

AW: ID nicht gefunden nach last_insert_rowid()

  Alt 14. Mai 2017, 13:16
Eigentlich müsste MAX aber auch funktionieren.
https://www.sqlite.org/lang_aggfunc.html

Und ja, DEST ist absteigend, also steht der größte Wert oben und der erste Datensatz des Ergebnisses wird ja auch genommen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: ID nicht gefunden nach last_insert_rowid()

  Alt 14. Mai 2017, 13:29
habe Variante: qMain.SQL.Text:='SELECT MAX(ID) FROM KONTAKTE'; erfolglos probiert. Wieder die bekannte Exception, dass er das Feld 'ID' nicht finden könne. Komisch. Sind die SQL Befehle auf der von mir benannten Seite auch in Delphi gültig?
Ich danke Euch für die Hilfe und Unterstützung. Nun werde ich noch das Problem mit der Anzeige aller DS nach Bearbeiten zu lösen versuchen.
Norbert
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#4

AW: ID nicht gefunden nach last_insert_rowid()

  Alt 14. Mai 2017, 13:33
Zitat:
SELECT MAX(ID) FROM KONTAKTE
Ohh ja, da heißt das Feld natürlich 'MAX', also so wie die Funktion, aus der das Ergebnis kommt.
SELECT MAX(ID) AS ID FROM KONTAKTE

Darum gab es auch schon ein paar Vorschläge mit SQL.Fields[0] anstatt SQL.FieldByName('ID') .
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: ID nicht gefunden nach last_insert_rowid()

  Alt 14. Mai 2017, 13:51
Ich schrieb nicht ganz umsonst:SELECT MAX(ID) AS ID FROM KONTAKTE Wenn Du dann SELECT MAX(ID) FROM KONTAKTE nimmst, ist das natürlich was anderes.

Bitte übernimm bei Vorschlägen den ganzen Quelltext und nicht nur irgendwelche Teilmengen. Das kann bei der Fehlersuche deutlich hilfreich sein.

Wenn man MAX(ID) in 'nem SQL hat, dann heißt das nicht zwingend, dass die Spalte im Ergebnis dann auch Max heißt. Bei SQLite und FireBird mag das so sein.
Andere Datenbanken liefern dann auch schonmal Expr_1 oder, je nach Anzahl der verwendeten Funktionen Expr_1 bis Expr_n.

Man sollte bei Funktionen immer ein AS Spaltenname machen, damit man weiß, wie die Spalte im Ergebnis heißen wird.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: ID nicht gefunden nach last_insert_rowid()

  Alt 14. Mai 2017, 14:04
Wenn's ums Lernen geht:

Bezüglich SQL: Einführung in die SQL Grundlagen

Auf der Seite wird auch beschrieben, was es mit dem AS auf sich hat: Daten abfragen

Viel mehr zum Thema: Grundlagen SQL

Bevor man sich da datenbankspezifisch auf die Besonderheiten der einzelnen System "stürzt", lieber erstmal allgemein informieren.
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: ID nicht gefunden nach last_insert_rowid()

  Alt 14. Mai 2017, 14:13
Hallo Stephan, in #27 habe ich bereits dein Lösungsvorschlag beschrieben und leider erfolglos geprüft und gepostet. qMain.SQL.Text:='SELECT MAX(ID) AS ID FROM KONTAKTE'; erfolglos probiert. Ebenfalls die bekannte Exception. Ich bemühe mich durchaus exakt die Vorschläge aufzugreifen und zu prüfen.
Ich habe mir bezüglich SQL-Tutorials schon einiges angesehen und werde die Tipps natürlich auch aufgreifen.
Norbert

Geändert von EdAdvokat (14. Mai 2017 um 14:20 Uhr)
  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 02: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-2025 by Thomas Breitkreuz