Dataset bzw datatabel neu laden beim öffnen einer Form

  • VB.NET

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

    Dataset bzw datatabel neu laden beim öffnen einer Form

    Hallo,

    ich habe mir eine Form gemacht um in einer Datenbank über den Namen auf eine Artikelnummer zu schließen.

    Man gibt in einem Textfeld einen Begriff und bekommt, in einem Datagridview, alle Artikel angezeigt in dennen diese Buchstaben vorkommen.
    Also ich schreibe Cola und es werden alle Artikel angezeigt in dennen Cola vorkommt.

    das ganze habe ich mit einem DataTable gemacht. Bei jedem eingeben in dem Textfeld wird ein RawFilter neu gesetzt und so die Auswahl immer weiter eingeschrängt.

    Das Dataset/Datatable wird beim öffnen der Form erstellt und mit Fill mit Daten gefüllt.
    Die Form wird nur für diesen zweck erstellt und die Rausgesuchte Artikelnummer später in der Form1 weiter verarbeitet.

    Läuft auch alles. Problem: wenn ich die Form ArtikelSuchen ein zweites mal öffne, bekomme ich eine Fehlermeldung das die Datatable schon zum Dataset gehört.

    VB.NET-Quellcode

    1. DataSetArtikel.Tables.Add(DtRezeptur)


    ich beende die Form mit:

    VB.NET-Quellcode

    1. DtRezeptur.Clear()
    2. DtRezeptur.Dispose()
    3. DataSetArtikel.Clear()
    4. DataSetArtikel.Dispose()


    hilft aber nix.

    wie kann ich denn das Dataset endgültig löschen um die Form ein zweites mal aufrufen zu können?
    Ich rieche schon sowas wie:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. ArtikelSuchen.Show
    3. 'und ggf.
    4. Me.Hide
    5. End Sub

    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.
    „VaporiZed“: Du liegst fast richtig.

    VB.NET-Quellcode

    1. FormArtikelSuchen.ShowDialog(Me)




    @'VB1963

    VB.NET-Quellcode

    1. DaRezeptur.SelectCommand.CommandText = SQL
    2. DaRezeptur.Fill(DtRezeptur)
    3. DataSetArtikel.Tables.Add(DtRezeptur)
    4. DvRezeptur = New DataView(DataSetArtikel.Tables("Rezeptur"))

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

    Schau mal bitte hier rein: Dialoge richtig instanziieren
    Denn nachdem Du das beherzigt hast, wird das mit dem Doppelfüll sich in Luft auflösen.
    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.

    frifri schrieb:

    bekomme ich eine Fehlermeldung das die Datatable schon zum Dataset gehört.
    Wenn du eine Tabelle aus dem DS entfernen möchtest, musst du das auch in der DataTableCollection machen so wie du es mit der .Add-Methode gemacht hast...

    VB.NET-Quellcode

    1. ​Dim dts As New DataSet
    2. If Not dts.Tables.Contains("Test") Then dts.Tables.Add(New DataTable("Test"))
    3. If dts.Tables.Contains("Test") Then dts.Tables.Remove("Test")
    Aber wieso wird die DataTable dem Dataset überhaupt hinzugefügt?
    Sowas soll man nicht machen.

    Ein Dataset gestaltet man im Dataset-Designer, und dann ists fertig, und da frickelt man nicht zur Laufzeit noch dran rum - solch ist sehr unübersichtlich, und zeitigt leicht unerwünschte Nebeneffekte, wie man sieht.l
    Ein Dataset gestaltet man im Dataset-Designer, und dann ists fertig, und da frickelt man nicht zur Laufzeit noch dran rum


    Ich weiß erst zur Laufzeit wo sich die Datenbank befindet, beim Dataset-Designer kann ich den Pfad nicht über eine Variable festlegen(soweit ich weiß).

    *Vollzitat entfernt* ~NoFear23m

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

    frifri schrieb:


    Ich weiß erst zur Laufzeit wo sich die Datenbank befindet, beim Dataset-Designer kann ich den Pfad nicht über eine Variable festlegen(soweit ich weiß).


    Das ist zwar auch nicht gut, aber wenn du erst zur Laufzeit die DAtenbank festlegst, das stört das designete Dataset doch nicht.

    *Vollzitat entfernt* ~NoFear23m

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