![]() |
AW: ADOQuery - SQLQuery ??
Nein, das Erste (#18) war schon richtig. Nur das ExecSQL ist zuviel.
Evtl. fehlt noch ein ADOQuery1.Connection.CommitTrans; |
AW: ADOQuery - SQLQuery ??
So gibt er ne Fehlermeldung aus : No Transaction active
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin ADOQuery1.Connection.CommitTrans; ADOQuery1.SQL.Text := 'Select * from taccounts'; ADOQuery1.Open; ADOQuery1.Append; //ein leerer Datensatz hinzu ADOQuery1.FieldByName('nEMID').AsInteger := 4; ADOQuery1.FieldByName('sUsername').AsString := 'Hallo'; ADOQuery1.FieldByName('sUserPass').AsString := 'Hallo1'; ADOQuery1.FieldByName('sUserPassSalt').AsString := 'Hallo1'; ADOQuery1.FieldByName('sEmail').AsString := 'Hallo1'; ADOQuery1.FieldByName('nAuthID').AsInteger := 4; ADOQuery1.FieldByName('sIP').AsString := '127.0.0.1'; ADOQuery1.Post; //abschicken end; |
AW: ADOQuery - SQLQuery ??
Zitat:
|
AW: ADOQuery - SQLQuery ??
Am ende hatte ich das schon er sagt immer das keine Transaction aktiv ist. Ohne das Command funktioniert es zwar fehlerfrei allerdings wird auch kein Db eintrag hinzugefügt.
Mfg Lucas
Delphi-Quellcode:
ADOQuery1.SQL.Text := 'Select * from taccounts';
ADOQuery1.Open; ADOQuery1.Append; //ein leerer Datensatz hinzu ADOQuery1.FieldByName('nEMID').AsInteger := 4; ADOQuery1.FieldByName('sUsername').AsString := 'Hallo'; ADOQuery1.FieldByName('sUserPass').AsString := 'Hallo1'; ADOQuery1.FieldByName('sUserPassSalt').AsString := 'Hallo1'; ADOQuery1.FieldByName('sEmail').AsString := 'Hallo1'; ADOQuery1.FieldByName('nAuthID').AsInteger := 4; ADOQuery1.FieldByName('sIP').AsString := '127.0.0.1'; ADOQuery1.Post; //abschicken ADOQuery1.Connection.CommitTrans; |
AW: ADOQuery - SQLQuery ??
Wenn das fehlerfrei durchläuft, steht der Eintrag auch in der DB.
Wie prüfst du denn, ob der neue Eintrag da ist? |
AW: ADOQuery - SQLQuery ??
Hmm..
ADO braucht BeginTrans.. Ein ComitTrans brauchst DU auch nur machen, wenn Du bei ADO vorher ein BeginTrans gemacht hast. Aber, wieso gehst Du denn nun den Weg mit Append/Post? Ein Insert ist immer performanter, außer, Du hast die Datenmenge bereits zur Anzeige in z.B. eines DBGrids offen. In meinem ersten post (#6) habe ich Dir eine korrigierte und lauffähige Lösung aufgezeigt. Schade, dass Du sie nicht verwendest. Hast Du überhaupt Schreibrechte auf die MySQL-DB? Mit der Zeile
Delphi-Quellcode:
hättest Du auch eine Prüfung, ob der Insert erfolgreich gewesen ist.
if (SQLQuery1.ExecSQL() = 1) then begin // Prüfen, ob der Insert erfolgreich war
|
AW: ADOQuery - SQLQuery ??
Ich überprüfe das direkt in der mysql Datenbank.
Holger danke für deine Antwort ich habe deine Lösung gesehen und auch ausprobiert allerdings erkennt er in dem Code block :
Delphi-Quellcode:
ADOQuery1.ParametersByName('sUsername').Value := edit3.text; // Hier fehlte das 's', siehe dein SQL Values (:sUsername
SQLQuery1.ParamByName('UserPass').Value := edit4.text; SQLQuery1.ParamByName('UserPassSalt').Value := edit5.text; SQLQuery1.ParamByName('email').Value := edit6.text; SQLQuery1.ParamByName('AuthID').Value := '4'; SQLQuery1.ParamByName('sIP').Value := edit7.text; // Hier stand 'email' statt das 'sIP' ParamByName muss bei der ADOQuery ja ParameterByName heißen richtig? Weil den teil ParamByName sieht er als fehlerhaft an genau wie .Value Mfg Lucas |
AW: ADOQuery - SQLQuery ??
Hmm..
Ok, richtig.. Müsste so lauten:
Delphi-Quellcode:
ADOQuery1.Parameters.ParamByName('sUsername').Value :=
Das natürlich bei allen Parameter.. Es fehlte das Parameters |
AW: ADOQuery - SQLQuery ??
Jetzt sagt er mir Missing Sql Property :/
|
AW: ADOQuery - SQLQuery ??
Hmm..
Dann zeig uns erstmal deinen jetzigen Source und die Stelle, an der die Fehlermeldung angezeigt wird.. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz