![]() |
SQL: Namens u. Passwortabfrage funzt, aber PW ändern nicht.
Liste der Anhänge anzeigen (Anzahl: 1)
Morgen,
ich hab mich mal rangesetzt und ne Passwortabfrage geschrieben. Hab das ganze Programm + Datenbank als *.rar mal mit Hochgeladen, damit ihr euch das anschaun könnt. Die Passwortabfrage bezogen auf den jeweiligen Namen geht, aber ich brauch auch eine Maske, wo man sein PW verändern kann. Da hab ich mir gedacht es würde funktionieren wenn ich die PW Abfrage mache, und wenn der Query ein Ergebniss erhält - dann wird das neue PW (ausm edit Feld) gleich abgefragt und eingeschrieben.
Delphi-Quellcode:
Ich hab den Code, der den Fehler verursacht mal ausgeklammert.
procedure TForm1.Button1Click(Sender: TObject);
begin pwQuery.Close; pwQuery.SQL.Clear; pwQuery.SQL.Text := 'SELECT * ' + #10 + 'FROM pw.dbf' + #10 + 'WHERE Name = :iedName AND' + #10 + ' Passwort = :iedPWalt'; pwQuery.prepare; pwQuery.ParamByName('iedName').AsString := edName.text; pwQuery.ParamByName('iedPWalt').AsString := edPWalt.text; pwQuery.open; pwQuery.Active:=True; if pwQuery.Bof and pwQuery.Eof then begin application.terminate; end { else pwQuery.edit; pwQuery.FieldByName('Passwort').AsString := edPWneu.text; } end; Delphi gibt ne Fehlermeldung raus, pwQuery: Eine Datenmenge die nur zum lesen ist, kann nicht verändert werden. Wie muss ich denn den Code verändern, damit ich das PW auch in der Art ändern kann? Schaut euch das Programm mal an, ist Delphi 5 Enterp. - ich hoffe ihr könnts öffnen, compilieren, lesen usw... . |
Re: SQL: Namens u. Passwortabfrage funzt, aber PW ändern nic
Hallo,
warum so kompliziert?
Delphi-Quellcode:
...
pwQuery.Close; pwQuery.SQL.Text:= 'UPDATE "t:eDienstreisebuch\pw.dbf"'+#13#10+ Format('SET Passwort="%s"', [edPWneu.text])+#13#10+ Format('WHERE (Name="%s") AND (Passwort="%s")', [edName.text, edPWalt.text]); pwQuery.ExecSQL; ... |
Re: SQL: Namens u. Passwortabfrage funzt, aber PW ändern nic
Hm..
der Code haut nicht hin, ich bekomm beim Ausführen des Codes immer nur: Fehler beim Erstellen des Cursor-Handle. |
Re: SQL: Namens u. Passwortabfrage funzt, aber PW ändern nic
Mach's mit einer Mischung aus deinem und Gollums Code:
Delphi-Quellcode:
Auch wenn mich so mancher Datasource/TTable-Anhänger jetzt kreuzigen will. :mrgreen:
pwQuery.Close;
// Die Zeile kannst du dir sparen, da du mit "pwQuery.SQL.Text := ..." den Text komplett überschreibst // pwQuery.SQL.Clear; pwQuery.SQL.Text := 'UPDATE DeineTabelle'+ #10 + 'SET PassWord = :iNewPassWord' + #10 + 'WHERE Name = :iUserName'; pwQuery.prepare; pwQuery.ParamByName('iUserName').AsString := edName.Text; pwQuery.ParamByName('iNewPassWord').AsString := edPWneu.Text; // Da dies keine Abfrage, sondern DML ist, musst du ExecSQL aufrufen pwQuery.ExecSQL; Führe Updates "zu Fuss" aus, in einer Query -> dadurch hast du einfach mehr Kontrolle darüber was wann an den Server geht. p.s.: Ich bin davon ausgegangen, dass "Name" in der DB eindeutig ist. |
Re: SQL: Namens u. Passwortabfrage funzt, aber PW ändern nic
Delphi-Quellcode:
So gehts nun, juhuu!
pwQuery.Close;
pwQuery.SQL.Clear; pwQuery.SQL.Text := 'SELECT * ' + #10 + 'FROM "t:\edienstreisebuch\pw.dbf"' + #10 + 'WHERE Name = :iedName AND' + #10 + ' Passwort = :iedPWalt'; pwQuery.prepare; pwQuery.ParamByName('iedName').AsString := edName.text; pwQuery.ParamByName('iedPWalt').AsString := edPWalt.text; pwQuery.open; pwQuery.Active:=True; if pwQuery.Bof and pwQuery.Eof then begin application.terminate; end else pwQuery.Close; pwQuery.SQL.Text := 'UPDATE "t:\eDienstreisebuch\pw.dbf"' + #10 + 'SET Passwort = :iNewPassWord' + #10 + 'WHERE Name = :iUserName'; pwQuery.prepare; pwQuery.ParamByName('iUserName').AsString := edName.Text; pwQuery.ParamByName('iNewPassWord').AsString := edPWneu.Text; pwQuery.ExecSQL; end; Weiß wer wie man normale Editfelder verschlüsselt, ich meine damit - dass die Felder fürs Passwort nicht in Klartext angezeigt werden, jenes wäre wohl sehr hilfreich... . Hm. |
Re: SQL: Namens u. Passwortabfrage funzt, aber PW ändern nic
Hm...Entweder du reagierst auf Edit.OnChange und holst den Text in eine Variable, und ersetzt den Text im Edit mit *** oder du nimmst einen Maskedit. Dann musst du dich halt ums Posten und ändern usw selber kümmern
|
Re: SQL: Namens u. Passwortabfrage funzt, aber PW ändern nic
Oder noch viel einfacher -> in PasswordChar des Edits mal ein * eintragen :shock:
|
Re: SQL: Namens u. Passwortabfrage funzt, aber PW ändern nic
Äh, ja, ich dachte er hatte geschrieben DBEdit. Aber wenn er nen normalen edit hat, kann er den ja durch einen MaskEdit ersetzen, wie ich bereits geschrieben hab. Der normale Edit hat die eigenschaft PasswordChar nämlich nicht :wink:
|
Re: SQL: Namens u. Passwortabfrage funzt, aber PW ändern nic
Doch hat es... :P
|
Re: SQL: Namens u. Passwortabfrage funzt, aber PW ändern nic
Zitat:
Sehr schön. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 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