Autor Beitrag
patrick dee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 311

Win 98SE, WinXP
D3,D6
BeitragVerfasst: So 24.08.03 10:25 
hi,

ich brauche für meine adressen datenbank eine abfrage in SQL. und zwar soll in edit3 ein wort eingegeben werden. button suche starten. bisher habe ich diesen code :

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
[b][b]procedure TForm1.btnAbfrageClick(Sender: TObject);
begin
Query1.SQL.Clear;
 Query1.SQL.Add('Select * from raddr where Nachname Like' + #39#37 + edit3.text + #37#39 );
Query1.open;
  Query1.next;
   Form_Gefunden.ShowModal;
    Form1.Edit3.Clear;
      end;[/b][/b]


nun in diesem beispiel findet er alles unter Nachname.
PROBLEM :
er soll die ganze datenbank durchsuchen nach dem wort das in edit3 eingeben wurde und egal ob groß oder klein geschrieben.verwende vorname, nachname, amt/organisation/firma. im obigen beispiel muß das wort bzw. der erste buchstabe groß sein. also gebe ich müller ein mit kleinem m findet er nichts, gebe ich müller mit großen M ein geht es. Also kurz gesagt in edit3 eine wort eingeben egal ob groß oder klein geschrieben. such starten und in der gesamten datenbank wird gesucht wo das wort vorkommen tut und in einer dbgrid angezeigt die sich auf Form_Gefunden befindet.

hoffe jemand kann mir helfen

danke und einen schönen sonntag noch

euer

patrick

_________________
Glauben heißt nichts wissen ...
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: So 24.08.03 11:30 
Du mußt UPPER verwenden, also UPPER (Nachname) und hinter dem Like dasselbe. LOWER geht auch. Und was soll das #37#39 eigentlich ?

_________________
Gruß
Hansa
patrick dee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 311

Win 98SE, WinXP
D3,D6
BeitragVerfasst: So 24.08.03 12:21 
hi hansa

meinst du in etwas so :


ausblenden Quelltext
1:
Query1.SQL.Add('Select * from raddr where Upper(Nachname)Upper Like' + #39#37 + edit3.text + #37#39 );					


und wie muß ich es anstellen das das was in edit3 steht in der gesamten datenbank gesucht wird ???

danke

patrick

_________________
Glauben heißt nichts wissen ...
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: So 24.08.03 12:35 
ausblenden Quelltext
1:
UPPER (Nachname) LIKE UPPER (' + Edit3.text+')';					


Jetzt habe ich Dir den KOMPLETTEN Source verbessert. :!: :lol:

_________________
Gruß
Hansa
patrick dee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 311

Win 98SE, WinXP
D3,D6
BeitragVerfasst: So 24.08.03 12:51 
hi hansa

danke für deine hilfe aber das ist es nicht gesucht wird nur in der datenbank nachname, was ich suche ist eine weg in edit3 etwas eingeben suche drücken und dbgrid2 zeigt mir alle datensätze an worin das wort das in edit3 eingegeben wurde vorkommt. egal ob im nachname oder spalte firma oder vorname.

hoffe das es jetzt leichter zu verstehen ist was ich meine. habe mich evtl etwas blöd ausgedrückt.

danke

patrick

_________________
Glauben heißt nichts wissen ...
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: So 24.08.03 12:58 
Mit einem einfachen SQL-Befehl geht das net, aber
2 Möglichkeiten: Du baust alles im SQL-Statement zusammen:
ausblenden Quelltext
1:
SELECT * FROM tabelle WHERE ((UPPER(Nachname) LIKE '+QuotedStr(Edit3.text)+') OR (UPPER(Name) LIKE '+QuotedStr(Edit3.text)+') .....					


oder die besser: Du verwendest eine Stored Procedure, der Du nur einmal den Suchstring übergibst und die dann den obigen SQL-String zusammensetzt und ausführt. Code auf Anfrage :wink:
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: So 24.08.03 16:01 
Anfrage :P

_________________
Gruß
Hansa
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: So 24.08.03 18:18 
:lol: OK, jetzt mal ausm Kopp in die Tastatur gehämmert:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
CREATE PROCEDURE suche
(suchtext VARCHAR(100))
RETURNS
(feld1 typ1, feld2 typ2 ... //alle Tabellen Felder einfügen)
AS BEGIN
FOR
  SELECT feld1,feld2,feld3,.... 
    FROM tabelle WHERE (
    (UPPER(feld1) LIKE UPPER(:suchtext)) OR
    (UPPER(feld2) LIKE UPPER(:suchtext)) OR
    (UPPER(feld3) LIKE UPPER(:suchtext)) OR
    ...
    )
  INTO :feld1,:feld2,.....
  DO SUSPEND;
END
patrick dee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 311

Win 98SE, WinXP
D3,D6
BeitragVerfasst: Mo 25.08.03 06:10 
hi leute

danke für die tips, die allerdings mir nichts gebracht ahbe. habe das so probeirt und die fehlermeldungen die delphi da meldet würden reichen um ein telefonbuch zu füllen. arbeite mit delphi 3.
also ich muß mir da eine andere lösung einfallen lassen jedenfalls geht das ganze so nicht.

ciao

patrick :(

_________________
Glauben heißt nichts wissen ...
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 25.08.03 06:48 
Wenn es nur um Delphi-Fehler geht, dann sinds normalerweise Syntax-Fehler, poste doch mal den Code und die ersten 3 Fehler, der Rest sind meist nur Folgefehler :wink:
Pro_RJ
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

win2000;Win98
D4 Prof ; D5 Prof; D2006 Prof
BeitragVerfasst: Do 28.08.03 06:48 
Titel: SQL-Fehler
nun dein Statement müsste dann wenigstens etwar so sein:
...where Upper(Nachname) Like' + #39 + Uppercase(edit3.text) + #39 );

Damit schreibst du das was in der Db Steht Groß und was in Edit3 steht auch nur das von edit3 schreibt delphi groß und geht um einiges schneller als in SQL

die #39 ist nichts anderes als ein hochkomma (') SQL braucht es um Strings zu erkennen

Kleinner tip bei einer großen DB vermeide es dringend mit upper etwas zu suchen

bei etwar 100000 DS Kannst du dann getrost in Urlaub fahren bevor das Statement durch ist