Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi query rückgabe wert (https://www.delphipraxis.net/126941-query-rueckgabe-wert.html)

Delphi-Phil 5. Jan 2009 12:32

Datenbank: mysql • Zugriff über: ado

query rückgabe wert
 
Hallo Zusammen und ein frohes Neus Jahr,

ich habe eine ganz normale SQL Abfrage mit einer Query. Jetzt möchte ich prüfen ob die Query ein Ergebnis liefert oder nicht und dann soll eine if then anweisung kommen!

Wie prüfe ich ob ein Ergebnis aus der Query kommt??

DeddyH 5. Jan 2009 12:40

Re: query rückgabe wert
 
Entweder RecordCount auf > 0 prüfen oder eben schauen, ob EOF erreicht ist.

Delphi-Phil 5. Jan 2009 12:54

Re: query rückgabe wert
 
Aber bei Eof habe ich doch noch keinen Wert oder??

Nersgatt 5. Jan 2009 12:58

Re: query rückgabe wert
 
Zitat:

Zitat von Delphi-Phil
Aber bei Eof habe ich doch noch keinen Wert oder??

Wenn die Abfrage nichts liefert, steht der Zeiger sofort auf EOF.

Gruß,
Jens

Delphi-Phil 5. Jan 2009 13:59

Re: query rückgabe wert
 
irgendwie muss was falsch sein...

wie kommt meine fehlermeldung nicht???


Delphi-Quellcode:
//Fach hinzufügen
procedure TStammdaten.JvXPButton1Click(Sender: TObject);
var
Qry : TADOQuery;
QryFachVorhanden : TADOQuery;
SID : Integer;
FID : Integer;
KID : Integer;
begin

SID := QrySchueler.fieldbyname('ID').AsInteger;
FID := self.TblFaecher.fieldbyname('ID').AsInteger;
KID := Hauptform.QrySchueler.FieldByName('idKlasse').AsInteger;


//Abfragen ob Fach schon vorhanden
QryFachVorhanden := TADOQuery.Create(self);
QryFachVorhanden.Connection := HauptForm.ADOConnection1;
QryFachVorhanden.SQL.Text := 'select *from schueler_faecher where id_Schueler = :SID and id_Fach = :FID and id_Klasse = :KID';
QryFachVorhanden.Parameters.ParamByName('SID').Value := SID;
QryFachVorhanden.Parameters.ParamByName('FID').Value := FID;
QryFachVorhanden.Parameters.ParamByName('KID').Value := KID;
QryFachVorhanden.ExecSQL;
if QryFachVorhanden.Eof = true then

begin
Qry := TADOQuery.Create(self);
Qry.Connection := HauptForm.ADOConnection1;
Qry.SQL.Text := 'insert into schueler_faecher (id_Schueler,id_Fach,id_Klasse) values (:SID, :FID, :KID)';
Qry.Parameters.ParamByName('SID').Value := SID;
Qry.Parameters.ParamByName('FID').Value := FID;
Qry.Parameters.ParamByName('KID').Value := KID;
Qry.ExecSQL;
QryZugeFaecher.Close;
QryZugeFaecher.Open;
Qry.Free;
end
else
MessageDlg('Das Fach wurde schon zugeordnet.', mtError, [mbOK], 0);
end;

nahpets 5. Jan 2009 14:06

Re: query rückgabe wert
 
Hallo,

muss das nicht statt
Delphi-Quellcode:
QryFachVorhanden.ExecSQL;
Delphi-Quellcode:
QryFachVorhanden.Open;
heißen?
Du möchtest doch wissen, ob es etwas schon gibt oder eben nicht.
Versuch es doch mal mit:
Delphi-Quellcode:
QryFachVorhanden.SQL.Text := 'select Count(*) As Anzahl from schueler_faecher where id_Schueler = :SID and id_Fach = :FID and id_Klasse = :KID';
QryFachVorhanden.Open;
If QryFachVorhanden.FieldByName('Anzahl').AsInteger = 0 then
  // und hier dann weiter mit dem Insert...

Nersgatt 5. Jan 2009 14:16

Re: query rückgabe wert
 
Delphi-Quellcode:
QryFachVorhanden.SQL.Text := 'select *from schueler_faecher where id_Schueler = :SID and id_Fach = :FID and id_Klasse = :KID';
//                                    ^-- hier fehlt ne leerstelle
QryFachVorhanden.Parameters.ParamByName('SID').Value := SID;
QryFachVorhanden.Parameters.ParamByName('FID').Value := FID;
QryFachVorhanden.Parameters.ParamByName('KID').Value := KID;
//QryFachVorhanden.ExecSQL;
QryFachVorhanden.Open; //ExcecSQL nimmt man nur, wenn man keine Rückgabe erwartet (z.B. beim Insert).
...


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