Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Neuen Datensatz bei Datenbindung ohne vorherige Abfrage
alaan - Fr 20.02.09 18:26
Titel: Neuen Datensatz bei Datenbindung ohne vorherige Abfrage
Hallo,
ich möchte gern eine Anwedung entwickeln, die Daten aus einer Datenbank in ein Dataset lädt. Über eine BindingSource und einen BindingNavigator zeige ich diese in einem Grid an. Ausserdem binde ich auch Textboxen an die BindingSource.
Solange ich Daten abfrage, funktioniert auch alles problemlos. Wenn ich nun aber beim Start des Programms sofort einen Datensatz hinzufügen will..?
Wie funktioniert das? Die ganze Datenanbindung setzt voraus, dass eine Abfrage zugrunde liegt. Ich will aber auch die Option bieten, sofort einen neuen Datensatz hinzuzufügen, ohne vorher Daten zu holen.
Lässt sich das in die ADO Architektur integrieren, also die Arbeit mit Dataset, BindingSource usw. Ich würde ungern einfach mit command.executeQuery in die Datenbank schreiben, weil das aus dem Kontext der Datenbindung rausfallen würde.
Hat jemand eine Lösung diesbezüglich?
Grüße
alaan
JüTho - Fr 20.02.09 20:12
Titel: Re: Neuen Datensatz bei Datenbindung ohne vorherige Abfrage
alaan hat folgendes geschrieben : |
Wie funktioniert das? Die ganze Datenanbindung setzt voraus, dass eine Abfrage zugrunde liegt. |
Nein, das stimmt nicht. Das ist zwar der häufigste Anwendungsfall, aber beileibe nicht der einzige.
alaan hat folgendes geschrieben : |
Ich will aber auch die Option bieten, sofort einen neuen Datensatz hinzuzufügen, ohne vorher Daten zu holen. |
Dann mach das doch einfach.
alaan hat folgendes geschrieben : |
Lässt sich das in die ADO Architektur integrieren, also die Arbeit mit Dataset, BindingSource usw. |
Natürlich, z.B. mit
DataTable.NewRow() und
DataTable.Rows.Add(). Wenn später
DataAdapter.Update kommt, landen diese Daten automatisch in der DB.
alaan hat folgendes geschrieben : |
Ich würde ungern einfach mit command.executeQuery in die Datenbank schreiben, weil das aus dem Kontext der Datenbindung rausfallen würde. |
Das ist aber völlig unproblematisch. Wenn zuerst einzelne Daten gespeichert werden sollen und erst später Daten geholt werden, passt ebenfalls alles zusammen.
/Edit
Du meinst vermutlich command.
ExecuteNonQuery (denn es ist ja
keine Abfrage).
Gruß Jürgen
Christoph1972 - Sa 21.02.09 00:54
Hi,
für so etwas nutze ich auch gerne tableAdapter.Insert("dds","klkd"........
Gruß
Christoph
alaan - Mo 23.02.09 10:22
Hallo,
danke für die Antworten.
Gibt es keinen Weg, dass über die BindingSource zu machen, obwohl noch keine Daten da sind? Sonst programmiere ich ja extra für diesen Fall, also wenn ein Datensatz hinzugefügt werden soll, obwohl noch keine Daten geholt worden sind, an der ganzen Binding Geschichte vorbei?
BindingSource.Add...gibt es ja. Das klappt aber nicht so wirklich.
Grüße,
alaan
JüTho - Mo 23.02.09 10:32
Hallo,
ich verstehe nicht, warum Du auf der Änderung der BindingSource beharren willst. Die "kapselt die Datenquelle für ein Formular", wie es in der
SDK-Doku/MSDN heißt. Was spricht dagegen, die
DataTable selbst zu ändern? Durch die BindingSource stehen die Änderungen doch ebenfalls zur Verfügung.
Zitat: |
Das klappt aber nicht so wirklich. |
Das ist sowieso keine wirkliche Problembeschreibung. Was klappt denn nicht? Aber wenn es schon nicht so richtig funktioniert, warum willst Du dann unbedingt diesen Weg gehen, wenn es einen anderen gibt?
Nun ja, jeder wie er mag. Jürgen
alaan - Mo 23.02.09 13:15
Hallo JüTho,
naja, beharren...is nicht der richtige ausdruck. Ich dachte nur, ich wollte ein konsistentes Vorgehen. Mein Problem ist, dass ich eine BindingNavigator Komponenete benutze. Wurde vorher Daten geholt, kann man damit ja auch wunderbar editieren, also z.B auch einen Datensatz hinzufügen. Wird die Anwendung jedoch gestartet, sind also noch keine Datensätze geholt worden, ist die BindingNavigator Komponente nicht aktiv. Will ich nun einen Datensatz hinzufügen, müßte ich ja einen ganz anderen Mechanismus anwenden, z.B eine zusätzliche Schaltfläche dafür oder so.
Sind dann Daten da, kann ich neue Datensätze über den BindingNavigator hinzufügen.
Natürlich kann ich über die DataTable direkt gehen. Ich will ja nur wissen, ob ich es unnötig kompliziert mache, weil ja die BindingSource die Struktur der Tabelle eigentlich kennt.
Grüße
alaan
JüTho - Mo 23.02.09 14:00
Wenn es mal so, mal anders auftritt, dann ist die Bearbeitung der DataTable unbedingt vorzuziehen. Ob Du die betreffende Methode aus dem BindingNavigator heraus oder per BindingSource.Add oder per Button.Click aufrufst, ist doch völlig schnuppe. Es gehört doch sowieso in eine eigene Methode AddNewCustomerRow (oder wie auch immer) und nicht an fünf Stellen bei fünf verschiedenen EventHandlern. Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!