![]() |
Datenbank: SQL Server • Zugriff über: ADO
DBComboBox
Habe Probleme beim Speichern von DBComboBox Einträgen.
Ich möchte die Einträge von DBComboBox.Items auswählen, die dann in der Table1 abgespeichert werden. Wie schaffe ich es nun ohne einen zusätzlichen Button, dass beim Auswählen der DBComboBox die entspr. Einträge gespeichert werden und der User nicht unabsichtlich die Formulardaten ändern kann - also mit DS1.Autoedit := false beim OnActivate Ereignis des Formulars. DS1.AutoEdit := true; ..dann Auswahl mit der DBComboBox tätigen... DS1.AutoEdit := false; Welche Ereignisse muss ich nun benutzen ? (Hab momentan den Kopf nicht frei) |
Re: DBComboBox
Wenn der Benutzer seine Auswahl in der DBComboBox getroffen hat, dann erfährst du das im Ereignis OnChange() der Komponente.
Grüße vom marabu |
Re: DBComboBox
Ok, hab mich vielleicht nicht richtig ausgedrückt.
Ich habe im OnChange-Ereignis nur: Table1.Post drinstehen. Wenn ich dann woanders im Formular klicke bekomme ich die Fehlermeldung, dass die Datenmenge weder im Editier noch Einfügemodus ist. |
Re: DBComboBox
Du solltest die Tabellezeile vollständig bearbeiten:
table1.edit; table1.fieldbyname('dfdf').asstring := dblookup.lookupvalue; table1.post; |
Re: DBComboBox
Das ist eine DBComboBox.
Etwa so table1.edit; table1.fieldbyname('dfdf').asstring := dbcomboBox1.items.text; (oder so) table1.post; Ich hab gedacht das macht die ComboBox Komponente automatisch ! Ist heute einfach nicht mein Tag. |
Re: DBComboBox
Sorry, ich bin von einer normalen combobox ausgegangen.
Eine dbcombobox macht das automatisch, dann brauchst Du aber auch kein post, daher kommt die Fehlermeldung. |
Re: DBComboBox
Hallo needatip,
Zitat:
Ich habe jetzt länger darüber nachgedacht, was deine eigentliche Anforderung sein könnte und bin immer noch nicht sicher, ob ich es weiß. Möchtest du vielleicht, dass eine Änderung am Datensatz grundsätzlich und ohne Zutun des Benutzers gespeichert wird? Das erreichst du vielleicht am ehesten im BeforeCancel Ereignis des DataSets - allerdings zu dem Preis, dass der Benutzer keine Änderungen mehr verhindern kann. Ein Wort zur Eigenschaft AutoEdit - jede datensensitive Komponente schaltet ihren DataSet in den Edit-Modus, wenn der Benutzer den Inhalt verändert. AutoEdit sorgt dafür, dass der Edit-Modus eingeschaltet wird, noch bevor eine Änderung gemacht wird. Ist das wirklich, was du willst oder war da Verzweiflung im Spiel? marabu |
Re: DBComboBox
Ja du hast recht.
Ich hab jetzt das Post aus dem OnChange Ereignis genommen und dann einen Button zum posten eingesetzt. Jetzt funktionierts. Danke. |
Re: DBComboBox
Hai needatip,
hast Du schon einmal darüber nachgedacht anstelle der DBComboBox eine "normale" ComboBox zu verwenden? Ich finde die DBxxxx Komponenten in der Regel zu unflexibel und versuche diese, wo immer es geht, zu vermeiden. In einer TComboBox könntest Du ja zum Beispiel im ![]()
Delphi-Quellcode:
old_CBValue: string;
procedure TForm1.cb_TestChange(Sender: TObject); var cur_CBValue: string; begin cur_CBValue := cb_Test.Items[cb_test.ItemIndex]; if (old_CBValue <> cur_CBValue) then begin // Speichere cur_CBValue in der Tabelle old_CBValue := cur_CBValue; end; end; |
Re: DBComboBox
Ok, diese Version gefällt mir sehr gut.
Werde diese gleich mal probieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz