Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Datensätze mit einem bestinmmten Wert ausgeben (https://www.delphipraxis.net/56372-sql-datensaetze-mit-einem-bestinmmten-wert-ausgeben.html)

berndberndbernd5b 4. Nov 2005 17:07

Datenbank: Access • Zugriff über: ODBC

SQL Datensätze mit einem bestinmmten Wert ausgeben
 
Hallo!
Ich möchte eine Suche erstellen

Wie kann ich alle Datensätze ausgeben, die einen bestimmten Wert beinhalten, aber in jedem Feld.

Also ich möchte die DB sequenziell durchsuchen.

Wie kann man das realisieren ?

Hansa 4. Nov 2005 17:19

Re: SQL Datensätze mit einem bestinmmten Wert ausgeben
 
mit :
SQL-Code:
where
Rest : steht in jedem Handbuch. :mrgreen:

berndberndbernd5b 4. Nov 2005 18:07

Re: SQL Datensätze mit einem bestinmmten Wert ausgeben
 
hi

klar das ist nicht das Problem.

ich möchte in jedem feld suchen.

also nicht

Select * From Tabelle Where Feld = Variable


Feld soll alle Felder sein. Ist halt wegen der Suche.
Ich habe eine Datenbank mit Kundendaten, wie Ort, Name ....
Der User soll dann z.B. den Namen eintippen können und der Datensatz soll erscheinen, wenn er den ort eingibt aber auch.

verstehst du, das ist mein problem.

kann man das irgendwie mit or oder so machen, Ka

alzaimar 4. Nov 2005 18:14

Re: SQL Datensätze mit einem bestinmmten Wert ausgeben
 
Kann man:
Delphi-Quellcode:
select * from Table where Feld1=:Foo or Feld2=:Foo or Feld3=:Foo

berndberndbernd5b 4. Nov 2005 18:20

Re: SQL Datensätze mit einem bestinmmten Wert ausgeben
 
jo ich versuch das mal

Danke

berndberndbernd5b 5. Nov 2005 09:34

Re: SQL Datensätze mit einem bestinmmten Wert ausgeben
 
jo klappt


so:
select * from Table where Feld1=Foo or Feld2=Foo or Feld3=Foo

Also ohne :, der meinte, dass ich dem Feld einen Typ zuweisen würde ...

Danke auf jedenfall

GuenterS 5. Nov 2005 09:43

Re: SQL Datensätze mit einem bestinmmten Wert ausgeben
 
Der ':' hätte besagt, dass dies ein Parameter ist, den Du im Programm dann über Query.ParamByName('Foo').AsString := 'blabla' hättest befüllen können (bevor du die Query aufmachst).

Sharky 5. Nov 2005 09:43

Re: SQL Datensätze mit einem bestinmmten Wert ausgeben
 
Zitat:

Zitat von berndberndbernd5b
... Also ohne :, der meinte, dass ich dem Feld einen Typ zuweisen würde ...

Hai Du,

mit dem Doppelpunkt wird in dem SQL-Query angezeigt das es sich dabei um einen Parameter handelt. Diesen musst Du nach dem setzen des Delphi-Referenz durchsuchenSQL.Text noch mit Werten füllen Delphi-Referenz durchsuchenParamByName.

Edit: Guenter war schneller

berndberndbernd5b 5. Nov 2005 10:56

Re: SQL Datensätze mit einem bestinmmten Wert ausgeben
 
ich hab anstatt Foo auch einfach die Variable genommen


Kannst du mir das mit den parametern erklären ?

GuenterS 5. Nov 2005 11:03

Re: SQL Datensätze mit einem bestinmmten Wert ausgeben
 
ok, ich mach eine kleine Procedure, als Beispiel...

ausgehend von folgender Tabellenstruktur der Tabelle Kunden

Code:
KundenID | KundenName
---------|-----------
   1     | Huber
   2     | Meier
   3     | Müller

Delphi-Quellcode:
function getKundenName(aKundenID: integer):string;
begin
   Result := '';
   with TQuery.Create(nil) do
   try
      DatabaseName := 'meineDatenbank';
      SQL.Text := 'SELECT KundenName FROM Kunden WHERE KundenID = :KID';
      ParamByName('KID').AsInteger := aKundenID;
      Open;
      if (not IsEmpty) then
         Result := FieldByName('KundenName').AsString;
      Close;
   finally
      Free;
   end;
end;
Natürlich hättest Du hier in diesem Beispiel auch schreiben können
Delphi-Quellcode:
function getKundenName(aKundenID: integer):string;
begin
   Result := '';
   with TQuery.Create(nil) do
   try
      DatabaseName := 'meineDatenbank';
      SQL.Text := Format('SELECT KundenName FROM Kunden WHERE KundenID = %d', [aKundenId]);
      Open;
      if (not IsEmpty) then
         Result := FieldByName('KundenName').AsString;
      Close;
   finally
      Free;
   end;
end;
Hätte hier das gleiche bewirkt.

berndberndbernd5b 5. Nov 2005 12:25

Re: SQL Datensätze mit einem bestinmmten Wert ausgeben
 
hi

sucht der damit alle Felder ab ???

Das mit dem Aufzählen ist ein wenig umständlich, aber es klappt :-)

GuenterS 5. Nov 2005 13:07

Re: SQL Datensätze mit einem bestinmmten Wert ausgeben
 
Nein, tut er nicht. Das wird auch mit 99%iger Wahrscheinlichkeit nicht so einfach gehen, müßtest halt für jedes Feld einen Parameter machen, könntest auch denselben verwenden, sofern die Feldtypen passen.

Das Beispiel, was ich weiter oben gepostet habe, war eben auch nur ein Beispiel, Du kannst die Where Clauseln ja leicht mit And oder or verknüpfen, wie es alzaimer noch weiter oben auch schon geschrieben hat. Ich wollte Dir nur die Verwendung von Parametern in einer Query zeigen.

Wenn Deine Query länger existiert als in dem Beispiel, vielleicht durch eine Komponente, machen Parameter natürlich mehr Sinn. Da brauchst dann nicht den SQL.Text Inhalt neu schreiben sondern einfach den Parameter also Dein Suchkriterien auf einen anderen Wert setzen und die Query neu aufmachen.

berndberndbernd5b 5. Nov 2005 13:26

Re: SQL Datensätze mit einem bestinmmten Wert ausgeben
 
jo


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 Uhr.

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