TableAdapter.Fill Probleme

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    TableAdapter.Fill Probleme

    Hallo zusammen,

    ich habe eine Datenbankanwendung in der ich über ein Gridview Daten aus einer View anzeige.
    Mit einem Commandbutton öffne ich einen bestimmten Datensatz (Form 2) zum bearbeiten.
    Wenn die Daten bearbeitet sind. werden sie gespeichert und das Gridview auf Form 1 wird aktualisiert.
    Soweit funktioniert alles bestens.

    Wenn ich jetzt aber ein weiteres Control ( Form 3 )öffne um meine Benutzer zu bearbeiten( gleicher Connectionstring, gleiches Dataset!!! ) kann ich die Daten auf Form 1 nicht mehr aktualisieren?

    Wie kann ich das lösen? benötige ich da ein neues Dataset? Oder muss ich es in Form 3 erst wieder schließen?
    Ich tappe da im dunkeln.

    Gruß Udo

    grisu74 schrieb:

    gleicher Connectionstring, gleiches Dataset!!!
    Das ist das Problem.
    Form3 hat ein gleiches Dataset wie es auch in Form1 vorhanden ist. Ein gleiches - nicht dasselbe.
    Solange Form3 nicht dasselbe Dataset hat wie Form1 wird nix funktionieren oder nur Kokolores.
    Form1 muss sein Dataset an Form3 übergeben.
    Oder es muss ein globales Dataset geben, welches überhaupt von allen Forms bearbeitet wird.

    Ist ein kniffliges Problem.
    Eine einfache Lösung gibts in Daten laden und speichern ab post#7
    Es sind auch andere Lösungen denkbar - üblicherweise verwende ich was in meiner Hilfsbibliothek.
    Vielleicht ist die in den Beispielen auch enthalten, sonst kann ich auch nochmal suchen.
    Hallo,

    ich habe versucht das ganze nochmal zu analysieren.
    Leider komme ich zu keinem Ergebniss.

    Ich versuche es nocheinmal dar zu stellen.

    Ich öffne Form1 mit einer View aus 3 Tabellen ( Objektdaten, Benutzer und Sachgebiet )
    Aus dieser Form kann ich Form 2 öffnen. Hier komme ich in die Datenbearbeitung eines Datensatzes von Form 1. Allerdings verwende ich hier ein anderes Dataset.

    Wenn ich jetzt Daten in Form 2 ändere, aktualisiert die Form im Hintergrung das GridView in Form 1.
    Bis dahin funktioniert es bestens!!

    Wenn ich aber jetzt über eine Form 3 die Benutzer öffne kann ich Form 1 nicht mehr aktualisieren.? ( Hier meine Frage? Ich öffne die Benutzerverwaltung mit dem selben Dataset aus Form 1)
    Wird dadurch das Dataset gesperrt?
    Wie könnte ich nachvollziehen ob sich der TableAdapter überhaupt die Daten holt?
    Beim debuggen durchläuft er zumindest den Code.

    Gruß Udo
    Und wieder stellt sich die Frage, wie die Datasets der einzelnen Forms an ihre Daten kommen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo,
    erst mal Danke für die Hilfe.

    Die Daten werden durch Datasets ( Visual Studio ) über TableAdapter geladen.
    Der Tableadapter beinhaltet die SQL-Abfrage zur Datenbank. Ich verwende einen Connectionstring!
    Zum aktualisieren der Form fülle ich den TanleAdapter nochmals über die SQL-Abfrage.
    Der Tableadapter ist dann an das Control gebunden und übergibt die Daten.
    Das funktioniert auch solange ich nicht die Form 3 öffne.

    Gruß Udo
    Dann werden also die Daten bei jedem Form-Aufruf aus der Datenquelle neu geladen. Dann stellt sich die Frage, mit welchem konkreten Code die Forms aufgerufen werden. Wenn da keine neuen Instanzen erzeugt werden, könnte es sein, dass der Datenladecode nicht durchläuft. Auch stellt sich die Frage, ob die Daten in der Quelle aktualisiert werden, wenn Form3 geöffnet und geschlossen wurde und man wieder auf Form1 zugreift. (War doch so, dass man in Form3 was bearbeitet, aber dies nicht in Form1 auftaucht, richtig?)
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Die Daten in Form 1 werden nur nicht mehr aktualisiert, wenn Form 3 ein mal geladen wurde??
    Form 1 ist ein Control in der Hauptanwendung.
    Form 2 ist ein Popup zum bearbeiten einzelner Datensätze aus Form 1.
    Form 3 ist ein neues Control in der Hauptanwendung für die Benutzerbearbeitung.

    Zwischen Form 1 und 3 kann ich wechseln.

    Erst wenn Form 3 geladen wurde funktioniert das DataTable.Fill() nicht mehr.
    Im SQL-Manager werden die Daten aber geschrieben.
    Ich vermute die gleichzeitige Nutzung eises Datasets das mit Visual Studio erstellt wurde und auf die Form gezogen wird.

    Gibt er irgendwo eine Anleitung wie mit mehreren Forms verfahren wird bezüglich Datasets.

    Gruß Udo
    Ja schon, aber ich kenne nur die Kandidaten, bei denen das MainForm die Daten alle lädt, dann SubForms aufruft und diese wiederum selber weitere SubForms. Und dann werden die tDS-Daten immer wieder von Form zu Form weiter übergeben, sodass alle Forms mit den selben Daten arbeiten. Es wird daher zwischendurch nie was gespeichert oder aus der Ursprungsdatenquelle neu geladen. Sondern erst am Programmende geht alles wieder in die Datenquelle zurück. Sicher kann man auch ein Speichern zwischendurch einbauen. Aber ein Laden ist eben nicht vorgesehen, weil alle Daten im RAM verbleiben, solange das Programm läuft.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.