TDBEdit und MySQL



  • Hallo Leute,

    habe folgendes Problem:

    Schreibe ein Prog zur verwaltung von Kundenstammdatn. Grundlage ist eine MySQL-Datenbank,welche über ADO angesprochen wird..

    Wenn ich das Fenster zur neueingabe von Kundendaten öffne, soll die höchste Kundennummer die zur Zeit vergeben ist automatisch um 1 erhöht werden und in einem TDBEdit-Feldangezeigt werden.

    AQkdneu->Close();
    AQkdneu->SQL->Clear();
    AQkdneu->SQL->Add("SELECT MAX(Kundennummer)+1 as kundennummer FROM kunden");
    AQkdneu->Open();
    

    das klappt auch,

    nun mein eigendlichens Problem. Durch klicken auf Speichern soll die Kundennummer nun endlich in der DB gespeichert werden.

    AQkdneu->Close();
    AQkdneu->SQL->Clear();
    AQkdneu->SQL->Add("INSERT INTO kunden (kundennummer) VALUES (kundennummer)");
    AQkdneu->ExecSQL();
    

    Klappt aber nicht!!! Es werden aber immer nullen in die DB eingetragen. Wenn ich versuche den Feldinhalt auszulesen und in einer Variable zu speichern, bekomme ich jedesmal den Fehler, das das Feld nicht bearbeitet werden kann. Bitte helft mir.

    Gruß Derberon



  • Derberon,

    Derberon schrieb:

    AQkdneu->SQL->Add("INSERT INTO kunden (kundennummer) VALUES (kundennummer)");
    AQkdneu->ExecSQL();
    

    Also anstelle des zweiten "kundennummer" sollte schon irgend eine "echte" Kundennummer stehen, schätze ich.

    Derberon schrieb:

    AQkdneu->SQL->Add("SELECT MAX(Kundennummer)+1 as kundennummer FROM kunden");
    

    das klappt auch,

    ... aber nur dann, wenn nur jeweils ein client gleichzeitig auf die Datenbank zugreifen darf. Ansonsten besteht die Wahrscheinlichkeit, daß eine Kundennummer doppelt vergeben wird. Beim MS SQL-Server gibt es dafür das "@@IDENTITY". Mit MySQL kenne ich mich nicht aus, aber nach einem kurzen Blick in die Hilfe ...
    *
    F.2.28 Changes in release 3.23.25
    ...
    * Added @@IDENTITY as a synonym for LAST_INSERT_ID().
    *
    ...scheint das da genau so zu sein.



  • Danke ersteinmal für die Antwort, den Aspekt habe ich noch nicht beachtet, aber das hilft mir bei meinem momentanen Problem nicht weiter.



  • Derberon schrieb:

    ...aber das hilft mir bei meinem momentanen Problem nicht weiter.

    Ja was ist denn Dein Problem?
    Was hat z.B. Deine Titelzeile mit der Fragestellung zu tun?
    Welche Fehlermeldung bekommst Du (Exception-Klasse, Message)?
    Und nochmal - steht bei Dir im Code wirklich das da:

    AQkdneu->SQL->Add("INSERT INTO kunden (kundennummer) VALUES (kundennummer)");
    

    IMO sollte da etwa sowas stehen:

    AQkdneu->SQL->Add("INSERT INTO kunden (kundennummer) VALUES (" + kundennummer + ")");
    

  • Mod

    Hallo

    deine Tabelle besteht nur aus dem Feld Kundennummer
    (oder der Rest hat Voreinstellungen)

    aber warum verwendest du nicht "auto_increment"

    MfG
    Klaus


Anmelden zum Antworten