SQLiteDataAdapter

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von The_Saint.

    Wie befüllst du derzeit dein Dataset? Zeig mal CodeSnippet.
    Also wenn du nicht solche Übungen in Sql machst.

    Vermutlich hast du nämlich bereits alle Artikel im Dataset, und - wie gesagt - es ist ein Unding, die DB abzufragen, wenn man die Daten doch bereits im Dataset hat. Da braucht man nur einen Filter zu setzen.

    ErfinderDesRades schrieb:

    Wie befüllst du derzeit dein Dataset? Zeig mal CodeSnippet.
    Also wenn du nicht solche Übungen in Sql machst.

    Hallo ErfinderDesRades,

    hm, weis jetzt nicht was du für ein CodeSnippet sehen möchtest.
    Also beim FormLoad steht nach dem ich die Dataset mit den Tabellen aus SQLite eingesetzt habe folgender Code:

    VB.NET-Quellcode

    1. Private Sub erfArtikel_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. 'TODO: Diese Codezeile lädt Daten in die Tabelle
    3. "ErfArtikeldts.tblKategorie". Sie können sie bei Bedarf verschieben oder
    4. entfernen.
    5. Me.TblKategorieTableAdapter.Fill(Me.ErfArtikeldts.tblKategorie)
    6. 'TODO: Diese Codezeile lädt Daten in die Tabelle
    7. "ErfArtikeldts.tblArtikel". Sie können sie bei Bedarf verschieben oder
    8. entfernen.
    9. Me.TblArtikelTableAdapter.Fill(Me.ErfArtikeldts.tblArtikel)
    10. End Sub


    Das Form wurde so wie in Deinen views als Detail befüllt mit der Tabelle
    Artikel, und dort sind auch Comboboxen für die Kategorie und genau
    so wie in deinen views habe ich es hier hinbekommen, dass die KategorieNr
    durch den KategorieNamen ersetzt werden.

    Jedoch möchte ich, wenn der ArtikelName erfasst wird nach den ersten
    Zeichen in einem weiteren DataGridView, das angezeigt wird, sobald, bereits vorhandenen ArtikelNamen mit
    mit den Anfangszeichen übereinstimmen.
    Das klappt auch soweit, aber... ich kriege es nicht hin das im
    DataGridView auch der KategorieName anstelle der KategorieNr angezeigt
    wird.

    Vielen Dank für Deine Geduld, hoffe das ich mich einigermaßen verständlich
    ausdrücken konnte.

    Vielen Dank für Deine Hilfe.

    Viele Grüße
    Genau, was ich sage:

    Vermutung, schrieb:

    Vermutlich hast du nämlich bereits alle Artikel im Dataset, ...

    Bewertung schrieb:

    ... es ist ein Unding, die DB abzufragen, wenn man die Daten doch bereits im Dataset hat.

    Lösung schrieb:

    Da braucht man nur einen Filter zu setzen.

    Also erstell dein FilterDGV im formDesigner, gib ihm eine eigene BindingSource, und dort kannst du beim Textbox_TextChanged den Filter setzen:

    VB.NET-Quellcode

    1. FilterGridBindingSource.Filter="Name Like '"& FilterTextbox.Text &"*'"




    The_Saint schrieb:

    kriege es nicht hin das im
    DataGridView auch der KategorieName anstelle der KategorieNr angezeigt
    wird.
    Im Filtergrid kannst du eine DGVComboColumn verbauen, wie in 4Views gezeigt.


    Wichtige Prinzipien:
    • kein dynamisches Erstellen zusätzlicher DataTables!
      Es darf nur ein Datenmodell geben, also nur ein typisiertes Dataset - keine weiteren DataTables!!. Im typDataset sind alle nötigen DataTables - je genau ein mal, und darin sind die Daten.
      Nur mit diesen Daten wird gearbeitet - mit keinen anneren! Andernfalls ist unvermeidbar, dass du mit Daten arbeitest, die nicht angezeigt werden, oder dass du andere Daten anzeigst, als mit denen gearbeitet wurde.

    • Sql-Abfragen, die per Inner Join die Spalten mehrerer Tabellen zusammenmanschen sind unbrauchbar und unnötig.
      Im Dataset liegen die Daten in getrennten, aber verknüpften Tabellen vor.
      Um "gejointe" Tabellen-Ansichten zu erzeugen nutzt man die Verknüpfungen innerhalb des Datasets - man nutzt kein Sql!