![]() |
AW: ID nicht gefunden nach last_insert_rowid()
Ich schrieb nicht ganz umsonst:
Delphi-Quellcode:
Wenn Du dann
SELECT MAX(ID) AS ID FROM KONTAKTE
Delphi-Quellcode:
nimmst, ist das natürlich was anderes.
SELECT MAX(ID) FROM KONTAKTE
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. |
AW: ID nicht gefunden nach last_insert_rowid()
Wenn's ums Lernen geht:
Bezüglich SQL: ![]() Auf der Seite wird auch beschrieben, was es mit dem AS auf sich hat: ![]() Viel mehr zum Thema: ![]() Bevor man sich da datenbankspezifisch auf die Besonderheiten der einzelnen System "stürzt", lieber erstmal allgemein informieren. |
AW: ID nicht gefunden nach last_insert_rowid()
Hallo Stephan, in #27 habe ich bereits dein Lösungsvorschlag beschrieben und leider erfolglos geprüft und gepostet.
Delphi-Quellcode:
erfolglos probiert. Ebenfalls die bekannte Exception. Ich bemühe mich durchaus exakt die Vorschläge aufzugreifen und zu prüfen.
qMain.SQL.Text:='SELECT MAX(ID) AS ID FROM KONTAKTE';
Ich habe mir bezüglich SQL-Tutorials schon einiges angesehen und werde die Tipps natürlich auch aufgreifen. |
AW: ID nicht gefunden nach last_insert_rowid()
Einen Tipp hast du vergessen.
* SQL-Tools verwenden * oder dir selber einen SQL-Betrachter basteln. Also ein DBGrid, was das gesamte Ergebnis einer SQL-Abfrage anzeigt und am Besten auch den Typ der Felder erkenntlich macht. |
AW: ID nicht gefunden nach last_insert_rowid()
Himitsu, doch durchaus habe ich mir einen DBBrowser installiert und mit einem SQL-Tutorial praktischBeispiele probiert. Natürlich bin ich noch nicht in alle Untiefen der SQL-Sprache eingedrungen.
Noch an Wort zu Stephans Kritik: Das von mir erwähnte Beispiel war ein Vorschlag von himitsu aus dem Post #26. Das leider nicht funktioniert hat. Ich habe nicht dein SQL-Select gemeint. Kommt sicher schon mal vor, bei den Häufungen an Versuchen. |
AW: ID nicht gefunden nach last_insert_rowid()
Zitat:
SQL-Code:
heißt. :angle:
SELECT MAX(ID) FROM KONTAKTE
|
AW: ID nicht gefunden nach last_insert_rowid()
ja die heißt MAX(ID) und nicht ID, wie sie heißen sollte. Noch eine kurze Erklärung von mir: Ich habe überhaupt nicht in die Richtung gedacht, da es mit ROWID und den Zeos-Komp. wunderbar geklappt hat, dass es an einem nicht exakten SQL-Statement liegen könnte und in diese Richtung weiter gedacht werden muss. Jetzt nach Eurer Erklärung sind mir die Augen geöffnet worden - so ein wenig zumindest. Das was ich zur Funktion rowID... gefunden habe, war für mich nicht so erhellend, obwohl ich doch einiges leider überwiegend engl. auf der SQLite-Seite gelesen habe. Ich war der Auffassung, dass es an etwas anderem liegen muss, als an dem bewußten SQL-Statement mit der Funktion RowID...
Das Darstellungsproblem nach Bearbeiten habe ich zwischenzeitlich auch gelöst. Jetzt läuft alles vermutlich exakt. Ich suche noch immer vergeblich nach Quelltexten zu einfachen Datenbankanwendungen, die ich als Beispiel zum lernen verwenden könnte. Ähnlich wie dieses einfache Adressprogramm zu SQLite. Gibt es da einen Tipp, wo ich suchen könnte ggf. auch zu anderen Datenbankanwendungen. Danke nochmals für die Unterstützung. |
AW: ID nicht gefunden nach last_insert_rowid()
Moin...:P
Was ich nicht verstehe...warum du einmal mit Zeos und das andere Mal mit DBExpress arbeitest? Du bist noch in der Lernphase...da reicht eigentlich Zeos Dicke aus. 8-) |
AW: ID nicht gefunden nach last_insert_rowid()
Naja, die Methode ist doch ganz einfach:
Zuerst wird ein Statement außerhalb des Quelltextes, also mit 'ner Datenbankoberfläche, ausprobiert. Und erst dann, wenn es da fehlerfrei funktioniert, wird es ins Programm übernommen. Und die Vergabe der Spaltennamen überlässt man weder der Datenbank noch der Datenbankoberfläche, sondern macht sie immer selbst. Wird 'ne Spalte "einfach so" abgefragt, stimmt er im Abfrageergebnis mit dem in der Datenbanktabelle überein. Sobald man eine Funktion, eine Case-Statement, 'nen Cast ... nutzt, gibt man den Namen mit as Spaltenname an. Dann weiß man, was man als Ergebnis bekommt. |
AW: ID nicht gefunden nach last_insert_rowid()
Hallo Haentschmann, zur Erklärung: Ich wollte das Programm mit dbExpress-Komp. für mich als Übung und Muster schreiben und bin dann an der bewußten Stelle auf Schwierigkeiten gestoßen, die ich mir nicht erklären konnte. Als Mittel der Wahl dachte ich, versuche es doch mal mit den Zeos-Komp. mit denen ich bislang gute Erfahrungen gemacht habe und siehe da da es ging wunderbar. Doch ich will langsam meinen Horizont erweitern und auch mit den dbExpress-Komp. arbeiten. Das war einzig und allein der Grund und wie sich gezeigt hat kann man dabei auch noch was lernen, was mir bei den Zeos-Komp. entgangen wäre.
Zum post von Stephan: Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:00 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