Anweisung innerhalb des SQL-Strings
-
Hallo,
ich hole mir meine Daten über die DataSource1 in mein Query1 das ich wie folgt lade:
Select a,b,c From XY.DB Where a = ("Muster")And b Like ??
Bei ?? gebe ich z.B. ("Muster2") ein und es funktioniert. Wie ersetze ich ("Muster2")durch einen von der ComboBox1 gelieferten Wert. ComboBox1 befindet sich auf der Form.mfg
Traugott
-
Eine Möglichkeit wäre ein parametrisiertes Statement:
SELECT a, b, c FROM XY.DB WHERE b Like :PARAMETERWas dieses ("Muster") in Deinem Beispiel bedeuten soll, weiß ich nicht.

Die Parameter könntest Du beispielsweise im BeforeOpen-Ereignis setzen:
Query1->ParamByName("PARAMETER")->AsString = ComboBox1->Text;Alternativ kannst Du natürlich auch das Statement selbst zusammensetzen. Dann musst
Du natürlich beispielsweise darauf achten, Hochkommas (') innerhalb Strings zu verdoppeln.Gruß,
Alexander
-
Hallo,
über eine StringVariable in diesem Falle 'Parameter' habe ich es auch schon versucht, es funktioniert nicht. Was hier fehlt ist die genaue Einbindung des ComboBox1->Text in den SQLString. Gebe ich einen festen Wert wie z.B. Like ("Betthupferl") ein funktioniert es ; versuche ich die ComboBox so einzubinden ->Fehlanzeige.
Was habe ich vielleicht vergessen oder noch besser zeigt mir ein Codeschnipsel.mfg
Traugott
-
Noch mehr Codeschnipsel, als das, was Alexander gepostet hat, sind nicht nötig. Überprüf mal, ob ParameterCheck der Datenquelle auf true steht.
-
ParameterCheck steht auf true
mfg
Traugott
-
Und wo genau ist dann das Problem? Was für eine Fehlermeldung wird ausgeben? Fügst Du, wenn Du nach Teilstrings suchst, die entsprechenden Jokerzeichen ein?
Jokerzeichen in SQL:
% für * (beliebige Anzahl Zeichen)
_ für ? (ein Zeichen)
-
Select Buchungskonto, Betrag, Belegnummer From Kassenbuch.DB Where Buchungskonto = ("Bank1") And Belegnummer Like (+ ComboBox1->Text + "%")
Vorangegangener Code wird beim Ereignis ComboBox1.Click angesprochen und endet mit der Fehlermeldung: Ungültiges Schlüsselwort >Text.
mfg
Traugott
-
Schau Dir Alexanders Beispiel noch mal genauer an...
-
Hallo,
habe Alexanders Beispiel mit meinen Werten übernommen. Beim Anprechen der Form kommt eine Fehlermeldung: ungültiges Schlüsselwort PARAMETER
(Die Parameter sitzen nicht im BeforeOpen Ereignis sondern im FormCreate)mfg
Traugott
-
Bitte zeig mal Deinen aktuellen Source-Code (am besten mit C++-Code-Tags) und nicht irgendwelche kastrierten Schnipsel.
Gruß,
Alexander
-
void __fastcall TForm5::ComboBox1Click(TObject *Sender)
{// Query öffnen und Daten laden
Query1->Open();// Feld Betrag wird summiert und im Editfeld angezeigt
double summe = 0;
Query1->First();
while (!Query1->Eof)
{summe += Query1->FieldByName("Betrag")->AsFloat;
Query1->Next();
}
Edit1->Text = summe;
}
//---------------------------------------------------------------------------//Nachfolgender Text steht im Query1 als SQL-TString
// Nachfolgender SQL String funktioniert
Select Buchungskonto, Betrag, Belegnummer From Kassenbuch.DB Where Buchungskonto = ("Bank1") And Belegnummer Like ("2004097")
//hierbei ist die Variable 2004097 ein fester Wert der durch einen beliebgen Wert aus der ComboBox1 ersetz werden sollmfg
Traugott
-
An alle die, die mir hierbei geholfen haben ein dickes
Dankeschön.

Es funktioniert endlich so wie ich es mir vorstelle; zwar auf eine ganz andere Art und Weise wie hier in der Liste angesprochen, aber das Ergabnis zählt.
mfg
Traugott
-
omg
Joe_M.
-
Traugott schrieb:
Es funktioniert endlich so wie ich es mir vorstelle; zwar auf eine ganz andere Art und Weise wie hier in der Liste angesprochen, aber das Ergabnis zählt.
Es wäre schön, wenn Du nochmal zeigen könntest, was Du jetzt gemacht hast - am besten mit Source-Code unter
Verwendung der C++-Code-Tags.@Joe_M.: Bedeutet omg eigentlich O mein Gott?
Gruß,
Alexander
-
ja, omg = oh my god. Scheint nicht all zu viele Online-Gamer hier zu geben...

Joe_M.