Tabelle in VB

  • VB.NET

Es gibt 60 Antworten in diesem Thema. Der letzte Beitrag () ist von Storch.

    Tabelle in VB

    Hallo und guten Morgen,

    unter DB-Programmierung wollte ich mein Anliegen nicht posten. Wenn es hier falsch ist, dann sorry und ggf. verschieben.

    Ich habe die Absicht eine Tabelle in mein VB-Tool einzubinden. In dieser sollen einige statische Daten abgelegt werden (zB Pfade), die dann auch über entsprechendes Control ggf. verändert werden können.

    Nun hab ich schon so einiges dazu gelesen, bekomme die Zusammenhänge aber nicht in meiner Birne zusammen.

    Kann mir jemand einen Weg zu meine Ziel aufzeigen ? Tipps/Links/Workshops?

    Vor allem wie stehen Dataset, DataTable und DataAdapter in Zusammenhang.

    Ich denke DataTable ist Grundvorausetzung zum speichern der Daten, DataTable repräsentiert die eigentliche Tabelle?
    Womit greife ich auf diese an besten zu? Hab die Rolle von DataSet -und Adapter noch nicht begriffen, wobei ich vom Adapter vermute, das der dazu da ist, Verbindung mit externen Datenbanken aufzunehmen???

    Ich wäre für jede Form von Erleuchtung sehr dankbar. Mein Problem ist vllt. auch, dass ich durch Access und VBA geprägt bin?

    Hoffentlich versaue ich niemandem den Samstag
    GUD Uwe

    :whistling: Wenn ich genau wüsste, was ich nicht weiß, dann wäre mein Wissen vollständig!
    Deine Vermutung bzgl. des Adapters ist richtig. Dieser ist dazu da, die Daten zwischen dem DataSet und der Datenbank zu transferieren.
    Das DataSet kannst Du auch ohne Datenbank nutzen. Die Daten kannst Du als XML auf dein lokales Dateisystem ablegen und von dort wieder laden. Der User @ErfinderDesRades hat dazu ein schönes Tutorial erstellt. Er wird sich hier bestimmt nochmal melden ;)
    ^^

    Daten laden, speichern, verarbeiten

    Ein Dataset fasst mehrere DataTables zusammen, und auch, wie die untereinander in Beziehung stehen.
    Wenn du nur eine Tabelle hast - auch gut - dann ist das Thema Beziehungen für dich uninteressant.

    Es gibt typisierte Datasets und untypisierte Datasets. Die untypisierten sind die Basisklasse der typisierten, und sollteman eiglich nie direkt verwenden.
    Denn die untypisierten Datasets und die darin enthaltenen untypisierten DataTables sind sehr aufwändig und fehleranfällig zu bearbeiten.

    Storch schrieb:

    Vor allem wie stehen Dataset, DataTable und DataAdapter in Zusammenhang?
    Datasets sind der Kern der Ado.Net-Datenbank-Technologie, dazu konzipiert, einen Daten-Cache zu bilden, in den Teile der Datenbank eingelesen werden, um sie dann unabhängig zu verarbeiten.
    Wie xtts02 bereits sagt, die DataAdapter holen die Daten vonne DB und schubsen die gemachten Änderungen auch wieder zurück ( - wenn alles richtig eingerichtet und aufeinander abgestimmt ist).

    Der oben genannte Zusammenhang (Dataset als Container von DataTables, inklusive der Beziehungen) ist eine Umsetzung des grundlegenden Prinzips relationaler Datenbanken - die relationale GrundIdee

    Also Dataset setzt das relationale Datenhaltung-Prinzip um, ebenso wie jede Datenbank es umsetzt, und deswegen ist Dataset ja ein brauchbarer Cache für Datenbanken, und kann (via DataAdapter) an jede Art relationaler Datenbank "angeschlossen" werden (muß aber nicht).
    Da Dataset sich selbst auch direkt auf Platte schreiben kann (ohne Adapter), ists Unfug, für Datenbestände bis - wasweißich - 20MB eine Datenbank aufzusetzen, mit all dem Overhead und v.a. mit all den Fußangeln, dies bei der Konfiguration zu beachten gibt.
    Hallo und Danke an Euch beide.

    ich werd mich da jetzt mal durchackern.

    Für mein Verständnis aber noch eine Frage:

    Das Dataset kann sich selbst auf Platte schreiben..... Muss ich dann, nur für ein paar Systemoptionen, eine extra DataTable haben oder reiche ich für diese Zwecke mit einem Dataset???
    GUD Uwe

    :whistling: Wenn ich genau wüsste, was ich nicht weiß, dann wäre mein Wissen vollständig!
    im Startpost sprichst du von einer Tabelle, und nun redest du von "nur ein paar SystemOptionen".
    Einzelne Optionen sind keine Tabelle, und lassen sich besser in den Settings abspeichern.

    Wenn du eine Tabelle hast, nimm typisiertes Dataset.
    Damit hast du eine sichere Lösung für dein derzeitiges Problem, uind gleichzeitig eine enorm mächtige Technologie an der Hand, die dir in allen weiteren Anwendungen, in denen Daten ühaupt vorkommen (und wo kommen keine Daten vor?) nützlicher sein kann, als du dir überhaupt vorstellen kannst.
    Dassis keine Rethorik, sondern dassis Fakt: wenn man Databinding nicht kennt, kann man sichs nicht vorstellen.
    Also für einen Rethoriker halte ich Dich keineswegs, dafür hat alles, was ich von Dir bis jetzt gelesen habe, zu sehr Hand und Fuss.

    Access färbt ab. Dort habe ich mir solche Daten in eine Tabelle geschrieben.

    Gut möglich, dass ich mich für Profis auch mal missverständlich ausdrücke. Wie definiert sich der Begriff Systemoptionen?
    Im Moment geht es mir um Pfadangaben und ein paar Ja/Nein-Optionen kommen wohl noch dazu.

    Ich habe für einen Bekannten mehrere Datenbanken(Access) erstellt. An der letzen arbeite ich noch. Da ich die Frontends auf 4 Clients nicht ständig einzeln updaten wollte, habe ich bereits ein Tool in VB geschrieben, das die DB startet, aber zuvor auf Updates prüft und das Frontend vor dem Start durch das Update ersetzt.
    Nun möchte mein Bekannter aber gerne, das er mit dem Tool alle 3 Datenbanken ansprechen kann.

    Im Sinne des relationalen Datenbankprinzips würde ich nun 2 Tabellen in 1:n Beziehung erstellen. Tabelle 1 beinhaltet die Namen der DB's, Tabelle n beinhaltet, die Pfadangaben zu den einzelnen DB's.

    Ich hab auch schon nebenher einige Möglichkeiten in der Entwicklungsumgebung entdeckt und werde erstmal ausgiebig testen.
    GUD Uwe

    :whistling: Wenn ich genau wüsste, was ich nicht weiß, dann wäre mein Wissen vollständig!
    ganz einfach....

    Frontend auf dem Client.. das Backend auf dem Server
    und Updates des Frontends lade ich per Teamviewer auf den Server hoch und von dem Tool wird das Update dann bei Aufruf vom Server zum Client kopiert.

    Somit muss das Tool wissen, wo was ist. Für nur eine Datenbank kann man das in Variablen packen oder Konstanten, aber für mehrere DB's eben nicht mehr.
    Erst recht nicht, wenn man die Möglichkeit haben will, die Speicherorte per Formular zu modifizieren
    GUD Uwe

    :whistling: Wenn ich genau wüsste, was ich nicht weiß, dann wäre mein Wissen vollständig!
    Du hast natürlich recht. Nicht beliebig viele und es hätte mir selbst einfallen müssen, das ich da keine 2 Tabellen brauche.

    Für eine DB gibt es je einen Pfad zum Frontend, zum Backend und zum Updatefolder. Und wenn sich daran was ändert, braucht man keinen weiteren Datensatz sondern man ändert die Einstellungen. Schlussendlich hätte ich die 1:n Beziehung nur als 1:1 Verknüpfung genutzt, was Ressourcenverschwendung ist.

    Der Blödsinn wäre mir sicher irgendwann selbst aufgefallen aber Danke, das DU mich da gleich drauf gestoßen hast.
    GUD Uwe

    :whistling: Wenn ich genau wüsste, was ich nicht weiß, dann wäre mein Wissen vollständig!
    Moin moin,

    ein typisiertes DataSet hab ich mir erstellt und dann hab ich einige Controls an das Dataset gebunden.

    Die eingegebenen Daten werden aber nicht gespeichert. Was mache ich nun wieder falsch????

    Edith: Die Problematik liegt wohl beim Dataset

    Edith2:

    Im Anhang ein Screenshot, der in etwa zeigt was ich habe. DataSet und BindingSOurce.
    Aus Datenquellen habe ich das Feld 'Serverpath' in den Designer gezogen.
    Die EIgenschaften bezüglich der Bindung stellen sich wohl richtig ein.
    Will ich mir aber für das zugefügte feld(Control) die Datenvorschau anzeigen lassen, kommt die
    im Screenshot sichtbare Fehlermeldung
    Bilder
    • VBE_Shot1.jpg

      294,07 kB, 1.177×507, 155 mal angesehen
    GUD Uwe

    :whistling: Wenn ich genau wüsste, was ich nicht weiß, dann wäre mein Wissen vollständig!

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

    Storch schrieb:

    Edith: Die Problematik liegt wohl beim Dataset
    Du machst Witze.
    Daten laden, speichern, verarbeiten - da liegen doch sogar mehrere Zip-Beispiele bei, die zeigen, wies geht, und die beweisen doch wohl unwiderleglich, dasses nicht am Dataset liegt, wenn du eine Tabelle nicht speichern kannst.

    Storch schrieb:

    Was mache ich nun wieder falsch????
    Woher soll jmd im Forum das wissen? Wir können doch nicht hellsehen, was du an Code geschrieben hast, und wo der unzulänglich ist.
    Ich habe nur die Aussage "einige Controls an das Dataset gebunden." - ja, wenn ich mich strikt daran halte, frage ich mich, ob und wie du auch Dataset.WriteXml() aufrufst, das ist ja der Kern, um den herum Daten laden, speichern, verarbeiten aufgebaut ist.
    Moin,

    Beitrag 13 hab ich nochmal editiert.
    Deinen Link hab ich noch nicht durch gearbeitet.

    Bisher habe ich angenommen, das, wenn ich ein Dataset erzeuge, DataTable hinzufüge und dort meine Felder definiere(zur Entwurfszeit), ich dieses ohne weiteren Code an meine Controls binden kann. Ich sag ja nicht, das ich mich nicht mit Code rumschlagen will, aber geht es wirklich nur auf diesem Weg?
    GUD Uwe

    :whistling: Wenn ich genau wüsste, was ich nicht weiß, dann wäre mein Wissen vollständig!
    So nu hab ich's anscheinend.


    Aber mal Sorry, wenn ich bischen nervig rüberkomme. Ich brauch halt ein bischen länger 8|


    Das DataSet mit DataTable alleine nützt einem also nix? Es braucht noch der *.xml-Datei um die Daten zu speichern?


    Funzen tut es jetzt jedenfalls.


    Ich lass den Threed noch offen, falls mir noch was einfällt.


    Aber 1000 Dank für Deine Geduld :) :) :)
    GUD Uwe

    :whistling: Wenn ich genau wüsste, was ich nicht weiß, dann wäre mein Wissen vollständig!

    Storch schrieb:

    Will ich mir aber für das zugefügte feld(Control) die Datenvorschau anzeigen lassen, kommt die
    im Screenshot sichtbare Fehlermeldung
    Jo, Datenvorschau geht wohl nur, wennman eine Datenbank hinterlegt hat, was für deine 10 Datensätze ja der Overkill des Jahres wäre.
    Datenvorschau habich noch nie benutzt, ich frag mich, ob das was bringt, weil bisher, wennich im Designer was zurechtklickse, dann funzt das auch, und alle paar Minuten mach ich eh einen Testlauf, und dabei der Datenabruf ist ja viel realistischer als diese komische Datenvorschau.

    Storch schrieb:

    bischen nervig rüberkomme
    im Gegenteil!
    Ist für mich voll das Erfolgserlebnis 8o zu sehen, wie wassich sage bei dir ankommt, und da auch funktioniert, ebenso wies bei mir funzt.

    Storch schrieb:

    Es braucht noch der *.xml-Datei um die Daten zu speichern?
    jo, ohne Datei kannman nix speichern.
    Mit einer Art Hack kann man auch das ganze Dateset in die Settings schieben (was letztlich auch eine Datei ist), aber um die Technologie kennenzulernen ist eine richtige Datei besser:
    Die kannste sogar "zum Projekt zufügen", und dann kannste immer gucken, was grad reingeschrieben wurde.

    ErfinderDesRades schrieb:

    Zitat von »Storch«



    bischen nervig rüberkomme
    im Gegenteil!
    Ist für mich voll das Erfolgserlebnis zu sehen, wie wassich sage bei dir ankommt, und da auch funktioniert, ebenso wies bei mir funzt.
    Ein weiterer Punkt, der neben Deiner fachlichen Kompetenz für Dich spricht.

    ErfinderDesRades schrieb:

    Zitat von »Storch«



    Will ich mir aber für das zugefügte feld(Control) die Datenvorschau anzeigen lassen, kommt die
    im Screenshot sichtbare Fehlermeldung
    Jo, Datenvorschau geht wohl nur, wennman eine Datenbank hinterlegt hat, was für deine 10 Datensätze ja der Overkill des Jahres wäre.
    Datenvorschau habich noch nie benutzt, ich frag mich, ob das was bringt, weil bisher, wennich im Designer was zurechtklickse, dann funzt das auch, und alle paar Minuten mach ich eh einen Testlauf, und dabei der Datenabruf ist ja viel realistischer als diese komische Datenvorschau.
    Das mit der Datenvorschau war auch nur ein Versuch von mir.

    Ich werd' dann mal weiter basteln.
    Schönen Sonntag noch für Dich :) :) :)
    GUD Uwe

    :whistling: Wenn ich genau wüsste, was ich nicht weiß, dann wäre mein Wissen vollständig!
    Doch noch nicht so erledigt.


    Ich hab nu Dataset und XML, BindingSource und Navigator, das Tabellchen enthält 3 Datensätze.

    Für den Zugriff dient ein Form mit Textboxen. Laden der Daten bei Form.Activate, Saven derselben bei Form.close

    3 der Tabellenspalten nehmen Pfade auf, die hole ich mir mittels des Folderdialogs.

    Nach öffnen des Forms ist 1. Datensatz aktiv. Ein händisches Ändern der Daten in den Textboxen wird anstandslos gesavt

    Das holen einer Pfadangabe per Code wird problemlos in der Textbox angezeigt.
    Schließe ich jetzt aber das Form (Save() wird ausgeführt) ohne weitere Aktionen im Form zu veranstalten, werden die Änderungen nicht übernommen.
    Wechsel ich nach o.g. Aktion aber den Datensatz, bleibt der per Code geholte Pfad erhalten.

    Was mach ich da nicht richtig?

    Ich weise wie folgt zu:

    VB.NET-Quellcode

    1. Me.txt_updatepath.Text = uwGetDBPath()


    Ich nehme an, ich muss irgendwie das Dataset aktualisiseren aber hab keine Ahnung wie. Alles bisher beäugte Methoden etc. scheinen mir ungeeignet.
    GUD Uwe

    :whistling: Wenn ich genau wüsste, was ich nicht weiß, dann wäre mein Wissen vollständig!
    der Navigator muß weg. Das ist das blödeste Control, was MS sich je hat einfallen lassen. Jede Combobox, Listbox und natürlich DataGridview leisten vielfach mehr als dieses blöde Dingens, bei dem man sich endlos durchklicksen muß.
    Ist bei 3 Datensätzen egal, aber auch 3 Datensätze sind im DGV besser angezeigt.

    Wenn du was einer Textbox zuweist, machste schon was falsch. Textboxen kannste binden.
    Daten holt man aus der BindingSource, aus BindingSource.Current, und eiglich nur, um sie zu verarbeiten, also etwa einen KopierVorgang damit abzufahren oder sowas.
    Anzeige im Gui erledigste wie gesagt besser durch Setzen von Bindings - finden sich da keine Beispiele?


    Schließe ich jetzt aber das Form (Save() wird ausgeführt) ohne weitere Aktionen im Form zu veranstalten, werden die Änderungen nicht übernommen.
    Wechsel ich nach o.g. Aktion aber den Datensatz, ...
    Dassis Konzept bei Databinding: Eine Eingabe wird erst dann abgeschlossen, wenn du den Datensatz wechselst.
    Du kannst den Eingabe-Abschluss auch erzwingen durch Aufruf von BindingSource.EndEdit().

    Im SampleCode von Phonebook gibts doch die #Region "allgemein wiederverwertbar", da ist laden und speichern auch unter Berücksichtigung dieser Finesse gezeigt - ist glaub mit Form.Validate() gelöst.
    Also ich hab die #Region "allgemein wiederverwertbar" genannt, weil der Code darin allgemein wiederverwertbar ist, also mit Copy&Paste auch in anneren DatasetOnly-Anwendungen einsetzbar.

    Storch schrieb:

    ..., bleibt der per Code geholte Pfad erhalten.
    Verstehe ich nicht: Welcher geholte Pfad bleibt erhalten, oder geht verloren?