verwendetes Datenbanksystem: Access
Hallo zusammen,
als Ergänzungspost zu meiner früheren Frage:
ich habe eine Combobox, die mir mittles SelectedValue und DisplayMember etc. Text aus einer Art Detail-Tabelle darstellt. In der Mastertabelle sind Integer (oder Null) gespeichert und in der Detailtabelle ist für Integer-ID dann ein Text gespeichert, der in der Combo dargestellt wird.
Was aber nicht klappt: wenn der User der angezeigten Text mittels Entf löscht, soll ein Null in die DB geschrieben werden.
Irgendwie muss es doch gehen - ich möchte aber keinen zusätzlichen "virtuellen" Eintrag in der Detail-Tabelle.
Hat jemand einen Tipp?
Vielen Dank,
Dirk
Hallo,
hat wirklich niemand eine Idee bzw. einen Link, wo mir erklärt wird, wie ich ein Combobox an eine Datenbank binden kann und auch Null-Werte nutzen kann...
Oder ist meine Frage zu unverständlich?
Vielen Dank,
Dirk
Hi,
Oder ist meine Frage zu unverständlich? Du hättest vllt mal schreiben sollen welche Technologie du einsetzt. Wenn es WinForms und Ado.net-DataSet ist würde ich das keydown-Event der Combobox überschreiben und in der entsprechenden DataRow das Field auf DBNull ö.ä. setzen.
Vielen Dank und sorry:
es handelt sich um ADO.Net und Windows-Forms. Ich hatte gedacht, es wäre auch ohne "manuelle Nacharbeit" möglich - einfach über die richtigen Einstllungen bei der Bindung.
Viele Grüße,
Dirk
Hallo,
die Lösung mit der Entfernen-Taste finde ich eher unschön. Dafür muss der DropDownStyle der Combobox auf "DropDown" stehen. Dann ist das Textfeld der Combobox aber voll editierbar. Bei der Einstellung "DropDownList" können nur in der Liste enthaltene Werte ausgewählt werden.
Zwischen Laden der Detailtabelle und Binden an die ComboBox würde ich dann einen temporären Datensatz einfügen:
DataRow newRow = detailsTable.NewRow();
newRow["ID"] = DBNull;
newRow["Value"] = "<kein>";
detailsTable.Rows.InsertAt(newRow, 0);
Bei beiden Lösungen solltest du aber Bedenken, dass Access hierfür keinen Fremdschlüssel mit automatischer Überprüfung der referentiellen Integrität erstellen kann. Änderungen und Löschungen in der Detailtabelle bedürfen dann also auch der "manuellen Nacharbeit". Vollautomatisch geht's wohl nur mit einem festen "leeren" Eintrag in der Detailtabelle.
(Edit: Tippfehler korrigiert)
Grüße, Koller.
Vielen Dank,
mit dem temporär erzeugten Eintrag klappt es sehr gut - hat eben auch den Vorteil, dass ich die Combobox nicht komplett zum Bearbeiten freigeben muss.
Da ich in der Tabelle keine Beziehungen aufgebaut habe, stört mich der Nachteil mit der referenziellen Integrität auch nicht so.
Danke schön nochmals,
Dirk
Hi,
die Lösung mit der Entfernen-Taste finde ich eher unschön. Dafür muss der DropDownStyle der Combobox auf "DropDown" stehen. Dann ist das Textfeld der Combobox aber voll editierbar
Wie kommst du denn darauf? Das geht auch ganz normal mit einer ComboBox die auf DropDownList steht.
Hallo,
ich bezog mich dabei auf dwoes ursprünglichen Ansatz, also ohne Überschreiben von KeyDown (das steht aber in einem anderen Thread).
Grüße, Koller.