Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL: Namens u. Passwortabfrage funzt, aber PW ändern nicht. (https://www.delphipraxis.net/14826-sql-namens-u-passwortabfrage-funzt-aber-pw-aendern-nicht.html)

LuckyStrike4life 16. Jan 2004 14:48


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:
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;
Ich hab den Code, der den Fehler verursacht mal ausgeklammert.
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... .

Gollum 16. Jan 2004 15:07

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;
  ...

LuckyStrike4life 16. Jan 2004 15:38

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.

Robert_G 16. Jan 2004 16:08

Re: SQL: Namens u. Passwortabfrage funzt, aber PW ändern nic
 
Mach's mit einer Mischung aus deinem und Gollums Code:
Delphi-Quellcode:
  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;
Auch wenn mich so mancher Datasource/TTable-Anhänger jetzt kreuzigen will. :mrgreen:
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.

LuckyStrike4life 26. Jan 2004 10:35

Re: SQL: Namens u. Passwortabfrage funzt, aber PW ändern nic
 
Delphi-Quellcode:
  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;
So gehts nun, juhuu!

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.

Schubi 26. Jan 2004 10:46

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

Robert_G 26. Jan 2004 11:18

Re: SQL: Namens u. Passwortabfrage funzt, aber PW ändern nic
 
Oder noch viel einfacher -> in PasswordChar des Edits mal ein * eintragen :shock:

Schubi 26. Jan 2004 11:33

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:

Robert_G 26. Jan 2004 11:48

Re: SQL: Namens u. Passwortabfrage funzt, aber PW ändern nic
 
Doch hat es... :P

LuckyStrike4life 26. Jan 2004 11:53

Re: SQL: Namens u. Passwortabfrage funzt, aber PW ändern nic
 
Zitat:

Zitat von GeorgeWNewbie
Doch hat es... :P

Thx, das geht!

Sehr schön.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 Uhr.
Seite 1 von 2  1 2      

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