2 verknüfpfte Tabellen anzeigen, aktualisieren und Abspeichern unter zu Hilfenahme von DataBinding

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 40 Antworten in diesem Thema. Der letzte Beitrag () ist von Cameron20.

    2 verknüfpfte Tabellen anzeigen, aktualisieren und Abspeichern unter zu Hilfenahme von DataBinding

    Hallo,
    ich bin neu in der Datenbankprogrammierung und habe eine Frage:
    ich habe 2 Tabellen. Die eine lautet "Projekt", die andere "Architekt". Projekt ist über den Fremdschlüssel ArchitektID mit dem Primärschlüssel ArchitektID von Architekt verbunden.
    Ich habe ein Form und die Tabelle Projekt in die Formgezogen. Ich habe ein Combobox für die Projektnummer aus Tabelle "Projekt" eingefügt und kann durch die Tabelle Projekt navigieren.
    Jetzt erscheint mir aber nur die ArchitektID in der entsprechenden TextBox.

    Nun meine Frage: Gibt es außer der entsprechenden SQL Abfrage mit DataSet usw. einen Weg sich die verknüpften Daten der Architekten Tabelle anzeigen zu lassen ?

    Mein Lösungsansatz war:
    Ich habe eine Combobox (weil der Architekt wechseln kann) mit einer Abfrage aller Architekten der Architekten Tabelle in dieses Form eingebaut und habe über die Zuweisung des SelectedIndex an die gebundene ArchitektIDTextBox der Tabelle "Projekt" die Verbindung geschaffen. Dies funktioniert nur bedingt und scheint mir auch nicht der richtige und elegante Weg zu sein. Für Eure Hilfe wäre ich sehr dankbar !

    Cameron20 schrieb:

    Nun meine Frage: Gibt es außer der entsprechenden SQL Abfrage mit DataSet usw. einen Weg sich die verknüpften Daten der Architekten Tabelle anzeigen zu lassen ?
    Du meinst da einige TextBoxen neben einer DGV die zusätzlich Daten aus deiner Architekten-Tabelle visualisieren...
    Da musst du die Textboxen an deine einzelnen Columns einer Bindingsource binden.
    Schaue bei den Eigenschaften der TextBox bei Databindings nach, hier kannst du das ganz einfach machen.
    Ich empfehle dir da die Video-Tut's von EDR (in obigen Fall Film IV DetailView)...
    Hallo VB1963,
    danke Dir vielmals. Ich glaube das trifft genau mein Problem. Ich habe eben mehrere solche Formulare mit mehreren untereinander verknüpften Tabellen darauf und ich möchte mir die ganzen SQL Statements und das manuelle Befüllen der Textobxen usw. ersparen. Für mich scheint die Datenbindung der ideale Weg zu sein.
    Vielen Dank nochmals !!
    Hallo,
    ich brauche nochmals Eure bzw. Deine Hilfe VB1963. Ich habe die Tutorials befolgt und es funktioniert auch soweit. Ich habe versucht statt des DataGridViews (analog DetailView IV) eine Combobox zum Auswählen der Projektnummer (analog des "Artikel" im Tutorial). Ich habe also die dieselbe BindingSource wie für das GridView gewählt. Leider verändern sich die ComboBox Einträge und bleiben nicht konstant. Woran liegt das ? Erfolgt die Navigation durch die Tabelle die Neuanlage eines neuen Datensatzes somit immer über das GridView?

    Weiter noch meine Frage: Es muss also keine separate Speicherung vorgenommen werden, wenn man in den TextBoxen etwas ändert. Wie kann man das User freundlich gestalten ?

    Das Tutorial ist super und absolut empfehlenswert. Danke.

    lg Cameron20
    Hallo VB1963,
    hier der link. Ich hoffe das funktioniert.

    Ich habe das Modell nochmals abgeändert. Ich will also eine Form basteln, in der ein Projekt hinzugefügt werden kann, aber auch ein Projekt verändert werden kann. (Anderer Architekt, anderer Bauunternehmer). Ich habe es zwischenzeitlich analog dem Tutorial mit GridView (für die Projektnummer) gemacht und baue in die Splitpanels meine anderen Tabellen ein (das versuche ich zumindest gerade). Mich würde trotzdem interessieren warum das nicht funktioniert mit der Combobox. Danke Dir !!
    ja, genau. Es soll vor allem die Verknüpfung zwischen den beiden Tabellen hergestellt werden und eben auch der Name des Architekten dann im DetailView angezeigt werden wenn ich im ParentView einen anderen Architekten wähle. Bisher wähle ich zwar verschieden Architekten aus, dies wird aber nicht in die Projekttabelle übernommen. Du meinst berechnete Spalte: Gibt es hierzu ein Tutorial ? Danke Dir.
    Ja, da kann ich dir wieder ein Tutoral von EDR anbieten oder MSDN (da schaust du dir den Abschnitt Verweise auf Parent/Child-Beziehungen genauer an)...
    Generell empfehle ich dir den Tutorialbereich Rubrik Datenbanken, da kannst nach deinem Interesse nach ordentlich stöbern...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VB1963“ ()

    Hi VB1963, kann es sein, dass diese typisierten Datasets die ich bisher favorisiert habe für meine Anwendung nicht das Richtige sind. Ich denke, dass die Verbindungen zwischen den Tabellen (siehe letztes Problem) auf diese Weise schwer in den Griff zu bekommen sind. Ich beziehe mich auf das VB2010 Buch von Kofler/Schwichtenberg/Eller usw.. Die sagen dass die Automatismen der typisierten DS nicht gut wären. Was meinst Du dazu ?
    Kannst Du mir eine Alternative empfehlen: Ich würde sonst die ganze Kiste mit Insert und SQL Commands machen, was natürlich einen riesen Aufwand bedeutet.
    Danke sagt Cameron20
    p.s.: Ich habe das Buch VB2010 weil ich eine VB2010 Prof Version nutze, oder ist das auch Humbug und ich sollte auf die 2015 Express umsteigen ?

    Cameron20 schrieb:

    Ich würde sonst die ganze Kiste mit Insert und SQL Commands machen
    Das bedeutet aber einen riesen Schritt nach rückwärts und den empfehle ich dir nicht...

    Das DS ist schon das Richtige Werkzeug für dein Vorhaben.
    Ich kenne das von dir genannte Buch nicht. Ich denke, dort wird generell das alte DS abgelehnt und man favorisiert dort das neue Entity Framework.
    Also - ich habe am Anfang, als ich das DS kennengelernt habe auch Schwierigkeiten damit gehabt.
    Die Ursache war aber ganz einfach - man muss sich damit einmal ordentlich auseinandersetzten und seine Facetten kennen lernen - dann wird die Handhabe damit immer runder.
    Es gibt hier im Forum dazu eine jede Menge an Tutorials von @ErfinderDesRades. Da empfehle ich dir, alle einmal in Ruhe durchzuarbeiten und viel damit zu probieren.
    Dein letztes Problem sollte eigentlich ganz einfach mit berechnete Spalten in den Griff zu bekommen sein.
    Deine Probleme mit dem DS haben aber mit VS 2010 Professional nichts zu tun.
    Du kannst auch einmal die kostenlose VS2013 Community Edition installieren und damit probieren - dann wirst du aber bei dieser Version bleiben...
    Von der VS 2015 kann ich nichts sagen - habe ich noch nicht getestet...
    Hallo VB1963,
    danke Dir erstmal für die Antwort. Ja, in dem Buch wird der Zugriff via typ.Dataset nicht empfohlen.
    Das Entity Framework wurde, wie Du richtig meinst, empfohlen. Wo sind die eigentlich abgeblieben, das schien doch ganz vernünftig alles auf Objektebene zu machen (wenn ich es richtig verstanden habe).
    Hallo VB1963,

    ich habe noch ein Frage bzgl. dem Detail View vom Tutorial von EDR nämlich zum Detail View.

    Ich habe ein DGV und ein Detail View meiner Projekttabelle und eine ComboBox mit den Architekten (DataSource ArchitektenBindingSource) analog dem Tutorial von EDR aufs Form gezogen. Ich habe auch die richtigen DataSource und ValueMember und SelectedValue Einstellungen vorgenommen.
    Zu Testzwecken habe ich die ArchitektIDTextBox des ProjektDetailViews auf dem Form gelassen. Wenn ich nun in der ComboBox einen anderen Architekt auswähle, wird die neue ID des Architekten zwar in der ArchitektIDTextBox des DetailViews richitg angezeigt, die ComboBox hingegen zeigt falsche Einträge bzw. den neu ausgewählten doppelt an. Wo liegt der Fehler ?

    Danke und frohe Ostern