AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi memo Feld in Datenbank durchsuchen
Thema durchsuchen
Ansicht
Themen-Optionen

memo Feld in Datenbank durchsuchen

Ein Thema von Jacuzzi · begonnen am 18. Jan 2007 · letzter Beitrag vom 24. Jan 2007
Antwort Antwort
Seite 2 von 2     12   
Jacuzzi

Registriert seit: 31. Aug 2005
20 Beiträge
 
Delphi 7 Professional
 
#11

Re: memo Feld in Datenbank durchsuchen

  Alt 18. Jan 2007, 09:49
okay

Auch wenn ich in der BDE dafür gar keinen Eintrag hab?



Das hier geht auch nich:

Delphi-Quellcode:
   
Form1.Query1.Active := False;
Form1.Query1.SQL.Text := 'SELECT * FROM problemloesung WHERE titel LIKE "sfilter" OR problem LIKE "sfilter" OR loesung LIKE "sfilter"';
Form1.Query1.Active := True; // "Fehler: Variante des Typs (Null) konnt nich in den Typ (String) konvertiert werden."
Hannes
  Mit Zitat antworten Zitat
Gerous

Registriert seit: 8. Okt 2006
Ort: Wurzbach
4 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: memo Feld in Datenbank durchsuchen

  Alt 18. Jan 2007, 10:21
Das Ganze ist doch schon fast richtig

probiers mal so:

Form1.Query1.SQL.Text := 'SELECT * FROM problemloesung WHERE titel LIKE ''%' + sfilter + '%'' OR problem LIKE ''%' + sfilter + '%'' OR loesung LIKE ''%' + sfilter + '%''';
Robin Britzkow
  Mit Zitat antworten Zitat
Jacuzzi

Registriert seit: 31. Aug 2005
20 Beiträge
 
Delphi 7 Professional
 
#13

Re: memo Feld in Datenbank durchsuchen

  Alt 18. Jan 2007, 10:31
Super, das hab ich jetzt kurz vorher auch schon rausgefunden
Aber trotzdem Danke.


Delphi-Quellcode:
Form1.Query1.Active := False;
Form1.Query1.SQL.Text := 'SELECT * FROM problemloesung WHERE titel LIKE ''%' + sfilter + '%'' OR problem LIKE ''%' + sfilter + '%'' OR loesung LIKE ''%' + sfilter + '%''';
Form1.Query1.Active := True;

while not Form1.Query1.Eof do
begin
  Form1.lb_titel.Items.Add(Form1.Query1.FieldValues['titel']);
  Form1.Query1.Next;
end;
Nochmal zusammenfassend zum Quellcode:
- Volltextsuche der Query in der db
- gefundene Einträge in Listbox schreiben
Hannes
  Mit Zitat antworten Zitat
Jacuzzi

Registriert seit: 31. Aug 2005
20 Beiträge
 
Delphi 7 Professional
 
#14

Re: memo Feld in Datenbank durchsuchen

  Alt 23. Jan 2007, 10:53
So, weiter gehts


Ich suche in den "Titeln" nach verschiedenen Strings -> AND-verknüpft
funkioniert alles soweit:

Delphi-Quellcode:
   
