Einzelnen Beitrag anzeigen

Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#25

Re: Suche in der Datenban und Ausgabe im DBGrid???

  Alt 6. Sep 2005, 07:14
Hai,

ich habe mir das jetzt einmal angesehen.
Das Problem bei der sache ist, wie schon angedeutet wurde, das Delphi-Referenz durchsuchen.ParamByName. Diese Funktion sucht in der Parameterliste nach dem übergebenen Parametername. Beim ersten Auffinden wird das Value gesetzt und dann die Funktion verlassen. Daher das Problem das folgende Parameter mit der gleichen Bezeichnung nicht mit Werten gefüllt werden.

marabu hatte dafür eine "Lösung" gepostet in dem er auf ParamByName verzichtet und die Paramterliste einfach durchgeht und jedem das selbe Value zuweisst.

Allerdings hat der Schlingel einen Fehler in gemacht
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: String;
  i: Integer;
begin
  with ADOQuery1 do
  begin
    Close; // muss sein
    s := '%' + AnsiLowercase(Edit1.Text) + '%';
    sql.Clear;
    sql.Add('SELECT * FROM KUNDEN WHERE LOWER(kn) LIKE :suche ');
    sql.Add('OR LOWER(xy) LIKE :suche ');
    sql.Add('OR LOWER(yz) LIKE :suche ');
    for i := 0 to [b][color=red]ParamCount[/color][/b] - 1 do
      Parameters.Items[i].Value := s;
    open;
  end;
end;
ParamCount liefert nämlich nicht die Anzahl der Parameter in der Parameterliste des Querys sondern die Anzahl der Parameter welche dem Programm übergeben wurden (zB: Programm.exe /1 /2 /3 ).
In diesem Fall müsste der Code so aussehen um das gewünschte Ergebniss zu bekommen:
Code:
.
    for i := 0 to [b][color=red]Parameters.Count[/color][/b] - 1 do
      Parameters.Items[i].Value := s;
.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat