Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Abfragefehler bei mehreren Einträgen (https://www.delphipraxis.net/119764-abfragefehler-bei-mehreren-eintraegen.html)

Gehstock 31. Aug 2008 08:24

Datenbank: Access • Version: 2007 • Zugriff über: ADO

Abfragefehler bei mehreren Einträgen
 
Delphi-Quellcode:
  Account := edAccName.Text;
    ADOQuery1.Close;
    ADOQuery1.SQL.Text := 'select * from Accounts';
    ADOQuery1.Open;
     While Not ADOQuery1.Eof do
      begin
        if ADOQuery1.FieldByName('Name').AsString =(Account) then
           Checker := ADOQuery1.FieldValues['PW'] else
            Begin
             ShowMessage('Account existiert nicht');
             Exit;
            End;
           ADOQuery1.Next;
      end;
befindet sich nur ein Account in der Tabelle dann klappt alles bei mehreren Accounts sehe ich egal für welchen immer nur Account existiert nicht

Bernhard Geyer 31. Aug 2008 08:28

Re: Abfragefehler bei mehreren Einträgen
 
Dein Schleifenlogik ist vollkommen falsch, da du sobald der erste Record nicht dem gewünschten entspricht du die Meldung bringst.
Ich würde es so machen:

Delphi-Quellcode:
ADOQuery1.SQL.Text := 'select * from Accounts where Name = :Name';
ADOQuery1.ParamByName('Name').AsString := Account;
ADOQuery1.Open;
if ADOQuery1.EOF then //EOF = True wenn keine Datensatz in Ergebnismenge vorhanden.
  ShowMessage('Account existiert nicht');

DeddyH 31. Aug 2008 09:03

Re: Abfragefehler bei mehreren Einträgen
 
Wäre es nicht performanter, die Anzahl der passenden Datensätze abzufragen?
SQL-Code:
SELECT COUNT(1) AS Anzahl
FROM Accounts
WHERE Name=:name
Nun muss man nur noch schauen, ob Anzahl > 0 ist.

Bernhard Geyer 31. Aug 2008 09:56

Re: Abfragefehler bei mehreren Einträgen
 
Zitat:

Zitat von DeddyH
Wäre es nicht performanter, die Anzahl der passenden Datensätze abzufragen?
SQL-Code:
SELECT COUNT(1) AS Anzahl
FROM Accounts
WHERE Name=:name
Nun muss man nur noch schauen, ob Anzahl > 0 ist.

Hast du denn meinen Beitrag angeschaut :gruebel:

DeddyH 31. Aug 2008 10:04

Re: Abfragefehler bei mehreren Einträgen
 
Ja schon, aber ich habe irgendwie noch im Hinterkopf, dass das Abfragen aller Felder aller passenden Datensätze nicht besonders performant gegenüber einer Aggregatfunktion sein soll. Ich kann mich natürlich auch irren.

mkinzler 31. Aug 2008 10:06

Re: Abfragefehler bei mehreren Einträgen
 
Die Abfrage sollte eigentlich nur einen Eintrag liefern (sonst wäre etwas falsch). Natürlich könnte man sich auf die benötigten Felder bewschränken

DeddyH 31. Aug 2008 10:08

Re: Abfragefehler bei mehreren Einträgen
 
:oops: Sry, habe das mit der Eindeutigkeit übersehen.


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