Query1.SQL.Text := 'SELECT * FROM ''' + DB_NAME + ''' WHERE (titel LIKE ''%' + fwoerter[1] + '%'')
AND (titel LIKE
''%' + fwoerter[2] + '%'')';

Jetzt will ich aber bestimmte Zeichen von der Suche ausschließen -> also AND-NOT-verknüpft
funktioniert NICHT:

Bsp: "1" und "2" finden, welche keine "3" enhalten

Delphi-Quellcode:
   
Query1.SQL.Text := 'SELECT * FROM ''' + DB_NAME + ''' WHERE (titel LIKE ''%' + fwoerter[1] + '%'')
AND (titel LIKE
''%' + fwoerter[2] + '%'')
AND NOT (titel LIKE
''%' + fwoerter[3] + '%'')';

Kann ich das überhaupt mit SQL realisieren?
Wie mach ich das?


Jacuzzi.
Hannes
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#15

Re: memo Feld in Datenbank durchsuchen

  Alt 23. Jan 2007, 11:55
Hallo,
versuch es einmal mit zusätzlichen Klammern.
Delphi-Quellcode:
Query1.SQL.Text := 'SELECT * FROM ''' + DB_NAME + ''' WHERE (titel LIKE ''%' + fwoerter[1] + '%'')
AND (titel LIKE
''%' + fwoerter[2] + '%'')
AND ( NOT (titel LIKE
''%' + fwoerter[3] + '%'') )';
Es sollte grundsätzlich mit SQL möglich sind. Wenn Du Pech hast, überschreitest Du allenfalls die Fähigkeiten von LocalSQL.

Gruß Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#16

Re: memo Feld in Datenbank durchsuchen

  Alt 23. Jan 2007, 12:33
Hallo Hannes,

das NOT gehört in LocalSQL zum LIKE:

... AND titel NOT LIKE :titel ... Grüße vom marabu
  Mit Zitat antworten Zitat
Jacuzzi

Registriert seit: 31. Aug 2005
20 Beiträge
 
Delphi 7 Professional
 
#17

Re: memo Feld in Datenbank durchsuchen

  Alt 24. Jan 2007, 08:42
@ marabu
So funktioniert das leider nicht.

Bei mir klappt das nur so:
Delphi-Quellcode:
      
// erster zu suchender String
Query1.SQL.Text := 'SELECT * FROM ''' + DB_NAME + ''' WHERE (titel LIKE ''%' + fwoerter[0] +
  '%'' OR problem LIKE ''%' + fwoerter[0] + '%'' OR loesung LIKE ''%' + fwoerter[0] + '%'')';

// weitere zu suchende Strings (anfügen)
for i := 1 to length(fwoerter)-1 do
  Query1.SQL.Text := Query1.SQL.Text + ' AND (titel LIKE ''%' + fwoerter[i] +
    '%'' OR problem LIKE ''%' + fwoerter[i] + '%'' OR loesung LIKE ''%' + fwoerter[i] + '%'')';

// auszuschließende Strings (anfügen)
for i := 0 to length(fwoerter_)-1 do
  Query1.SQL.Text := Query1.SQL.Text + ' AND (NOT (titel LIKE ''%' + fwoerter_[i] +
    '%'' OR problem LIKE ''%' + fwoerter_[i] + '%'' OR loesung LIKE ''%' + fwoerter_[i] + '%''))';
So funktioniert das aber auch nur wenn ich nur einen String ausschließe...
wenn ich zwei oder mehrere Strings auschließen will, dann wird alles rausgefiltert.
Liegt wahrscheinlich daran, dass es dann so aussieht:

AND (NOT (... OR ...)) AND (NOT (... OR ...))

wobei es aber bei mehreren Ausschließungen sicher so sein müsste:

AND (NOT (... OR ... OR ... OR ...))


Hannes
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#18

Re: memo Feld in Datenbank durchsuchen

  Alt 24. Jan 2007, 13:53
Hallo,

dein Fall ist tatsächlich etwas komplizierter. Ich habe dir mal eine Demo angehängt, die dir den Ansatz über eine konjunktive Normalform zeigt.

Freundliche Grüße
Angehängte Dateien
Dateityp: zip sql-gen_921.zip (2,3 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Jacuzzi

Registriert seit: 31. Aug 2005
20 Beiträge
 
Delphi 7 Professional
 
#19

Re: memo Feld in Datenbank durchsuchen

  Alt 24. Jan 2007, 14:53
Vielen Dank!

Dein Programm ist sicherlich funktionsfähig und durchdacht, aber für mich undurchsichtig.

Ich hab mir da jetzt schon selber was gebastelt, sicherlich für Außenstehende auch nich ganz durchsichtig, aber funktionell.
Für alle die es interessiert, hier mein Proggie.



MfG Jacuzzi.
Angehängte Dateien
Dateityp: rar problemloesung_475.rar (4,7 KB, 5x aufgerufen)
Hannes
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 02:18 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