Entwickler-Ecke

Datenbanken - SQL-Abfragen in Quelltext integrieren


Anonymous - So 17.11.02 04:55
Titel: SQL-Abfragen in Quelltext integrieren
Guten Morgen allerseits,

ich möchte in mein Delphi-Programm eine Suchfunktion integrieren. Einfach SQL-Abfragen beherrsche ich ja:

SELECT * FROM buecher WHERE (Titel = 'Der Geschichtenerzähler') AND (Autor = 'Jostein Gaarder');
So, diese Abfrage würde auch zum gewünschten Ergebnis führen.

Nur leider ist es wenig sinnvoll eine Suchfunktion einzurichten, bei der man nach festgelegten Begriffen sucht. Und da fängts an: Ich habe zwei Edit-Felder angelegt, deren Inhalt ausgelesen werden soll (Start durch Button-Klick).
So, ich habe mir gedacht, die SQL-Abfrage könnte dafür so aussehen:
Query1.SQL.Text := 'SELECT * FROM buecher WHERE (Titel = '+Edit1.Text+') AND (Autor = '+Edit2.Text+')';
Naja, geht halt nicht...

Aber da ich mir sicher bin, dass ich hier im Forum auf erfahrene, versierte Programmierer treffe, wird mir sicherlich geholfen! :P


Hagbard Celine - So 17.11.02 09:49
Titel: Re: SQL-Abfragen in Quelltext integrieren
Kuckuckskind hat folgendes geschrieben:
Guten Morgen allerseits,

ich möchte in mein Delphi-Programm eine Suchfunktion integrieren. Einfach SQL-Abfragen beherrsche ich ja:

SELECT * FROM buecher WHERE (Titel = 'Der Geschichtenerzähler') AND (Autor = 'Jostein Gaarder');
So, diese Abfrage würde auch zum gewünschten Ergebnis führen.

Nur leider ist es wenig sinnvoll eine Suchfunktion einzurichten, bei der man nach festgelegten Begriffen sucht. Und da fängts an: Ich habe zwei Edit-Felder angelegt, deren Inhalt ausgelesen werden soll (Start durch Button-Klick).
So, ich habe mir gedacht, die SQL-Abfrage könnte dafür so aussehen:
Query1.SQL.Text := 'SELECT * FROM buecher WHERE (Titel = '+Edit1.Text+') AND (Autor = '+Edit2.Text+')';
Naja, geht halt nicht...

Aber da ich mir sicher bin, dass ich hier im Forum auf erfahrene, versierte Programmierer treffe, wird mir sicherlich geholfen! :P


Das stimmt fast !

Diese Anweisung erzeugt diesen String (Edit Texte wie oben!!!) :

Query1.SQL.Text := 'SELECT * FROM buecher WHERE (Titel = '+Edit1.Text+') AND (Autor = '+Edit2.Text+')';


SELECT * FROM buecher WHERE (Titel = Der Geschichtenerzähler) AND (Autor = Jostein Gaarder)!!!!!!!!!!!!

Den Fehler hatte ich auch! bei mySQL musst Du auf jeden Fall die Hochkomma zusätzlich einfügen!!!!

dazu verwende einfach chr(39)!!!!

Also :

Query1.SQL.Text := 'SELECT * FROM buecher WHERE (Titel = '+ chr(39) +Edit1.Text+chr(39)+') AND (Autor = '+chr(39)+Edit2.Text+chr(39)+')';


Cashels - So 17.11.02 12:56

Hey,

benutze doch die Params Eigenschaft deiner TQuery Komponente aus. Als SQL Anfrage gibts du folgendes an:

Quelltext
1:
SELECT * FROM buecher WHERE (Titel = :titel) AND (Autor = :autor)                    


Mit Query.ParamByName('Autor').AsString := 'Mayer-Kukkuk'
setzt du die Parameter. Danach einfach die Query wie gewohnt öffnen.

Gruss,
Tom


UGrohne - So 17.11.02 17:32

Oder Du setzt die Hochkommata einfach rein, sieht zwar anfangs gewöhnungsbedürftig aus, aber es geht:

Quelltext
1:
'SELECT * FROM buecher WHERE (Titel = '''+Edit1.Text+''') AND (Autor = '''+Edit2.Text+''')                    

Die ersten zweo Hochkommata stellen eins dar (weil sonst wärs ja ein String-Ende, das dritte repräsentiert das String-Ende.

Gruß


Alfons-G - Mo 18.11.02 15:32

:wave:
Am einfachsten ist die Funktion QuotedStr... WHERE (FELDNAME = ' + QuotedStr(Edit1.Text) + ') AND (...Das ist übersichtlich und man sieht sofort, der String ist in Hochkommas.

:idea:


Anonymous - Mo 18.11.02 16:32

Hi,

vielen, vielen Dank für die Hilfe! :D