Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem mit Change und .Text (https://www.delphipraxis.net/101928-problem-mit-change-und-text.html)

Jack23 20. Okt 2007 18:45

Datenbank: Access • Zugriff über: ADO

Problem mit Change und .Text
 
Also

ich habe es jetzt so:

Delphi-Quellcode:
ADOQuery.Sql.Add('SELECT Test FROM abc WHERE id LIKE ComboBox1.Text');
Das ist im onChange einer ComboBox.

Und das soll bedeuten es wird Test abgefragt wenn ID = ComBoBox1.Text.

Aber es geht nicht es kommt die Meldung ComboBox1 hat keinen Standart Wert. Woran liegt das?

Sharky 20. Okt 2007 18:49

Re: Problem mit Change und .Text
 
Hai Jack23,

zum einen übergibst Du nicht den Inhalt der ComboBox sondern Du hast den Text 'ComboBox1.Text' in der Abfrage.
Zum anderen wirst Du, selbst wenn Du das korigierst Probleme durch das Sql.Add bekommen. Denn dadurch wird das SQL-Statment deines ADOQuerys ja ständig erweitert.

Muetze1 20. Okt 2007 18:50

Re: Problem mit Change und .Text
 
1. Standard
2. Willst du nicht eher mal den Inhalt von ComboBox1.Text in den Query einbauen anstatt nur im String ComboBox1.Text zu schreiben?
3. Die Fehlermeldung: er interpretiert das ComboBox1.Text als Tabelle/Result Combobox1 und dort Feld Text.
4. Nutze lieber Parameter, dann sparst du dir auch den kompletten Ärger um das escapen der Werte.

Jack23 20. Okt 2007 18:56

Re: Problem mit Change und .Text
 
Und wie kann ich das nun vernünftig machen?

Oder wäre es besser das so zu machen?

Delphi-Quellcode:
  if 'ComboBox1.ItemIndex' = 'Wert' then
So müsste ich aber alles in den Code schreiben.

mkinzler 20. Okt 2007 19:00

Re: Problem mit Change und .Text
 
Delphi-Quellcode:
ADOQuery.Sql.Add('SELECT Test FROM abc WHERE id LIKE '+#39+'%'+ComboBox1.Text'+#39+'%');
oder besser
Delphi-Quellcode:
ADOQuery.Sql.Add('SELECT Test FROM abc WHERE id LIKE :cbtext');
...
AdoQuery.Params.ParamByName('cbtext').asString := '%'+ComboBox1.Text+'%';

Sharky 20. Okt 2007 19:03

Re: Problem mit Change und .Text
 
Zitat:

Zitat von Jack23
Und wie kann ich das nun vernünftig machen?...

Hai Jack23,

ich kann Dir leider nur einen Tip geben. Lerne als erstes die Grundlagen von Delphi. Eine Lösung zu dieser Frage steht bestimmt schon in zwei oder drei Threads von Dir. ;-)

Es nutzt Dir nichts wenn Du anfängst ein Programm zu schreiben und dann bei jedem Problem zu fragen wie man es lösen kann. Wenn Du dann auch noch den Code der Dir gezeigt wurde einfach in dein Programm einfügst ohne ihn verstanden zu haben wirst Du nie spass am Programmieren haben.

Bitte verstehe mich jetzt nicht falsch. Aber ich habe mal schnell die Threads von Dir durchgesehen und stelle dort eine "gewisse Grundhaltung" fest die zu den oben genannten Problemen führt.

Jack23 20. Okt 2007 19:37

Re: Problem mit Change und .Text
 
Ok Sharky irgend wo hast du vielleicht recht. Auch wenn in den anderen Themen die Lösung drin stand. Sie hat mir aber nicht richtig gefallen. Ich habe das ganze noch mal ein wenig überdacht. Mir die Grundlagen angeschaut. Und daraufhin bin ich zu der Überlegung gekommen man könnte doch in ComboBox1.Items.AddObject "zwei rein" machen. Habe ein wenig rumprobiert und da ist das raus gekommen:

Delphi-Quellcode:
 ComboBox1.Items.AddObject(ADOQuery.FieldbyName('Test1').AsString,TObject(ADOQuery.FieldByName('Test2').AsString));
Dann wird in der ComboBox Test1 als Name zugewiesen und Test2 als "Wert". Klappt auch. Kommt keine Fehlermeldung.

Nur mein Problem ist wie greife ich auf diese Daten zu? :gruebel:

Oder besser gesagt ich müsste ja das TObject wieder in einen String umwandeln oder? Oder geht das garnicht?


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