Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi problem mit abfrage (https://www.delphipraxis.net/43585-problem-mit-abfrage.html)

Gigant02 6. Apr 2005 09:09

Datenbank: Paradox • Version: 7 • Zugriff über: Tquery

problem mit abfrage
 
Hallo

also ich wollte ein kleines login mit einer paradox 7 tabelle bauen

nun

Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
Var
  cUser : string;
  cPass : string;
begin

  cUser          := Edit1.Text;
  cPass          := Edit2.Text;
 
  Query1.Active := false;
  Query1.sql.Clear;
  Query1.Sql.Add('SELECT Passwort FROM login WHERE User = ' + QuotedStr(cUser));
  Query1.Active := True;

  If (cPass = Query1.Fieldbyname('Passwort').AsString) then begin
    ShowMessage('hallo');
  end;

end;
ich benutze die TQuery komponente und irgendwie ist das nicht richtig oder besser gesagt es ist total falsch

wie mache ich das richtig ???

ich finde leider nur wenig in internet dadrüber oder ich suche falsch

lg, Gigant02

Schuster 6. Apr 2005 09:14

Re: problem mit abfrage
 
Also ich benutze zwar die Zeos-Komponenten und Mysql aber denke das es so geht:

Delphi-Quellcode:
with query1 do
begin
   sql.clear;
   sql.add('SELECT Passwort FROM login WHERE User = ' + QuotedStr(cUser));
   open;
end;

Sharky 6. Apr 2005 09:23

Re: problem mit abfrage
 
Hai Gigant02,

ich würde bei der Abfrage einen anderen Weg gehen. Dir reicht ja die Information ob es einen Eintrag mít User und Passwort gibt. Also kannst Du das ja auch so beim Server abfragen:

Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
Var
  cUser : string;
  cPass : string;
begin

  cUser          := Edit1.Text;
  cPass          := Edit2.Text;
 
  Query1.Close;
  Query1.Sql.Test := 'SELECT COUNT(*) AS anzahl FROM login ' + #10
                   + 'WHERE (user = ' + QuotedStr(cUser) + #10
                   + ') AND (passwort = ' + QuotedStr(cPass) + ')';
  Query1.Open
  if (Query1.FieldByName('anzahl').AsInteger = 1) then
  begin
    ShowMessage('hallo');
  end;
end;

Gigant02 6. Apr 2005 09:25

Re: problem mit abfrage
 
lach super jetzt stürzt dabei sogar windows ab :)

hmmm

wo könnte denn überhaupt der fehler liegen ???

lg, Gigant02

Stefan Dieler 6. Apr 2005 09:28

Re: problem mit abfrage
 
Hallo,

Ich vermute den Fehler nicht im Code, sondern entweder bei der Komponente oder bei deiner BDE.
Der Code sieht in beiden Beispielen korrekt aus!
Lösche mal die beiden Paradox-Systemdateien, die .lck und die andere Datei (komme jetzt nicht drauf).

Gigant02 6. Apr 2005 09:43

Re: problem mit abfrage
 
wo finde ich die beiden datein weil ich habe alles danach durchsucht und nirgends kann ich sie finden

lg, gigant02

RavenIV 6. Apr 2005 09:47

Re: problem mit abfrage
 
Zitat:

Zitat von Sharky
Hai Gigant02,

ich würde bei der Abfrage einen anderen Weg gehen. Dir reicht ja die Information ob es einen Eintrag mít User und Passwort gibt. Also kannst Du das ja auch so beim Server abfragen:

Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
Var
  cUser : string;
  cPass : string;
begin

  cUser          := Edit1.Text;
  cPass          := Edit2.Text;
 
  Query1.Close;
  Query1.Sql.Test := 'SELECT COUNT(*) AS anzahl FROM login ' + #10
                   + 'WHERE (user = ' + QuotedStr(cUser) + #10
                   + ') AND (passwort = ' + QuotedStr(cPass) + ')';
  Query1.Open
  if (Query1.FieldByName('anzahl').AsInteger = 1) then
  begin
    ShowMessage('hallo');
  end;
end;

ich würde das #10 weglassen.
und dann heisst es Query1.Sql.Text!
beim SQL-Befehl könnte man "DISTINCT" einabuen, weil es ja nur einen passenden datensatz geben kann.
und prüfe bei der auswertung ab, ob RowCount = 1 ist.

gruessle


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz