AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQLite Autoincrement Problem
Thema durchsuchen
Ansicht
Themen-Optionen

SQLite Autoincrement Problem

Ein Thema von Kirchi · begonnen am 15. Okt 2014 · letzter Beitrag vom 20. Jan 2017
Antwort Antwort
Kirchi

Registriert seit: 20. Feb 2006
105 Beiträge
 
Delphi 10.4 Sydney
 
#1

SQLite Autoincrement Problem

  Alt 15. Okt 2014, 12:13
Datenbank: SQLite • Version: 3 • Zugriff über: DevArt UniQuery
Ich habe ein kleines Problem mit SQLite.

ich habe eine Tabelle mit folgenden SQL-Statement erstellt:

Code:
CREATE TABLE "Prioritaeten" ("ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "Titel" varchar(255))
Leider erhalte ich aber wenn ich einen neuen Eintrag poste folgende Fehlermeldung:

Zitat:
Feld 'ID' muss einen Wert haben.
Hatte jemand auch schon mal dieses Problem und konnte es beheben?


  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: SQLite Autoincrement Problem

  Alt 15. Okt 2014, 12:22
Wie sieht das Insert Statement aus?
Markus Kinzler
  Mit Zitat antworten Zitat
Kirchi

Registriert seit: 20. Feb 2006
105 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: SQLite Autoincrement Problem

  Alt 15. Okt 2014, 12:37
Ursprünglich hatte ich diesen Code:

Delphi-Quellcode:
           dm.qry_Kategorie.Append;
           dm.qry_KategorieTitel.Value:=cbb_Kategorie.Text;
           dm.qry_Kategorie.Post;
Bei diesem ist der Fehler erschienen.

Nachdem ich es auf folgenden Code geändert haben funktioniert es.

Delphi-Quellcode:
            dm.qry_Kategorie.SQL.Clear;
            dm.qry_Kategorie.SQL.Add('Insert into Kategorien ("Titel") Values ("'+cbb_Kategorie.Text+'")');
            dm.qry_Kategorie.ExecSQL;
Danke trotzdem.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#4

AW: SQLite Autoincrement Problem

  Alt 15. Okt 2014, 13:38
Anstelle der ID muss Du NULL einfügen, siehe Beispiel:

Delphi-Quellcode:
SQLQueryCategory.Close;
SQLQueryCategory.SQL.Text := 'INSERT INTO tbcategory VALUES(NULL, :category)';
SQLQueryCategory.ParamByName('category').AsString := CategoryComboBox.Text;
SQLQueryCategory.ExecSQL;
SQLTransaction1.Commit;
Bei Dir muss es dann ungefähr so aussehen:

 dm.qry_Kategorie.SQL.Add('Insert into Kategorien ("ID", "Titel") Values (NULL, "'+cbb_Kategorie.Text+'")');
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!

Geändert von AlexII (15. Okt 2014 um 13:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: SQLite Autoincrement Problem

  Alt 15. Okt 2014, 16:56
@AlexII
Mit dem SQl-Statement hat er keine Probleme.

@Kirchi
Das Problem liegt wohl daran, dass die Query-Komponente erkennt, dass das Feld benötigt (required) wird aber eben nicht erkennt dass es sich um ein AutoInc Feld handelt.

Das kann man der UniDAC Query auf verschiedene Arten beibringen:
  • Erstelle ein Insert-Statement für die Query
  • Füge alle Felder der Feldliste hinzu und setze das Feld auf AutoInc (geht aber auch per RunTime)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#6

AW: SQLite Autoincrement Problem

  Alt 20. Jan 2017, 13:17
Ich hatte das Problem gerade als ich ein TUniQuery manuell erstellt habe und dann per SQL ein Insert oder per Query.Insert Werte hinzufügen wollte. Die ID hat er noch erkannt dass die von der DB vergeben wird. Nicht aber bei der Spalte Rowguid, die für Replikationen benötigt wird.

Nachdem ich
Delphi-Quellcode:
   dbQuery := TUniQuery.Create(NIL);
   dbQuery.Connection := dbConnection;
   dbQuery.Options.RequiredFields := false; // Verhindert "Feld muss einen Wert haben"
gesetzt habe, geht es auch dor

Gerd
  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 22:54 Uhr.
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