TEXTFELD Abfrage ob es leer ist, Problem Rückabewert ist 0

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von jnpanzer.

    TEXTFELD Abfrage ob es leer ist, Problem Rückabewert ist 0

    Mein Problem schien mir Einfach aber ich bekomme es nicht hin.
    Ich habe eine ein TEXTFELD das ich mit einer Single Variable gefüllt habe.

    Ich möchte folgende Funktion haben
    Bei gleichen Wert Nichts machen ==> OK
    Beim Ändern des Wertes Update ==> OK
    Beim Löschen des Feld soll Delete ausgeführt werden ==> OK
    Beim Erneuten eintrages eines Wertes (nicht 0) wenn das Feld vorher leer war ein Insert ==> OK

    Beim Erneuten eintrages eines Wertes (mit 0) wenn das Feld vorher leer war ein Insert ==> das klappt nicht
    Ich bekomme immer eine 0 zurück obwol das Feld leer ist

    Ich bin ein absoluter Neuling in VB und habe mit Integer, Single und Double Variable benutzt.
    Könnte mir Jemand einen kleinen Tipp geben.

    Mein TEXTFELD

    VB.NET-Quellcode

    1. ' Variable
    2. Dim master_1 As Single
    3. Dim txt_m_1 As Single
    4. ' Wert Des Prozent
    5. prozent = 0,51
    6. txt_master_1.Text = prozent
    7. master_1 = prozent


    Stufe Abfrage

    VB.NET-Quellcode

    1. If txt_master_1.Text = "" Then
    2. txt_m_1 = Nothing
    3. Else
    4. txt_m_1 = CSng(txt_master_1.Text)
    5. End If
    6. Call MsgBox(txt_m_1)
    7. Select Case True
    8. Case (txt_m_1 = Nothing And master_1 = Nothing)
    9. Call MsgBox("Jetzt muss nichts gemacht der Wert ist leer")
    10. Case (txt_m_1 = master_1)
    11. Call MsgBox("Jetzt muss nichts gemacht der Wert ist gleich")
    12. Case (txt_m_1 = Nothing And master_1 <> Nothing)
    13. Call MsgBox("Jetzt löschen befehl")
    14. master_1 = Nothing
    15. Case (txt_m_1 <> Nothing And master_1 = Nothing)
    16. Call MsgBox("Jetzt insert befehl Wert war größer vorher oder war leer ")
    17. master_1 = txt_m_1
    18. Case (txt_m_1 <> master_1 And txt_m_1 <> Nothing)
    19. Call MsgBox("update der feldes ")
    20. master_1 = txt_m_1
    21. End Select

    Hi!

    Zuerst solltest du sinnvolle Namen deine Controls und Variablen geben. Da solltest du dich besser an den Guidelines von Microsoft halten, für fremde Leute ist schwierig zu wissen sonst was die Textbox ist etc etc.

    Wie oben erwähnt solltest etwas klarer dein Problem vorstellen. Trotzdem denke ich, das Problem liegt bei der Komma in der "Prozent" Variable.

    VS nutzt das US-System also sind Kommas die 1000er Trennzeichen und Punkte entsprechen unsere Kommas.

    Ausserdem solltest du mit Option-Strict On arbeiten, sonst passieren solche Sachen sehr gerne.
    Life doesn't give you a datasheet. Sometimes the docs are wrong and you have to try it.

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

    Ich bekomme den Wert 0 zurück ==>
    wenn ich den Eintrag aus den text Feld lösche dann geht er in die Else Abfrage rein

    VB.NET-Quellcode

    1. txt_m_1 = CSng(txt_master_1.Text)


    obwohl er in die erste Abfrage rein gehen müsste...

    VB.NET-Quellcode

    1. If txt_master_1.Text = "" Then


    das verstehe ich nicht, ich lösche den Wert trotzdem gilt das TEXTFELD nicht als leer.
    Mit folgender Code ist alles OK.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. Dim prozent As Single
    4. prozent = 0.51
    5. TextBox1.Text = prozent
    6. End Sub
    7. Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    8. If TextBox1.Text = "" Then
    9. MsgBox("Tb ist leer ")
    10. Else
    11. MsgBox("Problem-Hatte Recht")
    12. End If
    13. End Sub
    14. End Class


    Was ich nicht verstehe ist wann wird der 2ten Teil des Codes (Abfrage) ausgeführt? gibts dafür ein Button oder Ereigniss oder wird unmittelbar nacht Programmstart ausgeführt?
    Life doesn't give you a datasheet. Sometimes the docs are wrong and you have to try it.
    Danke für die Hilfe, Ich muss wohl noch viel...

    Aber ....

    ne geht nicht im meinen Fall
    Sobald ich Variablen nutze und das TextBox in eine Variable schreibe, habe ich das Problem wenn ich ein leere TextBox eine 0 eintrage habe ich das Problem das ich er das nicht macht.



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

    Keine Ursache :)

    Das hier könnte dir ungemein dabei helfen :)

    https://www.microsoft.com/germany/msdn/aktuell/news/MicrosoftVisualBasic2008DasEntwicklerbuch.aspx

    Behandelt Version 2008 aber fürs Lernen von VB und OOP-Basics ist super.
    Life doesn't give you a datasheet. Sometimes the docs are wrong and you have to try it.

    jnpanzer schrieb:

    Ich muss wohl noch viel tiefer einsteigen...
    ganz vorne anfangen und das verlinkte Buch durchackern...

    VB.NET-Quellcode

    1. Dim prozent As Single
    2. prozent = 0.51
    3. TextBox1.Text = prozent

    Option Strict ist nicht ON!
    Visual Studio - Empfohlene Einstellungen
    @VB1963,danke für den Hinweis, es sollte eig

    VB.NET-Quellcode

    1. Dim prozent As Single
    2. prozent = 0.51
    3. TextBox1.Text = CStr(prozent)


    sein!

    Sobald ich Variablen nutze und das TextBox in eine Variable schreibe, habe ich das Problem wenn ich ein leere TextBox eine 0 eintrage habe ich das Problem das ich er das nicht macht.


    Kannst bitte den kompletten Code posten? Ich vermute, dein Programm ist egal was in der Textbox ist, da zur zeit der Abfrage nur den Variableninhalt wichtig ist. Vermutte dass die Variable wird nicht "updated" jedesmal, wenn du die Textbox änderst.

    Und (nur als Tipp, kein Vorwurf) ich rate dir mal in diesem Forum "richtig" zu schreiben, da sonst viele von den (guten und pro) Nutzern werden dir einfach nicht antworten und so verpasst du die besten Antworten, glaub mir.
    Life doesn't give you a datasheet. Sometimes the docs are wrong and you have to try it.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „rgomez“ ()

    @VB1963, weiss ich :P Bin grad nicht bei meinem PC und hier ist halt Strict OFF als Default und hatte bei dem Beispiel nicht aktiviert.

    Aber danke, da ich verweise auf den Fehler und mein Antwort ist genau da auch falsch :huh: , und wenn man hilft dann sollte zumindest RICHTIG helfen :)
    Life doesn't give you a datasheet. Sometimes the docs are wrong and you have to try it.