Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Verwedung des ErrorCodes (https://www.delphipraxis.net/119508-verwedung-des-errorcodes.html)

Ykcim 27. Aug 2008 18:36

Datenbank: MySQL • Version: 5 • Zugriff über: Komponenten

Verwedung des ErrorCodes
 
Hallo Zusammen,

ich habe mal eine ganz blöde Frage (habe noch nicht den Durchblick) :oops:

Wenn ich über Delphi eine Abfrage an MySQL gebe, auf die es keine Ergebnisse gibt, bekomme ich natürlich eine Fehlermeldung. Das kann ich aber meines Wissens über eine If-Abfrage, ob der ErrorCode=0 ist umgehen. Kann mir jemand sagen, wie ich den ErrorCode einbinde und damit arbeite?

Vielen Dank im Voraus

Ykcim

mkinzler 27. Aug 2008 18:39

Re: Verwedung des ErrorCodes
 
Nein du bekommst eine leere Datenmenge zurückgeliefert

Ykcim 27. Aug 2008 18:42

Re: Verwedung des ErrorCodes
 
Sorry, das stimmt. Aber wenn ich mit der eventuell erwarteteten Datenmenge, die jetzt 0 ist weiterarbeiten möchte, kommt die Fehlermeldung...

mkinzler 27. Aug 2008 18:45

Re: Verwedung des ErrorCodes
 
Dann frag dies doch vorher ab (.RecordCount; Schleife; .isNull/,isEmpty)

Ykcim 27. Aug 2008 18:47

Re: Verwedung des ErrorCodes
 
Anscheinend habe ich mich schlecht ausgedrückt, denn genau wie ich das mache wollte ich wissen. Du hast die Lösung skizziert, kannst Du es für einen Newby etwas ausführlicher machen?

Danke
Ykcim

mkinzler 27. Aug 2008 18:49

Re: Verwedung des ErrorCodes
 
Z.B.
Delphi-Quellcode:
while not DataSet.Eof do
begin
   ...
end;
Falls das Dataset leer ist, wird nichts gemacht

Ykcim 27. Aug 2008 19:05

Re: Verwedung des ErrorCodes
 
Hi mkinzler,

ich stelle mich wohl nicht gerade geschickt an...

folgendes habe ich versucht
SQL-Code:
begin
  sqlquery1.sql.Text:=('select LogIn, BenutzerID, AbteilungID, Passwort from Benutzer where LogIn=');
  sqlquery1.SQL.Add(#39+Benutzername.Text+#39);
  sqlquery1.Open;
  while not clientdataset1.eof do
  begin
    showmessage(sqlquery1.fieldbyname('Passwort').asstring);
    if sqlquery1.FieldByName('Passwort').asstring = Passwort.Text then
      begin
        showmessage('Passwort Korrekt');
        menueunit.BenutzerID:=sqlquery1.fieldbyname('BenutzerID').asinteger;
        menueunit.AbteilungID:=sqlquery1.fieldbyname('AbteilungID').asinteger;
      end
    else
      showmessage('Benutzername oder Passwort ist nicht korrekt');
  end;
end;
Aber wenn ich das so einstelle, dann läuft er nicht durch die Schleife.

Was mache ich falsch?

mkinzler 27. Aug 2008 19:08

Re: Verwedung des ErrorCodes
 
Delphi-Quellcode:
While not sqlquery1.Eof do ...

Ykcim 27. Aug 2008 19:14

Re: Verwedung des ErrorCodes
 
PRIMA!!! Jetzt klappt es!

Habe es etwas abgewandelt, weil das Programm sonst die Schleife immer wieder als Endlosschleife durchlaufen ist.
SQL-Code:
procedure TLogIn.Button1Click(Sender: TObject);
begin
  sqlquery1.sql.Text:=('select LogIn, BenutzerID, AbteilungID, Passwort from Benutzer where LogIn=');
  sqlquery1.SQL.Add(#39+Benutzername.Text+#39);
  sqlquery1.Open;
  if not sqlquery1.Eof then
  begin
    showmessage(sqlquery1.fieldbyname('Passwort').asstring);
    if sqlquery1.FieldByName('Passwort').asstring = Passwort.Text then
      begin
        showmessage('Passwort Korrekt');
        menueunit.BenutzerID:=sqlquery1.fieldbyname('BenutzerID').asinteger;
        menueunit.AbteilungID:=sqlquery1.fieldbyname('AbteilungID').asinteger;
      end
    else
      showmessage('Benutzername oder Passwort ist nicht korrekt');
  end;
end;
Kannst Du mir in einem Satz sagen, was "sqlquery1.Eof" bedeutet?

Vielen Dank für die tolle Hilfe!

Ykcim

mkinzler 27. Aug 2008 19:38

Re: Verwedung des ErrorCodes
 
EOF steht für End Of File
Also solange Dateiende nicht erreicht ist. Habe nur das sqlquery1.Next vergessen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:57 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