Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Nur gesuchte Datensätze im DBGrid anzeigen (https://www.delphipraxis.net/167534-nur-gesuchte-datensaetze-im-dbgrid-anzeigen.html)

m-werk 4. Apr 2012 13:01

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
So, wenn ich beim Select nur einen Wert hernehme, also wenn ich alle OR weglasse, dann funktionierts.

Sobald ich aber mehrere Spalten abfragen möchte, dann kommt immer der 1. Datensazt mitangezeigt im DBGrid!

DeddyH 4. Apr 2012 15:58

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Was passiert denn, wenn Du das Statement mal direkt per SQL-Editor (welcher, hängt vom verwendeten DBMS ab) auf die DB loslässt?

p80286 4. Apr 2012 16:06

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Welche Daten stehen denn im 1. Datensatz?

Gruß
K-H

m-werk 10. Apr 2012 10:00

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Hallo, wenn ich in Access dieses Select ausführe:
Code:
SELECT * FROM kundendaten WHERE nachname LIKE 'Huber' OR telefon1 LIKE ''
dann kommen nur die beiden Datensätze, wo der Nachname "Huber" ist.

In Delphi kommt aber zusätzlich noch der 1. Datensatz. Der Innhalt ist aber ein ganz ein anderer.

Code:
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Text:='SELECT * FROM kundendaten WHERE nachname LIKE :name OR telefon1 LIKE :telefon1'; // OR telefon2 LIKE :telefon2';
  ADOQuery1.Parameters.ParamByName('name').Value := '%' + EditSearch.Text + '%';
  ADOQuery1.Parameters.ParamByName('telefon1').Value := '%' + EditSearch.Text + '%';
  ADOQuery1.Open;
  if ADOQuery1.Active then
   ADOQuery1.Refresh
  else
    ADOQuery1.Open;
end;

Valle 10. Apr 2012 10:11

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Das ist aber nicht das Query, welches von deinem Programm generiert wird. Dein Programm macht daraus

Code:
OR telefon1 LIKE '%%'
Und jetzt rate mal welche Datensätze darauf zutreffen.

Du musst also noch eine Abfrage machen, ob in den Edits überhaupt etwas drin steht.

Liebe Grüße,
Valentin

m-werk 10. Apr 2012 10:15

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Ja, aber es gibt NUR ein Edit-Feld. Dort wird entweder der Nachname oder die Telefonnummer eingetragen.
Also steht im Edit eigentlich IMMER was drinn!

vagtler 10. Apr 2012 10:18

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Zitat:

Zitat von m-werk (Beitrag 1160912)
Hallo, wenn ich in Access dieses Select ausführe:
Code:
SELECT * FROM kundendaten WHERE nachname LIKE 'Huber' OR telefon1 LIKE ''
dann kommen nur die beiden Datensätze, wo der Nachname "Huber" ist. [...]

Und was kommt bei
Code:
SELECT * FROM kundendaten WHERE nachname LIKE '%Huber%' OR telefon1 LIKE '%Huber%'
?

m-werk 10. Apr 2012 10:20

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Da kommen im Access auch nur jene beiden Datensätze, welche HUBER heißen,

m-werk 11. Apr 2012 11:19

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Komisch, heute hab ich es nochmal probiert und nun funktioniert es, ohne dass der 1. Datensatz auch erscheint.

Danke für die Hilfe

m-werk 11. Apr 2012 13:59

AW: Nur gesuchte Datensätze im DBGrid anzeigen
 
Ha, eine Frage hätte ich noch.

Ich hab versucht, eine MessageBox einzubauen, so dass diese Erscheint, wenn KEIN Kunde gefunden wurde. Leider schlug mein Versuch fehl, Da diese Messagebox immer wieder erscheint, obwohl ein Kunde gefunden wurde. Ich weiss nicht, wo ich meine Box hinsetzen muss!
Code:
procedure TForm1.BtnSearchClick(Sender: TObject);
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Text:='SELECT * FROM kundendaten WHERE nachname LIKE :name OR telefon1 LIKE :telefon1 OR telefon2 LIKE :telefon2';
  ADOQuery1.Parameters.ParamByName('name').Value := '%' + EditSearch.Text + '%';
  ADOQuery1.Parameters.ParamByName('telefon1').Value := '%' + EditSearch.Text + '%';
  ADOQuery1.Parameters.ParamByName('telefon2').Value := '%' + EditSearch.Text + '%';
  ADOQuery1.Open;
  if ADOQuery1.Active then
   ADOQuery1.Refresh
  else
    ADOQuery1.Open;
    MessageDlg('Der Kunde "' + EditSearch.Text + '" wurde leider nicht gefunden!', mtInformation,
    [mbOK],0);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:36 Uhr.
Seite 4 von 5   « Erste     234 5      

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