Dataset/Datatable Werte lesen und schreiben

  • VB.NET

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

    Dataset/Datatable Werte lesen und schreiben

    Hi,
    ich hab hier mal gesucht aber nichts passendes gefunden, daher die Frage:

    Wie lese ich Werte aus einer Datatable aus und wie schreibe ich sie rein?
    Ich habe DGVs in die Werte eingegeben werden und anschließend ins Dataset gespeichert werden.
    Folgendes habe ich schon probiert:
    Blech = Form1.DS.dtElemente(0).dtBlecheID
    Blech = Form1.DS.Tables("dtElemente").Rows(0).Item("dtBlecheID")
    ...und einige Abwandlungen nach diesem Muster.
    Noch als Zusatzinfo:
    DS: mein Dataset
    dtElemente: Datatable mit ComboboxColumns (ist allerdings eine Außnahme, sonst sind es normale Spalten. Wie es da ist konnte ich noch nicht testen, da die obige Abfrage die erste Zeile ist...)
    Der Code steht in einem Modul.
    vier Views-Videos - Film VIII

    Und Bitte!
    Du hast ein typisiertes Dataset, also benutze es auch typisiert.

    VB.NET-Quellcode

    1. Blech = Form1.DS.Tables("dtElemente").Rows(0).Item("dtBlecheID")
    ist untypisierter Crap - guck dir den Film an.

    Es muss heißen:

    VB.NET-Quellcode

    1. dim BlechID As Integer = DS.dtElemente(0).dtBlechID
    Was natürlich auch Quatsch ist, denn im Code braucht man niemals eine ID.
    Auch schön zu sehen, wie deine suboptimale Benamung im Dataset-Designer sich nun rächt dadurch, dass entsprechend subobptimale Codenamen generiert sind, die die Lesbarkeit ziemlich heruntersetzen.
    Hättest du ohne die unnützen Prefixe benamt, könnte dort schlicht stehen::

    VB.NET-Quellcode

    1. dim BlechID As Integer = DS.Element(0).BlechID
    (wie gesagt: Quatsch - eine ID braucht man nie)


    Ach, und der Code sollte in keinem Modul stehen, und vor allem sollte man niemals so wie du es tust ins Form1 grabschen.
    Form1 ist ein Datentyp, ist kein Objekt.
    VB mogelt da, das scheint zwar einfach, aber letztendlich sind Vb-Progger deshalb oft unfähig, Objekte von Datentypen zu unterscheiden.

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Dass mein Code Müll ist weiß ich.

    Wenn ich jetzt

    VB.NET-Quellcode

    1. index = Form1.Datas.dtElemente(0).dtBlecheID
    2. Blech = Form1.Datas.dtBleche(index).Blechmodell

    mache, gibt er mir (für mein Beispielblech) einen Fehler aus, da er index = -3 setzt.
    Der index wird über eine ComboboxColumn bestimmt. Als Laie würde ich einfach den index mit (-1) multiplizieren; aber das wird wahrscheinlich Probleme geben.

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

    was sich im DGV und in ComboboxColumns abspielt ist doch ohne Belang.
    Hast du eine typisierte dtElementeRow vorliegen?
    Dann ruf halt deren dtBlechRow-Property ab, wenn du die zugehörige dtBlechrow haben willst (und mach mal diese vermaledeiten Prefixe weg!)

    guck dir deine generierten Klassen im ObjectBrowser an - jede einzelne Property jeder Klasse genau angucken und verstehen, welchen Datentyp die hat, wozu die gut ist.
    gugge Film VII - Inspection, um zu verstehen, was mit angucken gemeint ist.

    Wie gesagt: im typDataset braucht man die ID eines Datensatzes so gut wie nie.