Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Zquery.post funktioniert nicht nach DBCombobox.text (https://www.delphipraxis.net/149031-zquery-post-funktioniert-nicht-nach-dbcombobox-text.html)

Maja_99 12. Mär 2010 17:49

Datenbank: MySQL • Version: 5 • Zugriff über: ZEOS

Zquery.post funktioniert nicht nach DBCombobox.text
 
Hi,

ich habe ein Formular, welches DBComboboxen enthaelt. Im onChange will ich diese automatisch, je nach Ereignis aendern.
Der Text wird gesetzt, aber dann wenn ich den Text in der DB speichern will mit ZQuery1.Post, wird es nicht in der DB gespeichert.

Wenn ich ein Item aus der Combobox waehle, oder in die ComboBox schreibe, funktioniert es.
Es funktioniert nur nicht, wenn ich den Text im Code setze.


Delphi-Quellcode:
procedure TForm1.DBComboBox1Change(Sender: TObject);
begin
   TDBComboBox.Text:='test';
end;

procedure Tforms1.Button1_Click(Sender: TObject);
begin
   ZQuery1.Post;
end;

Vielen Dank fuer Eure Hilfe!

haentschman 12. Mär 2010 18:41

Re: Zquery.post funktioniert nicht nach DBCombobox.text
 
ist denn die ComboBox auch mit einem Datenfeld von ZQuery1 verknüpft ? Wenn ja und CachedUpdates = False ist kannst du dir das Post sparen.
Zitat:

Es funktioniert nur nicht, wenn ich den Text im Code setze.
wenn du den Text setzt wird der Text nicht zu einem Item. Und nur die Items werden "datensensitiv" behandelt. Woher soll auch die Query wissen, ob der Text ein zusätzlicher Datensatz werden soll oder ob ein Item verändert / bearbeitet wird.

:hi:

Nachtrag: Ich habe es selbst noch nicht probiert. Versuche mal den Text als Item hinzuzufügen Items.Add('Text') und dann den ItemIndex auf das Item mit deinem neuen Text setzen. ItemIndex:= IndexOf('Text'). Normalerweise sollte der neue Text dann als Datensatz angehängt werden.

Maja_99 12. Mär 2010 19:24

Re: Zquery.post funktioniert nicht nach DBCombobox.text
 
Hi haentschman,

vielen Dank fuer Deine Antwort.

Die ComboBox ist mit der ZQuery1 verknuepft, da es ja sonst nicht funkionieren wuerde das Item nach Auswaehlen in die DB zu speichern.
Ich habe Deinen Vorschlag probiert. Es funktioniert leider auch nicht.

Ich verstehe jedoch nicht, was der Unterschied ist, wenn ich etwas in der ComboBox von Hand eintrage oder es im Code setze.
Wenn ich es von Hand eintrage wird es 'geposted'.

:hi:

haentschman 12. Mär 2010 19:36

Re: Zquery.post funktioniert nicht nach DBCombobox.text
 
wird da ein vorhandenes Item geändert oder ein Datensatz angehängt ?

Maja_99 12. Mär 2010 19:58

Re: Zquery.post funktioniert nicht nach DBCombobox.text
 
Es wird ein Datensatz in einer Datenbanktabelle eingefuegt oder upgedated.
Beides funktioniert, wenn ich es aus der CB auswaehle oder etwas von Hand eintrage, aber nicht wenn ich's im Code mache.
Ich kann sogar sehen, nachdem ich auf Speichern klicke und bevor die Form geschlossen wird, dass der alte Eintrag oder eben kein Eintrag (wenn keiner vorhanden war), wieder in der ComboBox angezeigt wird.

Vielen Dank fuer Deine Muehe!

haentschman 13. Mär 2010 06:49

Re: Zquery.post funktioniert nicht nach DBCombobox.text
 
Morgen :hi:

ich teste mir das mal bei Gelegenheit.

PS: im OnChange den Text setzen halte ich für nicht gut. Eigentlich solltest du nichts anderes als den Text in der Combobox sehen.
setze mal einen Breakpoint auf TDBComboBox.Text:='test';. Schaue dir an, wann onChange ausgelöst wird. Du wirst dich wundern wie
oft. Erkläre mal warum du im OnCange den Text setzen willst.

Maja_99 15. Mär 2010 16:19

Re: Zquery.post funktioniert nicht nach DBCombobox.text
 
Hi :hi:

oh sorry, das war ein Fehler von mir.

Im onChange einer anderen ComboBox, also ComboBox1 soll der Text in ComboBox2 geandert werden.

Delphi-Quellcode:
procedure TForm1.DBComboBox1Change(Sender: TObject);
begin
   TDBComboBox2.Text:='test';
end;
Es liegt an dem ZQuery.Post. Wenn ich den Text meiner Combobox vor dem "posten" auslese und mir als ShowMessage anzeigen lasse, wird mir der derzeitige Text, der in der ComboBox eingetragen ist, angezeigt.
Nach dem "posten" enthaelt die ComboBox dann wieder den alten Text aus der Datenbank.

Vielen Dank!


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