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.