Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Suchfunktion (https://www.delphipraxis.net/107914-suchfunktion.html)

Delphi-Verrückter 4. Feb 2008 15:51

Datenbank: Microsoft Access • Version: 2003 • Zugriff über: ADO

Suchfunktion
 
Hi
Ich habe mir mal einen kleinen Vokabel Trainer programmiert und jetzt wollste ich noch ein Lexikon einbauen.
Mein Problem ist, dass ich nicht weiß, wie man nach Teilworten oder Buchstaben sucht. Nach dem vollständigen Wort kann ich suchen aber nach z.B. wenn ich "do" eingebe alle begriffe kommen in dem Fall zum beispiel dog,dome, ...
MfG J.-H. D.

Die Muhkuh 4. Feb 2008 15:52

Re: Suchfunktion
 
Hi,

SQL-Code:
SELECT * FROM Tabelle WHERE Feld LIKE "bla%"
Das Prozentzeichen dient als Platzhalter (wie z.B. der *). Bei dieser SQL-Abfrage würde alles gefunden werden, was mit bla anfängt.

Delphi-Verrückter 4. Feb 2008 15:55

Re: Suchfunktion
 
Ich hab es im Moment so :
Delphi-Quellcode:
ADOquery2.SQL.Text:= 'Select Franz from franz where ID= :suchwert'
Und jetzt soll ich es so machen :
Delphi-Quellcode:
ADOquery2.SQL.Text:= 'Select Franz from franz where ID like suchwert'
???? ne das is bestimmt falsch


Ich benutze ADO

Die Muhkuh 4. Feb 2008 15:58

Re: Suchfunktion
 
Delphi-Quellcode:
ADOquery2.SQL.Text:= 'Select Franz from franz where ID LIKE :suchwert';
AdoQuery2.ParamByName('suchwert').AsString := Edit1.Text + '%';
so z.B.

DeddyH 4. Feb 2008 16:00

Re: Suchfunktion
 
So hast Du es doch schon richtig, da fehlt nur die Parameterübergabe.
Delphi-Quellcode:
ADOquery2.Parameters.ParamByName('suchwert').AsString := irgendwas + '%';
Ich weiß nicht, ob das korrekte ADO-Syntax ist, aber im Wesentlichen sollte das schon so stimmen.

Delphi-Verrückter 4. Feb 2008 16:03

Re: Suchfunktion
 
Was bedeutet das ('suchwert')--->.AsString := Edit1.Text + '%'; <--- ?? und wofür steht das " '%' "

dumme Frage nebenbei : wie stell ich mein Label so ein, dass es den inhalt, der sich ändert immer mittig darstellt
z.B. wenn da
Delphi-Quellcode:
Haus
steht soll die mitte genau die position haben wie wenn da
Delphi-Quellcode:
Riesenbier
steht ??

DeddyH 4. Feb 2008 16:07

Re: Suchfunktion
 
Du hast doch im SQL den Parameter :suchwert definiert. Dieser wird mit der Zuweisung ParamByName('suchwert').AsString mit einem String befüllt (die ' außenrum kommen dann automatisch). Und das %-Zeichen ist in SQL ein Platzhalter für beliebig viele Zeichen (so wie * unter Windows).

Die Muhkuh 4. Feb 2008 16:08

Re: Suchfunktion
 
Das

Delphi-Quellcode:
...('suchwert').AsString := Edit1.Text + '%';
bedeutet, dass Du dem Parameter suchwert (genauer der Parameter :suchwert in der SQL-Abfrage), einen String mit dem Text aus Edit1 zuweist. Zusätzlich wird noch ein % angehängt, der eben dafür sorgt, dass bei einer Eingabe von Haus auch Haustür, Haustor, Haushund gefunden wird.

Zur "dummen Frage": ;)

Setz die Eigenschaft des Labels AutoSize auf false und Alignment auf taCenter.

[edit] Mist, jetzt war der "Hund" doch schneller :stupid: [/edit]

Delphi-Verrückter 4. Feb 2008 16:16

Re: Suchfunktion
 
Danke ich probiers aus ...

Delphi-Verrückter 4. Feb 2008 16:30

Re: Suchfunktion
 
Also könnte ich einfach so machen
Delphi-Quellcode:
...('suchwert').AsString := '%' + Edit1.Text + '%';

Die Muhkuh 4. Feb 2008 16:33

Re: Suchfunktion
 
Ja

Delphi-Verrückter 4. Feb 2008 16:40

Re: Suchfunktion
 
und wie kann ich bei buttons autosize anstellen ??

DeddyH 4. Feb 2008 16:43

Re: Suchfunktion
 
Zitat:

Zitat von Die Muhkuh
[edit] Mist, jetzt war der "Hund" doch schneller :stupid: [/edit]

:P

Buttons kennen kein Autosize.

[edit]
Zitat:

...('suchwert').AsString := '%' + Edit1.Text + '%';
Das ist allerdings extrem unperformant, da hier kein Index greifen kann. [/edit]

Die Muhkuh 4. Feb 2008 16:45

Re: Suchfunktion
 
Zitat:

Zitat von Delphi-Verrückter
und wie kann ich bei buttons autosize anstellen ??

Du hast vorher von Labels geredet, nicht von Buttons. :gruebel:

Delphi-Verrückter 4. Feb 2008 16:53

Re: Suchfunktion
 
Ich hab ein Label Auf dem die gefragte vokabel steht und buttons auf denen die multiple choise fragen kommen leider sind die Buttons manchmal nicht lang genug und deswegen autosize :-D

Und nochwas die random funktion generiert bei mir immer die gleichen zahlen ichab sie so :
Delphi-Quellcode:
variable:=random(200)+1
und danke das du mir hilfst :):)

Die Muhkuh 4. Feb 2008 16:57

Re: Suchfunktion
 
Hi,

Du musst natürlich noch den Zufallsgenerator anwerfen, das geht per randomize(); Aber Achtung, randomize sollte nur einmal aufgerufen werden. Hier eignet sich sehr das Ereignis "OnCreate" Deines Formulars.

Delphi-Verrückter 4. Feb 2008 17:03

Re: Suchfunktion
 
Ich bin soooo dumm das weiß ich doch :)
Und wie ists mit sowas wie autosize bei buttons ?

Die Muhkuh 4. Feb 2008 17:08

Re: Suchfunktion
 
Gar nicht bzw. selbst nachrüsten.

Delphi-Quellcode:
Canvas.TextWidth('Text');
und

Delphi-Quellcode:
Button.Width := 100;
sollten hier weiterhelfen ;)

Delphi-Verrückter 4. Feb 2008 20:03

Re: Suchfunktion
 
Danke @all hat alles funktoniert

Delphi-Verrückter 10. Mai 2008 13:07

Re: Suchfunktion
 
Hi, ich hab das alles noch einmal ausprobiert, aber mein delphi kennt den ausdruck "AsString" nicht. Ic habs mit delphi 2007,Turbo Delphi und delphi 7 ausprobiert die sagen alle :undefinierter bezeichner 'AsString'

kann mir da noch mal einer helfen ?? :?: :(

Die Muhkuh 10. Mai 2008 14:09

Re: Suchfunktion
 
Zeig mal den Aufruf.

DeddyH 10. Mai 2008 14:16

Re: Suchfunktion
 
Nimm mal Value statt AsString (Sch**ß ADO).


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 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