Announcement

Collapse
No announcement yet.

DataBinding .NET2.0, SQL Commands

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DataBinding .NET2.0, SQL Commands

    Hallo

    Um das DataBinding besser zu verstehen habe ich ein kleines Beispiel gemacht mit einer Access DB gemacht.

    Das DataGridView stellt die Daten dar, die es via BindingSource und einem typisierten DataSet erhält. Das typisierte DataSet wird via Fill() bzw. Update() über den generierten TableAdapter mit der DB abgeglichen (durch die in meinem Fall benützten OleDbConnection, OleDbDataAdapter und OleDbCommand Instanzen).
    Ein Klassen Diagramm soll die Zusammenhänge verdeutlichen, Anhang "DataBinding ClassDiagram.jpg".

    Ich habe das ganze im VS2005 "zusammengelickt" und es funktioniert auch, d.h. die Daten können aus der DB geladen werden, editiert und zurückgespeichert werden.

    1.
    Wie ist das Vorgehen, wenn ich z.B. das SQL Query für die SELECT Abfrage zur Laufzeit änderen möchte? Beispielsweise möchte ich alle Datensätze eines bestimmten Datums holen. Zur Design Zeit ist mir das klar, doch wie ist das Vorgehen zur Laufzeit?
    (Ich möchte nicht die ganzen Daten holen und dann in der über BindingSource.Filter filtern.)

    2.
    Ist die BindingSource als Adapter oder weitere Abstraktion für die Datenquellen gedacht?


    Bitte melden, falls meine Frage unklar ist oder noch mehr Infos benötigt werden.

    Vielen Dank und Gruss
    Simon
    Attached Files

  • #2
    Hallo,

    in der Praxis sind in der Regel mehrere SELECT-Abfrage mit unterschiedlichen WHERE-Einschränkungen im Spiel. Damit in diesem Fall nicht mehrere TableAdapter angelegt werden müssen, besteht die Option, bei einem bereits vorhandenen TableAdapter über Add Query... einen zusätzlichen Aufrufweg anzulegen (siehe angehängte Abbildung).

    Die BindingSource-Komponente konfiguriert die Beziehung zwischen den Controls und der anzuzeigenden Datenmenge, während die Binding-Klasse die 1-zu-1-Beziehung zwischen einer bestimmten Control-Eigenschaft und einer bestimmten Datenmengen-Eigenschaft regelt. Die Binding-Klasse kann eine BindingSource-Komponente als Datenquelle nutzen, aber auch eine zweite BindingSource-Komponente kann eine andere BindingSource-Komponente als Datenquelle nutzen (hierachische Datenbeziehung). Über die BindingSource-Komponente wird somit eine Zwischenschicht eingezogen, so dass die Controls nicht mehr direkt an die Datenmenge gebunden werden. Die zusätzliche Zwischenschicht hat verschiedene Vorteile:
    • Wenn mehrere Controls an die gleiche Datenquelle gebunden werden, reicht es nun aus, die Datenquelle der BindingSource-Komponente über die Eigenschaften DataSource und DataMember neu zu setzen, damit alle angebundenen Controls den aktuellen Datenzustand anzeigen. Das Aktualisieren eines jeden einzelnen Controls ist somit nicht mehr notwendig.
    • Die BindingSource-Komponente stellt den direkten Zugriff zum "virtuellen Datensatzzeiger" (d.h. zum aktuellen Datensatz in der Datenmenge) zur Verfügung. Über die Eigenschaften und Ereignisse der BindingSource-Komponente wird zudem die visuelle Anwendungsentwicklung auch an dieser Stelle unterstützt.
    • Es gibt einfache Navigationsmethoden.
    • Es werden Funktionen aus der DataView-Klasse gekaspelt.
    Attached Files

    Comment


    • #3
      Salü,

      Besten Dank für die schnelle Antwort.
      Der entscheidende Hinweis für mich, war das es den TableAdapter Configuration Wizard gibt. Funktioniert sehr gut und komfortabel.

      Beste Grüsse
      Simon

      Comment

      Working...
      X