AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Abfrage: 2 Wörter in 2 Suchbegriffe wandeln
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage: 2 Wörter in 2 Suchbegriffe wandeln

Ein Thema von Plague · begonnen am 22. Mär 2004 · letzter Beitrag vom 5. Apr 2004
Antwort Antwort
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#1

SQL Abfrage: 2 Wörter in 2 Suchbegriffe wandeln

  Alt 22. Mär 2004, 21:05
Hallo,

ich habe ein Programm geschrieben bei dem ich eine MySQL Datenbank abfrage. Bei einem Begriff (wie einem Vornamen) klappt es, wenn ich jetzt aber sowohl Vorname und Nachname in die Suche eingebe, findet das Programm nichts, weil es in der SQL Tabelle sowohl eine Spalte für Vorname als auch Nachname gibt.
Gibt es eine Möglichkeit, das zu ändern? Das heißt, dass ich theoretisch 10 Wörter eingeben kann und alle Ergebnisse auf die alle 10 Vorgaben zutreffen (auch wenn es unterschiedliche Spalten sind) ausgegeben werden.

Danke
Thomas
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: SQL Abfrage: 2 Wörter in 2 Suchbegriffe wandeln

  Alt 22. Mär 2004, 21:25
SQL-Code:
SELECT * FROM users
WHERE (vorname LIKE "petra")
AND (nachname LIKE "krautwickel")
AND (wohnort LIKE "hamburg")
So? Dann müsstest Du den String halt gemäß Deinen Infos zusammenbauen.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#3

Re: SQL Abfrage: 2 Wörter in 2 Suchbegriffe wandeln

  Alt 23. Mär 2004, 01:38
TQuery auf Form (oder TADOQuery o.ä.), dessen SQL-Eigenschaft folgende Abfrage enthält:

SQL-Code:
SELECT *
  FROM user
 WHERE ( vorname like :vorname
       OR :vorname IS NULL)
   AND ( name like :name
       OR :name IS NULL)
   AND ( plz = :plz
       OR :plz IS NULL)
   AND ( geburtstag = :geburtstag
       OR :geburtstag IS NULL)
Mit folgendem Code kannst Du Dir die Suche komfortabler machen:
Such-Edits auf das Form für jedes durchsuchbare Feld
und einen Suchen-Button, dessen Onclick auf "SuchenClick" verweist.
Delphi-Quellcode:
Procedure TForm1.SuchenClick(Sender: TObject);
begin
  DeineQuery.DisableControls; // damit der Suchvorgang nicht in den
                              // DataAwareControls auf Form sichtbar wird
  if DeineQuery.Active
    then DeineQuery.Close;
  DeineQuery.Prepare;
  if EditVorname.Text = '
    then DeineQuery.ParamByName('vorname').Clear // wenn kein Suchbegriff in SuchEdit
                                                 // dann Parameter auf NULL setzen
    else DeineQuery.ParamByName('vorname').AsString := '''%'+EditVorname.Text+'%''';
  if EditName.Text = '
    then DeineQuery.ParamByName('name').Clear
    else DeineQuery.ParamByName('name').AsString := '''%'+EditNorname.Text+'%''';
  if EditPLZ.Text = '
    then DeineQuery.ParamByName('plz').Clear
    else DeineQuery.ParamByName('plz').AsInteger := StrToInt(EditPlz.Text);
  if EditGeburtstag.Text = '
    then DeineQuery.ParamByName('geburtstag').Clear
    else DeineQuery.ParamByName('geburtstag').AsDateTime := StrToDate(EditGeburtstag.Text);
  DeineQuery.Open;
  DeineQuery.EnableControls; // Anzeige in Form wieder aktivieren
end;
Nun kannst Du ein und die selbe Query für verschiedene Varianten benutzen (1-x Suchworte). Du mußt nur noch dafür sorgen, das der Suchen-Button nur "Enabled" ist, wenn mindestens ein Suchkriterium angegeben wurde (ein Suchedit.Text <> ''), wenn Du nicht auch die Möglichkeit haben möchtest, alle Datensätze anzuzeigen.
Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: SQL Abfrage: 2 Wörter in 2 Suchbegriffe wandeln

  Alt 23. Mär 2004, 01:49
und dann würde ich noch case benutzen. 8) Der Übersichtlichkeit wegen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#5

Re: SQL Abfrage: 2 Wörter in 2 Suchbegriffe wandeln

  Alt 23. Mär 2004, 03:01
im SQL-Statement kein case, weil MySQL AFAIK kein Case unterstützt, im Delphi-Code kein case, da case immer nur einen "Ast" ausführt - es sollen aber alle parameter entweder "genullt" oder gesetzt werden.
Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: SQL Abfrage: 2 Wörter in 2 Suchbegriffe wandeln

  Alt 23. Mär 2004, 08:34
Da sind wohl ein paar Semikolon zuviel...

Ob das AsInteger := Date wirklich immer funktioniert, ... hmmm .
Zum Beispiel werden in Oracle Datumsfelder nicht als fortlaufende Zahl, sondern in mehreren Bytes gespeichert.
Ich werd's gleich mal testen...
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#7

Re: SQL Abfrage: 2 Wörter in 2 Suchbegriffe wandeln

  Alt 23. Mär 2004, 15:03
War wohl doch schon ein bisserl spät Gestern .
Hab's editiert - sollte nun so gehen.
Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#8

Re: SQL Abfrage: 2 Wörter in 2 Suchbegriffe wandeln

  Alt 23. Mär 2004, 15:08
Es gibt auch "Query.Parameters.Clear" danach ein "Prepared := True;" und du kannst die Werte ohne Altlasten vergeben.
  Mit Zitat antworten Zitat
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#9

Re: SQL Abfrage: 2 Wörter in 2 Suchbegriffe wandeln

  Alt 5. Apr 2004, 14:13
@ Daniel und Leuselator

Beide Codes funktionieren leider nicht.
Das Programm wird zwar compilt aber es kommt (egal was man sucht) kein Ergebnis. Auch ein SQL-Fehler tritt nicht auf.

Gruß
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:32 Uhr.
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