Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Suche in der Datenban und Ausgabe im DBGrid??? (https://www.delphipraxis.net/52850-suche-der-datenban-und-ausgabe-im-dbgrid.html)

Mr_G 5. Sep 2005 19:58

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
:wall: :wall: :wall:
Verdammt... Dann muss ich mich verlesen haben. Aber wäre ja auch unlogisch wo man ja mit * arbeiten kann.

@ romber: :oops: Sry... Ist wohl schon zu spät für mich.

Sharky 5. Sep 2005 20:42

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

Zitat von Sharky
.. hast Du einmal versucht für die zweite "Like-Abfrage" einen eigenen Parameter anzugeben

Zitat:

Zitat von romber
Nee, geht auch nicht

Hai romber,
ich habe es jetzt einmal getestet. Wenn ich nur einen Parameter verwende wird dieser auch nur beim ersten vorkommen in der SQL-Abfrage gesetzt. Darum habe ich einen zweiten genommen und blubb es geht.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  with ADOQuery1 do
  begin
    Close;
    sql.Clear;
    s := '%' + Edit1.Text + '%';
    sql.Text := 'SELECT * FROM test1 ' + #10 +
      'WHERE ((LOWER(kn) LIKE :suche1)' + #10 +
      'OR (LOWER(name) LIKE :suche2))';
    ParamCheck := True;
    Parameters.ParamByName('suche1').Value := LowerCase(s);
    Parameters.ParamByName('suche2').Value := LowerCase(s);
    Open;
  end;
end;

romber 5. Sep 2005 23:13

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Hehe! Danke! Geht wunderbar! :thumb:
Würde mich aber noch interessieren, warum es mit dem selben Paramete nicht geht...

Mr_G 6. Sep 2005 06:46

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Ich nehme mal an das wenn er den Parameter ein mal gefunden und erstezt hat, er die Anfrage nicht weiter durchgeht...

Sharky 6. Sep 2005 07:14

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
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;
.

marabu 6. Sep 2005 09:29

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Hi Sharky,

Zitat:

Zitat von Sharky
Allerdings hat der Schlingel einen Fehler gemacht

das kommt davon, wenn ich meinen Code in den Beitragseditor schreibe und nebenher für die Firma DESDO arbeite...

Fröhliche Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz