Datensatz ändern über normales Editfeld
-
Nach folgendem Prinzip:
[/cpp]
String alt=Query1->FieldByName("Feld")->AsString;
String neu=Edit1->Text;
String sql="UPDATE Table SET Feld='"+neu+"' WHERE Feld='"+alt+"';"
[cpp]
-
So habs mal probiert...geht irgendwie nich....er bringt keine Fehlermeldung...aber ändert auch nix ...
void __fastcall TForm2::Button1Click(TObject *Sender) { Table1->Open(); Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add("select * from TLogin where LName like '" +Edit1->Text+ "' AND Passwort = '"+Edit2->Text+ "';"); Query1->Open(); String alt = Query1->FieldByName("Passwort")->AsString; String neu = Edit3->Text; if (Edit3->Text == Edit4->Text) { if (!Query1->Eof) String SQL="UPDATE TLogin SET Password ='"+neu+"' WHERE Password = '"+alt+"'"; else ShowMessage ("Unbekannter Benutzer oder falsches Psswort"); } else ShowMessage ("Passwörter stimmen nicht überein"); } //---------------------------------------------------------------------------woran kanns liegen?
-
Vielleicht das was im String sql steht noch an die Datenbank senden ?

-
void __fastcall TForm2::Button1Click(TObject *Sender) { //Table1->Open(); Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add("select * from TLogin where LName like '" +Edit1->Text+ "' AND Passwort = '"+Edit2->Text+ "';"); //Form3->Query1->Open(); String alt = Query1->FieldByName("Passwort")->AsString; String neu = Edit3->Text; if (Edit3->Text == Edit4->Text) { if (!Query1->Eof) { String SQL="UPDATE TLogin SET Passwort ='"+neu+"' WHERE Passwort = '"+alt+"'"; Form3->Query1->ExecSQL(); } else ShowMessage ("Unbekannter Benutzer oder falsches Psswort"); } else ShowMessage ("Passwörter stimmen nicht überein"); }Jetzt sagt er mir das er das Feld "Passwort" nicht finden kann....es ist aber da...
-
Das ist nicht dein ernst oder ?
Kleiner Tip:Schau dir nochmal die ersten Zeilen deines Quelltextes an und dann den Teil wo du Updaten willst.
-
Hallo
was Fragg meint :
- Du weist Query1 eine Anweisung zu, aber du führst die nicht aus, den der Ope-Befehl ist auskommentiert.
- Du baust eine Anweisung mit Update zusammen, übergibst den aber nicht an Form3->Query1 (?? warum nicht nur Query1?)du solltest dir noch mal dem Ablauf deines Programms überlegen, ich denke nicht, das du etwas verstanden hast, was hier erzählt wurde.
bis bald
akari
-
Hallo

Peinlich peinlich...doch hab schon kapiert....nur eben nicht nachgedacht...werd jetzt meinen code mal ändern...
Zzzzorry! Mal schauen ob ichs noch hinbekomme

-
So hab jetzt wie folgt geändert:
void __fastcall TForm2::Button1Click(TObject *Sender) { //Table1->Open(); Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add("select * from TLogin where LName like '" +Edit1->Text+ "' AND Passwort = '"+Edit2->Text+ "';"); Form3->Query1->Open(); String alt = Query1->FieldByName("Passwort")->AsString; String neu = Edit3->Text;und:
if (Edit3->Text == Edit4->Text) { if (!Query1->Eof) { String SQL="UPDATE TLogin SET Passwort ='"+neu+"' WHERE Passwort = '"+alt+"'"; Query1->SQL->Add(SQL); Query1->ExecSQL(); }jetzt sagt er das er Zeichen nach abgeschlossener SQL Anweisung gefunden hat!

Bei ExecSQL!
Ich verzweifel langsam

PS: das mit Form3->Query1 war nur...weil ich erst die SQL auf einer anderen Form hatte...und beim Post vergessen zu ändern!
-
Die SQL-Anweisung sieht OK aus, außer das beim oberen das ";" nicht nötig ist, sollte aber trotzdem funktionieren.
Aber beim unteren da fügste die Anweisung ein ohne vorher den Inhalt von Query1->SQL löschen.Falls du den Inhalt der Query noch brauchst sollteste besser eine 2te TQuery Komponente nehmen zum eintragen.
-
ES geht!!!!

Ein Query1->SQL->Clear() war ganz hilfreich!
DANKE @ ALL