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


  • Mod

    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


  • Mod

    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


Anmelden zum Antworten