ADOQuery Datenabfrage

    ADOQuery Datenabfrage

    Guten Tag.
    Über eine Public Variable soll er nun den Namen aus der Datenbank nehmen und benutzen. Der SQL Code funktioniert auch, jedoch sagt er mir: "Es wurden 2 Parameter erwartet, aber zu wenige übermittelt".

    Delphi-Code

    1. ​function TF_Beverages.LoadUser;
    2. begin
    3. ADOQuery.SQL.Text := 'SELECT User FROM users WHERE userid = :userid';
    4. ADOQuery.Parameters.ParamByName('userid').Value := F_Accounts.UserID;
    5. ADOQuery.Open;
    6. lb_Account.Caption := ADOQuery.Fields[0].Text;
    7. end;


    Ich denke mal das Problem liegt bei ADOQuery.Fields[0].Text;
    Wie ist es so?

    Delphi-Code

    1. function TF_Beverages.LoadUser; //function ohne Rückgabe???
    2. begin
    3. ADOQuery.SQL.Text := 'SELECT User FROM users WHERE userid = :userid';
    4. ADOQuery.Parameters.ParamByName('userid').AsInteger := F_Accounts.UserID;
    5. ADOQuery.Open;
    6. if not ADOQuery.Eof then
    7. lb_Account.Caption := ADOQuery.Fields[0].AsString;
    8. ADOQuery.Close;
    9. end;
    10 Minuten Nachdenken ersparen oftmals 10 Stunden Fehlersuche.

    Delphi-Code

    1. .AsInteger
    , geht leider auch nicht. Also die Property steht gar nicht zur Verfügung.

    Rückgabewert werde ich nun ergänzen, da er nur diese Funktion ausführen soll, kann ich schlichtweg eine True/False als Rückgabewert einsetzen oder sollte ich dann einfach auf Procedure übergehen?
    Ggf. musst du noch den Parametertyp angeben

    Delphi-Code

    1. ADOQuery.SQL.Text := 'SELECT User FROM users WHERE userid = :userid';
    2. ADOQuery.Parameters.ParamByName('userid').DataType := ftInteger;

    Abgesehen davon, dass du deiner Funktion keinen Rückgabewert mitgibst, solltest du dir die Frage stellen, ob die übergebene UserId überhaupt existiert. Wenn nicht, erhältst du kein Ergebnis in deiner Query.

    DeddyH hat es mit der Abfrage nach "End of File" bereits gezeigt, ich bevorzuge hier die explizite Abfrage auf "Kein Ergebnis" (AdoQuery.IsEmpty).

    Grüße
    Mikhal
    Computer erleichtern die Arbeit -
    und die Welt ist eine Scheibe!