Visible.false felder auslesen

  • VB.NET

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

    Visible.false felder auslesen

    Wie die Headline schon sagt, möchte ich ein Feld auslesen welches mit Visible.False deklariert ist.
    Da gibt er mir aber nur eine leere zeichenfolge zurück bzw keine.
    Wenn man es kurzzeitig visible.True setzt geht es.
    Nur da ich jeweilige Prozedur öfters öfnen muss und immer wieder mal auch mit anderen Prozeduren darauf zugreifen muss ist das ein umständlicher weg.

    Gibt es eine möglichkeit ein Visible.False Feld mit zum Beispiel:

    VB.NET-Quellcode

    1. me.txtID.text


    auszulesen?
    1. Was ist ein "Feld"?? Label? Textbox?

    2. Eigentlich sollte die Visible Eigenschaft keinen Einfluss auf den Textinhalt des Controls haben. Wird das "Feld" denn auch korrekt befüllt?

    Ansonsten probiere einfach ma folgendes in einem neuen Projekt aus
    Erstelle eine Textbox oder ein Label:

    VB.NET-Quellcode

    1. Textbox1.Visible = False
    2. Textbox1.Text = "Hallo"
    3. MsgBox(Textbox1.Text)


    Also ich könnt mir keinen Reim drauf machn wieso das nicht funktionieren sollte.
    Aber ansonsten wieso ist das "Feld" auf Visible = False? Nutzt du das Feld als Variable? Oder ist das Feld zu irgendeinem Zeitpunkt mal sichtbar?
    Also das Feld ist eine textbox, welche gebunden ist an eine Tabelle.
    Die angabe darin wird automatisch ermittelt und hat den Primärschlüssel der Tabelle.
    Ist für späteres um die Tabelle mit anderen zu kombinieren.
    Deshalb ist die textbox auf Visible = false eingestellt.
    Kann natürlich sein das man sich den Wert auch anders auslesen bzw reinschreiben kann.
    Nur weis ich da nicht wie. Der Wert in der Textbox darf eben nie leer oder doppelt vorkommen.

    Dein Tip mit reinschreiben, den habe ich angewendet, vorher schon. das Funktioniert.
    Nur eben beim auslesen nicht.
    ich kann dir mal den Quellcode dazu posten, wo ich es brauche.

    VB.NET-Quellcode

    1. txtID_Namen.Visible = True
    2. ID_Bestimmen = txtID_Namen.Text
    3. txtID_Namen.Visible = False
    4. txtCommand = "delete * from tbl_Namen " & _
    5. "where ID_Namen = " & ID_Bestimmen


    Alos die 1. und 3. Zeile stehen deshalb drin, da ich sonst einen rückgabewert von "" bekomme mit der 1. und 3. Zeile bekomme ich ein rückgabe wert beispiel "3"

    Achso die Textbox wird als integer ausgelesen und eingelesen wenns wichtig ist, was ich nicht glaube. wobei ich hier auch gleich mein 2. Problem ansprechen kann, das der string leider keine löschung zu folge hat.

    Das selbe mit anzeigen und funktioniert, wobei ich da ohne where arbeite.
    Dein Problem ist unlogisch. Visible hat keinerlei Wirkung auf Text - Notier dir mal was er dir jetzt ausgibt und was er dir ausgibt wenn du 1. und 3. Zeile rauskommentierst. Kann mir nicht vorstellen, dass da tatsächlich ein Unterschied ist.
    Habe ich auch schon gemacht für Fehleranalyse.

    Den einzigen fehler den er gibt ist:

    Ungültige Konvertierung in der Zeichenfolge in Typ integer.

    Aber der Fehler denke ich tritt auf da versucht wird ein Wert "" an die Variable weiterzugeben.
    Da wenn es auskommatiert ist halt kein Wert übergeben wird.

    Logisch erscheint es mir auch nicht.
    Hab noch weitere test gemacht.
    Habe mir mal die textbox im debugging modus schrit für schritt von anfang an anzeigen lassen.

    Bei visible= true

    wird es direkt beim laden angezeigt also der inhalt wird erkannt.

    bei visible=false

    wird der inhalt zu keinem zeitpunkt erkannt.

    Meine vermutung war jetzt, das man irgendwo einstellen kann, das man auf "unsichtbare" Elemente nicht zugreifen kann also nicht auslesen kann.
    Was mir nur merkwürdig vorkommt ist, das man bei visible = false drotzdem schreiben kann aber nicht auslesen kann.
    Soll nur nochmal als idee sein.
    Sobald ich eine lösung gefunden habe sage ich hier bescheit.

    Nehme auch gerne eine andere lösung an, wie ich den primärschlüssel auslesen und beschreiben kann ohne das der anwender das Feld sieht.
    Mhh habe es auch mal getestet mit nem ner neuen textbox also neu reingezogen per drag and drop aus der tabelle und auf visible false gestellt. da ist das selbe.

    habe dann ein neues projekt geöffnet mit 3 x textbox und 1 command
    1 text box ist visible = false

    dann eingegeben textbox1 = textbox2 also in der 2. gebe ich einen wert ein.
    danach textbox3 = textbox 1

    nun sehe ich in der textbox 3 nichts aber im debuggen hat die textbox 3 einen wert angeblich.

    Edit:

    Habe noch weiter geforscht und den Punkt gefunden.
    Da die textbox visible=false ist liest er keine Inhalte aus, die im datensatz aber vorhanden sind.
    Zum Beipiel wenn ich die Datensätze per navigationsleiste durchscrolle und ich sage mal bei DS-4 stehen bleibe
    und auslesen möchter per:
    Variable=me.meinfeld.text liest er nichts aus.
    anders sieht es aus wenn ich daten hineingeschrieben habe.
    Da kann ich jeweiligen wert auslesen, eben nur nicht den, der von der DB beim einlesen der Daten "angezeigt" wird.

    Nur warum ist das so?
    Wie soll man den primärschlüssel dann auslesen wenn der Anwender Ihn nicht sehen soll?

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

    textbox.Visible=true und variable einlesen

    hallo

    schon bald ein jahr zurück, aber hab soeben den zusammenhang zum problem warum vb express die daten nicht liest und wann er sie liest aus der datenbank.

    wenn du im eigenschaftsfenster der textbox den visible wert auf true setzt, dann gibt es beim auslesen der textbox.text keinen wert mit dem befehl zb. msgbox(textbox.text) oder xy=textbox.text
    setzt du den visible wert zb. im form_load auf true, dann funktioniert es und du erhälst den datenbankwert achte jedoch darauf dass im eigenschaftsfenster der box der wert auch standardmässig auf false liegt.

    ich hab das nun geschrieben, da ich am selben problem hängengeblieben bin und hier die erklärung nicht fand, jedoch die frage dazu.

    gruss loriculus