Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

marabu 5. Sep 2005 19:15

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Der Fehler liegt dann aber nicht an diesem Code. Kannst du mal beschreiben was nicht tut?

marabu

romber 5. Sep 2005 19:24

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Ich habe in einer Tabelle fünf Spalten:

kn
name
vorname
plz
ort

Dann ist ein Edit-Feld auf der Form. Ich möchte, dass alle funf Spalten auf den Inhalt dieses Edit-Feldes durchgesucht werden und die Treffer im DBGrid landen, wobei das zweite kein Problem ist. Bis jetzt, egal wie ich die WHERE-Teil aufbaue und wieviele SQL.Add() ich da einfüge, wird nur die Spalte "kn" durchgesucht, obwohl SQL-Syntax

SQL-Code:
...WHERE (LOWER(kn) LIKE :suche) OR (LOWER(name) LIKE :suche) OR (LOWER(vorname) LIKE :suche)...
schon richtig sein sollte. Was denn nun?

marabu 5. Sep 2005 19:27

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Dein SELECT Statement interessiert mich weniger, zeige mal den Code, mit dem du momentan testest.

marabu

romber 5. Sep 2005 19:30

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Delphi-Quellcode:
with ADOQuery1 do
  begin
    active := false;
    sql.clear;
    s := '%' + Edit1.Text + '%';
    sql.add('SELECT * FROM KUNDEN WHERE (LOWER(kn) LIKE :suche) OR (LOWER(name) LIKE :suche)');
    ParamCheck := true;
    Parameters.ParamByName('suche').Value := LowerCase(s);
    active := true;
    open;
  end;

Mr_G 5. Sep 2005 19:37

Re: Suche in der Datenban und Ausgabe im DBGrid???
 
Da du ja alle Felder auf ein und den selben Inhalt durchsuchst und die ja vom Inhalt ziemlich verschieden sind würde ich statt LIKE mal IN nehmen.

romber 5. Sep 2005 19:38

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

Zitat von Mr_G
Da du ja alle Felder auf ein und den selben Inhalt durchsuchst und die ja vom Inhalt ziemlich verschieden sind würde ich statt LIKE mal IN nehmen.

Wie würde es dann aussehen?

marabu 5. Sep 2005 19:44

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

dein Code enthält nicht die Änderungen, die ich dir empfohlen habe - bist du beratungs-resistent? Durch die mehrfache Verwendung des Parameters :suche kannst du den nicht mehr über den Namen ansprechen, denn jeder Parameter wird in der parameters collection instanziiert. Deshalb mache ich das in einer Schleife. Und entscheide dich für Active True/False oder Open/Close, beides zusammen bringt nix.

marabu

Mr_G 5. Sep 2005 19:48

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

Zitat von romber
Zitat:

Zitat von Mr_G
Da du ja alle Felder auf ein und den selben Inhalt durchsuchst und die ja vom Inhalt ziemlich verschieden sind würde ich statt LIKE mal IN nehmen.

Wie würde es dann aussehen?

Ich denke so:
SQL-Code:
...WHERE (LOWER(kn) IN :suche) OR (LOWER(name) IN :suche) OR (LOWER(vorname) IN :suche)...
Aber marabu hat glaube ich Recht. Setz erstmal den Vorschlag von marabu um und wenn dann noch nicht das gewünschte Ergebnis kommt versuche es mit dem IN...

romber 5. Sep 2005 19:51

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

Zitat von marabu
..bist du beratungs-resistent?...

@marabu
Ich bin nicht beratungsresistent, ich freue mich sogar sehr, wenn die erfahrene Progger mir helfen. Ich habe dein Kode getestet und es wird sogar die Spalte "kn" nicht mehr durchgesucht. Auf jeden Fall, egal was ich in den Edit1 eingeben, wird nichts gefunden. Sicher hast du irgendwo ein kleines Fehlerchen :)

marabu 5. Sep 2005 19:52

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

das meinst du nicht wirklich - schau nochmal in die SQL reference.

Das hier wäre eine korrrekte Verwendung des IN Operators:

SQL-Code:
SELECT * FROM table WHERE icol IN (2,3,5,7,11,13)
Und das hier wäre noch eine:

SQL-Code:
SELECT * FROM kinder WHERE muetter_id IN (
  SELECT id FROM muetter WHERE haarfarbe = 'blond'
)
Freundliche Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:39 Uhr.
Seite 2 von 3     12 3      

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