Integer wird nicht an Datenbank übergeben



  • Bin eigentlich ziemlicher Anfänger...

    Im Lauf meines Programmes werden ganze Zahlen in Edit Feldern ausgegeben. Diese möchte ich nun an eine MS Access 2000 Datenbank übergeben.

    Das heißt Berechnung erfolgt->Wert in DB schreiben->Neuen Datensatz schreiben...

    Allerdings bleibt die Datenbank leer

    Wer kann hier weiterhelfen?



  • Wie, so denkst du, soll dir ohne den leisesten Schnipsel Quell-code
    geholfen werden ?

    🕶

    Edit: Wenn man deiner Fragestellung logisch folgt, so
    willst du mit diesem Thread nur wissen, wer dir gerne Helfen könnte. 😉



  • Wollte nicht gleich das ganze überladen

    Das ganze sieht so aus:

    void __fastcall TForm2::btnNeuerKundeClick(TObject *Sender)
    int menge=1;
    edtDBmenge->Text=menge;
    edtDBmenge->DataSource->DataSet->Edit();
    edtDBmenge->DataSource->DataSet->Post();
    edtDBmenge->Clear();



  • und dann noch die Auswahl zwischen neuer Datensatz und Ändern

    void __fastcall TForm2::FormActivate(TObject *Sender)
    {
    if (auswertung->getNeu())
    {
    String sql = "INSERT INTO Auswertungmonat (menge) SELECT ''";
    adoInsert->SQL->Clear();
    adoInsert->SQL->Add(sql);
    adoInsert->ExecSQL();
    DtsMonat->DataSet->Active=true;
    DtsMonat->DataSet->FindLast();
    }
    else
    {
    DtsMonat->DataSet->Active=true;
    DtsMonat->DataSet->GotoBookmark(auswertung->getBoolmark());
    }
    }



  • Überprüf doch mal den Rückgabewert von ExecSQL , vielleicht schlägt es ja einfach mit einer aussagekräftigen Fehlermeldung fehl.

    Und du hast übrigens noch keinen Code gepostet, wo die Zahlen in die Datenbank geschrieben werden.



  • fdfdg schrieb:

    Überprüf doch mal den Rückgabewert von ExecSQL , vielleicht schlägt es ja einfach mit einer aussagekräftigen Fehlermeldung fehl.

    Fehlermeldung gibt es keine

    Und du hast übrigens noch keinen Code gepostet, wo die Zahlen in die Datenbank geschrieben werden.

    void __fastcall TForm2::btnNeuerKundeClick(TObject *Sender)
    int menge=1;
    edtDBmenge->Text=menge;
    edtDBmenge->DataSource->DataSet->Edit();
    edtDBmenge->DataSource->DataSet->Post();
    edtDBmenge->Clear();



  • void __fastcall TForm2::FormActivate(TObject *Sender) 
    { 
        if (auswertung->getNeu()) 
        { 
            String sql = "INSERT INTO Auswertungmonat (menge) SELECT ''"; 
            adoInsert->SQL->Clear(); 
            adoInsert->SQL->Add(sql); 
            adoInsert->ExecSQL(); 
            DtsMonat->DataSet->Active=true; 
            DtsMonat->DataSet->FindLast(); 
        } 
        else 
        { 
            DtsMonat->DataSet->Active=true; 
            DtsMonat->DataSet->GotoBookmark(auswertung->getBoolmark()); 
        } 
    }
    

    So is' schöner.



  • Jan2110 schrieb:

    void __fastcall TForm2::btnNeuerKundeClick(TObject *Sender) 
    int menge=1; 
    edtDBmenge->Text=menge; 
    edtDBmenge->DataSource->DataSet->Edit(); 
    edtDBmenge->DataSource->DataSet->Post(); 
    edtDBmenge->Clear();
    

    Erst Edit(), dann die Zuweisung und dann das Post(). Dann sollte das gehen.

    Der Thread wäre besser in der C++Builder/VCL Rubrik aufgehoben.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum VCL (C++ Builder) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Was soll diese SQL-Anweisung "INSERT INTO Auswertungmonat (menge) SELECT ''" bewirken? Einen neuen leeren Wert eintragen? Ein leeres Zeichen in einen Int-Wert eintragen?

    Falls wirklich nur ein neuer Datensatz mit einem leeren Wert angelegt werden soll verwende "INSERT INTO Auswertungmonat (menge) values (NULL)"



  • Zusätzlich zu Linneas Einwand noch der Hinweis darauf, dass ds->Edit einen bestimmten Datensatz in den Editiermodus versetzt. Ich sehe dort keine Auswahl des zu editierenden Datensatzes... Welcher Datensatz soll denn da editiert werden? Wieso verwendest Du nicht ds->Append, um einen Datensatz anzuhängen (das wäre für den Anfang vielleicht einfacher, als direkt ein SQL-Statement zu verwenden)?



  • MichelRT schrieb:

    Jan2110 schrieb:

    void __fastcall TForm2::btnNeuerKundeClick(TObject *Sender) 
    int menge=1; 
    edtDBmenge->Text=menge; 
    edtDBmenge->DataSource->DataSet->Edit(); 
    edtDBmenge->DataSource->DataSet->Post(); 
    edtDBmenge->Clear();
    

    Erst Edit(), dann die Zuweisung und dann das Post(). Dann sollte das gehen.

    Danke!!! Das scheint zu funktionieren!!

    Der Thread wäre besser in der C++Builder/VCL Rubrik aufgehoben.


Anmelden zum Antworten