Codeschnipsel in Variable "verstecken"

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    Codeschnipsel in Variable "verstecken"

    Moin,

    ich arbeite zurzeit viel mit Datasets und diese im Code immer und immer wieder aufzurufen ist bei mehreren abschnitten Code ziemlich unübersichtlich. (Meine Meinung)

    VB.NET-Quellcode

    1. Dataset.Datatable().Rows().Item()


    Ist es vielleicht möglich, da der vordere Teil unverändert bleibt, eine Variable zu deklarieren in der man den vorderen Teil des Codes "versteckt".

    Bsp.:

    VB.NET-Quellcode

    1. Dim XY as YX = Dataset.Datatable()
    2. Sub AB()
    3. XY.Rows().Item()
    4. End Sub


    So in der Art hätte ich mir das gedacht, leider weiß ich auch nicht so wirklich nach welchem Schlüsselwort ich Googlen muss, um unter Umständen eine Lösung zu finden, daher probiere ich es hier einmal.

    Mit einer Using-Anweisung ist es sicher umsetzbar, nur ich hätte an etwas ,,Globaleres" Gedacht, also nicht Sub/Function bezogen
    ?(

    Silvergreen schrieb:

    VB.NET-Quellcode

    1. Dataset.Datatable().Rows().Item()
    kompiliert nicht.
    Bitte immer syntaktisch richtigen Code einstellen - am besten mit Copy&Paste genau dem Projekt entnommen, an dem du arbeitest.

    XY.Rows().Item() funktioniert übrigens auch nicht.

    Es gibt verschiedene Möglichkeiten, umständlichen Code zu vereinfachen - kommt auch darauf an, ob du evtl ein typisiertes Dataset verwendest?
    Dann hätte man noch weitergehende Möglichkeiten.
    (Die gezeigte fehlerhafte Syntax ähnelt auch eher dem, was in einem typDataset möglich wäre.)
    So wie ich es verstanden habe kannst du jedes Objekt als Variable deklarieren.

    Aber ich habe eine ganz ähnliche Frage dazu:
    Ich habe Folgendes

    VB.NET-Quellcode

    1. Dim i as integer = 0
    2. Dim var() as String
    3. Dim arraytb() as TextBox
    4. arraytb = {TextBox1, TextBox2, TextBox3}
    5. For each tb in arraytb
    6. var(i) = tb.Text
    7. i= i+1
    8. Next


    Stattdessen geht das hier nicht. (Und anders wohl auch nicht, sodass ich mir ".Text" an der Variable tb spare?)

    VB.NET-Quellcode

    1. Dim i as integer = 0
    2. Dim var() as String
    3. Dim arraytb() as TextBox.Text
    4. arraytb = {TextBox1.Text, TextBox2.Text, TextBox3.Text}
    5. For each tb in arraytb
    6. var(i) = tb
    7. i = i+1
    8. Next

    Weil TextBox1.Text ja eigentlich nur ein String ist der gar nichts mehr mit der TextBox zutun hat?

    Dieser Beitrag wurde bereits 11 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()

    Dim arraytb() as TextBox.Text? Nach As kommt ein Datentyp. TextBox.Text ist aber eine String-Property eines Controls. Kein Datentyp. Der Datentyp von TextBox.Text ist String. Wenn Du Option Infer On hast, kannst Du Z#3 und #4 zusammenfassen: Dim arraytb = {TextBox1.Text, TextBox2.Text, TextBox3.Text}. Ansonsten:

    VB.NET-Quellcode

    1. Dim arraytb As String()
    2. arraytb = {TextBox1.Text, TextBox2.Text, TextBox3.Text}

    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.

    ErfinderDesRades schrieb:


    am besten mit Copy&Paste genau dem Projekt entnommen, an dem du arbeitest.


    Meine Code geht so:

    VB.NET-Quellcode

    1. DS_Komponenten.Tables("Komponenten").Rows(5).Item("Komp_Nr")


    Ich hatte einmal das probiert:

    VB.NET-Quellcode

    1. Dim DSKomp As DataTable = DS_Komponenten.Tables("Komponenten")
    2. DSKomp.Rows(5).Item("Komp_Nr")


    Das hatte sogar testweise ,,funktioniert", da er schonmal keinen Fehler mehr anzeigte,
    leider war DSKomp zur Laufzeit allerdings Nothing.
    ?(

    Silvergreen schrieb:

    leider war DSKomp zur Laufzeit allerdings Nothing.
    Das bedeutet, dass das Dataset keine Tabelle dieses Namens enthielt.
    Kann der (vereinfachte) Code an dieser Stelle nix für.
    Umständlicher Code wäre ebenso Nothing - also

    VB.NET-Quellcode

    1. ' wenn
    2. Dim DSKomp As DataTable = DS_Komponenten.Tables("Komponenten")
    3. DSKomp.Rows(5).Item("Komp_Nr")
    4. ' eine NullReferenceException auslöst, wird
    5. DS_Komponenten.Tables("Komponenten").Rows(5).Item("Komp_Nr")
    6. 'das ebenso tun

    Probier übrigens auch mal so:

    VB.NET-Quellcode

    1. Dim DSKomp = DS_Komponenten.Tables("Komponenten")
    2. DSKomp.Rows(5)("Komp_Nr")
    3. DS_Komponenten.Tables("Komponenten").Rows(5)("Komp_Nr")
    Hmm - das ist doch ärgerlich - dein Code kann gar nicht so gewesen sein:

    VB.NET-Quellcode

    1. DS_Komponenten.Tables("Komponenten").Rows(5).Item("Komp_Nr")
    Das ist doch nur ein Ausdruck, der so alleine garnet stehen kann. Das muss doch an irgendetwas zugewiesen werden, oder einer Methode übergeben werden oder was.
    Bitte hör auf, uns zu verkackeiern und poste glaubhaften Code. :cursing:

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