DataSet

  • VB.NET

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Hallo,
    ich habe im meinre Anwendung ein DataSet ertellt.
    Dieses kann man per Ändern und per Knopfdruck und WriteXML auf die Platte schreiben (Code).
    Dieses funktioniert auf meinem Rechner bereits. Auf anderen Rechnern ist das DataSet zunächst leer und mit WriteXML wird das wird eine neue XML Datei im aktuellen Verzeichnis erstellt.
    Wie kann ich es erreichen, dass das DataSet sozusagen in der .exe Datei enthalten ist, also immer aktuell geladen werden kann?

    Vielen Dank im Voraus
    Ludwig
    Wo kommt es denn in Deinem Programm her?
    Ggf. musst Du die xml-Datei mitliefern.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Pfadangabe im Code - .XML im selben Verzeichniss wie .EXE suchen

    Hallo RodFromGermany,
    das DataSet habe ich erstellt und es soll nun auch gelegentlich (nach Passworteingabe) geändert werden können.
    Du meinst also ich soll die .exe Datei immer mit der .xml Datei "liefern".
    Wie kann ich dann im Code den Pfad angeben, dass die Datei in dem Verzeichniss gesucht wird, indem auch die .exe Datei ist?

    Vielen Dank
    Ludwig

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

    Combobox mit Einträgen aus einer bestimmten Spalte eines DataSet füllen

    Danke, ju1ion.
    Nun habe ich noch eine Frage, wie kann ich die einzelnen Spalten und derne Inhalte ansprechen?
    Ich möchte die Combobox2 mit Einträgen aus der Spalte mit dem Namen aus der Combobox1 befüllen.

    Beispiel: Combobox1.text = Spalte1 ; In Combobox2 sollen alle Einträge der Spalte1 zur Auswahl stehen.

    Vielen Dank im Voraus
    Ludwig
    Ich hoffe, ich hab dich an dieser Stelle richtig verstanden. Sollen in beiden ComboBoxen der gleiche Inhalt stehen?

    Nichts desto trotz:
    Mit folgendem Code müsstest du die ComboBoxen füllen können:
    Zur Information: dTMA ist mein DataTable, MA sollen Mitarbeiter darstellen.

    Ich habe hier also einen Teil eines alten Programms verwendet, um das Vorgehen zu illustrieren. Du müsstest es noch an deine Zwecke anpassen.
    Alternativ zum Test Text in *.Item("TEXT") kannst du auch einen Index verwenden.

    VB.NET-Quellcode

    1. For Each MA In dTMA.Rows
    2. cbAllMitarbeiter.Items.Add(MA.Item("Nachname").ToString() & ", " & MA.Item("Vorname").ToString() _
    3. & " (" & MA.Item("Benutzername").ToString() & ")")
    4. Next
    Lerne aus den Fehlern Anderer! Du hast nicht die Zeit sie selbst zu machen. :thumbup:

    Option Strict On :thumbsup: - Warum?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ju1ion“ ()

    LudwigM schrieb:

    Du meinst also ich soll die .exe Datei immer mit der .xml Datei "liefern".
    Anders herum, die xml zusammen mit der exe liefern. :D
    Du musst natürlich wissen, was da drin stehen muss. Ansonsten stellst Du beim Start fest, dass keine xml da ist und erstellst dann automatisch eine Startkonfiguration.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    ju1ion schrieb:


    VB.NET-Quellcode

    1. For Each MA In dTMA.Rows
    2. cbAllMitarbeiter.Items.Add(MA.Item("Nachname").ToString() & ", " & MA.Item("Vorname").ToString() _
    3. & " (" & MA.Item("Benutzername").ToString() & ")")
    4. Next
    Hallo ju1ion,
    Leider kann ich damit nicht wirklich was anfangen.
    .Rows ist kein Member von dem DataSet!?
    Wo legst du die Tabelle des DataSets fest?
    Als was muss MA deklariert werden?

    Kann ich die Combobox nicht einfach an eine Spalte des DataSets binden?

    Gruß Ludwig
    Hallo,

    bei meinem dTMA handelt es sich um einen DataTable.

    Bei einem DataSet müsst du einfach folgendes tun:

    VB.NET-Quellcode

    1. For Each MA In dTMA.Tables("TABELLENNAME").Rows


    dTMA ist dann kein DataTable mehr, sondern ein DataSet.

    Wie ErfinderDesRades bereits erwähnt hat: Post #7
    Lerne aus den Fehlern Anderer! Du hast nicht die Zeit sie selbst zu machen. :thumbup:

    Option Strict On :thumbsup: - Warum?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ju1ion“ ()

    Databinding?

    Nach dem Tutorial scheint es auch möglich zu sein die Combobox an das DataSet zu binden?
    Ich habe über den Designer bei den Combobox-Aufgaben bei der Datenquelle die BindingSource des DataSets eingestellt. Ferner bei Member die entsprechende Spalte.
    Sollten jetzt nicht die Einträge der Combobox zu sehen sein?

    Ludwig
    Hallo,
    ich habe nun schon länger rum probiert, aber immer noch nicht den Fehler gefunden.
    Ich habe ein DataSet erstellt, dass per Knopfdruck eingelesen wird und in einer DGV angezeigt wird.
    Die Tabelle heißt DataTable1 und darin enthaltene Spalten Spalte1-5.
    Nun habe ich verucht von der Combobox2 der Form1 eine Bindung über die Combobox-Aufgaben herzustellen.
    Als DataSource habe ich die DataTable1 ausgewählt, sogleich wird die DataTable1BindingSource erstellt und unter DataSource angezeigt.
    Dann habe ich als Member Spalte3 ausgewählt.

    Was könnte ich falsch gemacht haben?

    Gruß Ludwig
    Ich bin mir gerade ein bisschen unsicher, wie deine XML aussieht und wie du arbeitest, aber ich hätte da noch eine Idee.
    Ich bin mir sicher, das VB auch die XmlDocument-Klasse besitzt und du diese nach der Instanzierung anwenden kannst.
    Du musst eben noch ein varName.Load(*filename*) machen und dann das DataSet, das dir das XmlDocument zur Verfügung stellt in das Steuerelement "einparsen". (Falls du dich auf's Steuerelement beziehst)
    Dazu empfehle ich dir doch eine Xsd-Datei zur Validierung, da XmlDocument das ebenfalls implementiert hat.

    Krischkros schrieb:

    Du musst eben noch ein varName.Load(*filename*) machen und dann das DataSet, das dir das XmlDocument zur Verfügung stellt in das Steuerelement "einparsen". (Falls du dich auf's Steuerelement beziehst)

    Dazu empfehle ich dir doch eine Xsd-Datei zur Validierung, da XmlDocument das ebenfalls implementiert hat.
    Wofür varName.Load(filename), nach dem Tutorial von ErfinderdesRades sollte es doch auch durch eine einfache Databindung gehen.
    Wie muss ich das genau machen, ich meine mit welchem Code das "Einsparsen"?
    Was ist eine Xsd-Datei Validierung, was bewirkt diese?
    varName ist der Name einer deklarierten XmlDocument Instanz.
    Über die Methode .Load() oder .LoadXml() für den direkten String, kannst du die Xml laden. (Anbei angemerkt, du kannst auch die Klasse dazu verwenden, eine neue zu generieren. Aber das beantworte ich nur, wenn du das konkret fragst)
    Danach hast du Zugriff auf alle Elemente und kannst die via generischen Listen abfragen.
    Die Xsd-Datei bewirkt, das die geladene oder gesicherte Xml gültig ist. Du legst Regeln fest.
    Was darf im Namespace enthalten sein. Welcher Datentyp ist erwünscht. Du kannst auch eigene Gruppierungen, also Datensatzregeln festlegen, das du als Typ oder Element verwendest.
    Das bietet sich auch sehr gut an, wenn man Relationen machen möchte. Läuft ähnlich wie bei relationalen Datenbanken wie MySQL.
    Ich hoffe ich konnte bisschen helfen!

    Krischkros schrieb:

    Über die Methode .Load() oder .LoadXml() für den direkten String, kannst du die Xml laden.

    Bis jetzt habe ich es so gemacht:

    VB.NET-Quellcode

    1. Private _DataFile As New FileInfo(Application.StartupPath & "\DataSet1.xsd")
    2. Public Sub Reload()
    3. If _DataFile.Exists() Then
    4. Me.DataSet1.ReadXml(_DataFile.FullName)
    5. Else
    6. MsgBox(String.Concat("Leider kein DatenFile vorhanden"))
    7. End If
    8. Me.DataSet1.AcceptChanges()
    9. End Sub

    (Nach dem Tutorial von ErfinderDesRades)
    Hat es nicht die gleiche Wirkung wie dein Vorschlag? In der DGV wird es jedenfalls angezeigt.
    Im Verzeichniss sind noch 2 andere Dateien mit dem Namen des DataSets, mit den Endungen .xsc und .xss.
    Was sind das für Dateien, müssen diese auch noch mit geladen werden?

    Ludwig

    ErfinderDesRades schrieb:

    XmlDocument ist auch schön, aber Databinding kann man damit nicht machen.
    Womit kann man dann Databinding machen? Ich dachte aufgrund deiner Tutorials, lade ich das DataSet als .xsd (ReadXML) Datei und kann dann eine Databidung durchführen.
    Meine Frage war, ob dein Code aus dem Tutorial die gleiche Wirkung hat wie der von Krischkros.
    Wattn fürn "Member"? Datamember?, DisplayMember? ValueMember?
    Der Member der Combobox-Aufgaben, also DisplayMember.

    Gruß Ludwig

    LudwigM schrieb:

    Meine Frage war, ob dein Code aus dem Tutorial die gleiche Wirkung hat wie der von Krischkros.
    ich sehe keinen Code von KrischKros. Und wie gesagt: KrishKros' Ansatz verwehrt dir die Möglichkeit von Databinding (und vieles annere auch)

    Was bei deinen Versuchen, eine Combo anzubinden schief läuft, habich keine Ahnung. Vlt. sind keine Daten inne Datei, vlt. lädtst du in ein falsches Dataset, vlt. haste iwas anneres falsch verkabelt - kein Schimmer.
    kannstes mal lauffähig zippen, meist finden sich solche Fehler sehr schnell.