INSERT Befehl und AUTO_INCREMENT (ADO)
-
Hallo,
ich greife mit der ADO Connection auf eine von mir erstellte Access Datenbank zu. Jetzt will ich mit den normalen SQL Befehlen einen neuen Eintrag hinzufügen, das Problem ist das die erste Spalte den Wert AUTO_INCREMENT hat. Wie muss da jetzt der INSERT Befehl aussehen? Habe es schon so probiert, aber da bekomme ich einen Syntax Fehler.
ADOQuery1->SQL->Add("INSERT INTO emails VALUES(,,'Mark')");
Lasse ich die ersten beiden Kommas komplett wege, sagt er mir das Abfrage- und Zielfelder nicht übereinstimmen.
Cya
-
Hallo
unter mySQl mache ich es so
ADOQuery1->SQL->Add("INSERT INTO emails VALUES('0','Mark')");
sollte unter Access auch gehen
MfG
Klaus
-
Danke, jetzt kommt nur leider eine andere Fehlermeldung....

"Fehlendes Semikolon(;) am Ende der SQL Anweisung"
füge ich es aber hinzu kommt dieser Fehler:
"Zeichen nach Ende von SQL Anweisung gefunden."
Was soll das denn?? Es hat doch vorher geklappt!!
Cya
-
Hallo
scheinbar ist es unter Access doch etwas anderst
versuchs mal so
ADOQuery1->SQL->Add("INSERT INTO emails VALUES('0','Mark');");
MfG
Klaus
-
genauso habe ich es ja gemacht, dann meckert er wegen dem überflüssigen Zeichen.
Cya
-
Versuch mal:
ADOQuery1->SQL->Add("INSERT INTO emails VALUES(NULL,'Mark')");
Dashier ist auf jeden Fall das korrekte AutoIncrement-Statement für SQL(Ohne Anführungszeichen):
"INSERT INTO emails VALUES(NULL,'Mark');"
Hilfe von Borland sagt das:
ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("SELECT EmpNo, LastName, FirstName, HireDate"); ADOQuery1->SQL->Add("FROM Employee"); ADOQuery1->Open();Also ohne abschließendes Semikolon.
Zahlenwerte werden in SQL ohne einfaches Anführungszeichen " ' " geschrieben. Das wird nur bei Strings und Date/Time werten benötigt.
Von MySQL weiß ich aber, das es Zahlen die als String übergeben werden " '0' " automatisch als Zahl umwandelt.
-
danke für den Tip, aber jetzt erscheint eine andere Fehlermeldung:
"Sie wollen den NULL-Wert einer Variablen zuweisen, die nicht den Datentyp Variant hat"
Das kann doch alles nicht sein...ein Fehhler in der Datenbank kann ja eigentlich nicht vorliegen, das ist ein ganz normales Feld.
Cya
-
Hast Du schon mal versucht das Insert-Statement so zu schreiben:
INSERT INTO emails (feldname1, feldname2,...) VALUES(feldwert1, feldwert2,...)Und dann einfach in beiden Klammerausdrücken den Autoincrement-Wert weglassen.
Weiß nicht, ob das funktioniert, aber einen Versuch ist es wert.Gruß,
Alexander
-
jepp, habe ich auch schon, klappt nicht.
Cya
-
Hast Du denn schon mal einen solchen Insert-Befehl direkt auf der Datenbank
ausgeführt?Gruß,
Alexander
-
könnte ich machen, nur wie? Habe jetzt nicht so den Plan von Access
Cya
-
Oder mal mit dem SQL-Explorer, der ja zum BCB dazugeliefert (zumindest in der
Enterprise-Version).Gruß,
Alexander
-
hmm, habe ich leider nicht, also den SQL Explorer. Habe die 5.0 Enterprise.
Nur so einen SQL Monitor oder so.
Cya
-
Andre1234 schrieb:
hmm, habe ich leider nicht, also den SQL Explorer. Habe die 5.0 Enterprise.
Das ist seltsam. Auf der Borland-Seite habe ich
gelesen, daß der SQL-Explorer (oder Database-Explorer) im BCB5 enthalten ist.
Vielleicht hast Du ihn nicht installiert?Gruß,
Alexander
-
hmm, muss ich am Montag gucken, habe den nur @Work.
wenn jemand anders ne Lösung parat hat bitte melden,
Cya