Hilfe.. Aufstellung einer "ungleichen" If-Anweisung

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von DonDingDong.

    Hilfe.. Aufstellung einer "ungleichen" If-Anweisung

    Hallo zusammen.. :)

    Ich bin gerade dabei ein Programm zuschreiben, wobei ich auf ein Problem gestoßen bin, eine Ausgabe richtig zu schreiben.. Vielleicht habe ich auch einfach nur die falsche Anweisung bzw. Befehl benutzt... Ich schreibe zuvor die Deklaration bzw. den Quellcode und dann mein Problem..

    VB.NET-Quellcode

    1. Private EinmaligBCS As String
    2. Private EinmaligHSI As String
    3. Private Einmalig As String


    EinmaligBCS und EinmaligHSI können für verschiedene Werte stehen:
    (EinmaligBCS für: "" oder "19,95" oder "39,90" oder "39,90 + 19,95")
    (EinmaligHSI für: "" oder "19,90" oder "24,90" oder "29,90" oder "19,90 + 24,90")

    Im insgesamten sollen 3 Textbausteine erstellt werden, in einem wird nur EinmaligBCS und im anderen EinmaligHSI ausgegeben und im letzten beide zusammengefasst. Wenn z.B. EinmaligBCS als "" festgelegt wird, dann wird es umgewandelt in "0,00" :

    Im ersten Baustein:

    VB.NET-Quellcode

    1. If EinmaligBCS = "" Then
    2. EinmaligBCS = "0,00"
    3. End If


    und im 2ten:

    VB.NET-Quellcode

    1. If EinmaligHSI = "" Then
    2. EinmaligHSI = "0,00"
    3. End If


    Mein Problem ist jetzt die Erstellung bzw. Deklaration des "Einmalig" (für den letzten Textbaustein), denn in der dritten Ausgabe werden beide zusammen genommen:

    VB.NET-Quellcode

    1. If EinmaligBCS = "" And EinmaligHSI = "" Then
    2. Einmalig = "0,00"
    3. End If


    oder

    VB.NET-Quellcode

    1. If EinmaligBCS = "" And EinmaligHSI = "19,90" Then
    2. Einmalig = EinmaligHSI
    3. elseif EinmaligBCS = "" And EinmaligHSI = "24,90" Then
    4. Einmalig = EinmaligHSI
    5. elseif EinmaligBCS = "" And EinmaligHSI = "29,90" Then
    6. Einmalig = EinmaligHSI
    7. elseif EinmaligBCS = "" And EinmaligHSI = "19,90 + 24,90" Then
    8. Einmalig = EinmaligHSI
    9. elseif EinmaligBCS = "19,95" And EinmaligHSI = "" Then
    10. Einmalig = EinmaligBCS
    11. elseif EinmaligBCS = "39,90" And EinmaligHSI = "" Then
    12. Einmalig = EinmaligBCS
    13. elseif EinmaligBCS = "39,90 + 19,95" And EinmaligHSI = "" Then
    14. Einmalig = EinmaligBCS
    15. End If


    Total kompliziert, oder... :whistling:

    Jedoch wenn EinmaligBCS nicht "" ist und EinmaligHSI nicht "" ist sollte die Ausgabe:

    VB.NET-Quellcode

    1. Einmalig = EinmaligBCS & " + " & EinmaligHSI


    sein.. Sprich sollte dann in der Ausgabe stehen z.B. "19,95 + 29,90" (wenn EinmaligBCS = "19,95" und EinmaligHSI = "29,90"), jedoch sollte nicht z.B. da stehen "0,00 + 29,90" oder nur " + 29,90" oder "19,95 + 0,00" oder "19,95 + ".

    Als Idee hatte ich die Funktion:

    VB.NET-Quellcode

    1. If EinmaligBCS = "" And EinmaligHSI = "" Then
    2. Einmalig = "0,00"
    3. ElseIf (EinmaligBCS = "19,95" Or "39,90" Or "39,90 + 19,95") And (EinmaligHSI = "19,90" Or "24,90" Or "29,90" Or "19,90 + 24,90") Then
    4. Einmalig = EinmaligBCS & " + " & EinmaligHSI
    5. End If


    Jedoch findet dann keine Ausgabe statt (und das Programm stürzt ab), da der Typ "Boolean" nicht die Zahlen unterstützt..

    Vielleicht habe ich auf nur einen Denkfehler oder die falsche Formel für soetwas genommen, aufjeden Fall half mir eine stundenlange Google- und Forensuche nicht weiter... und hoffe hier eine Lösung zu finden.. :rolleyes:

    Ich hoffe alles gut erklärt zu haben und danke schon jetzt für jede (nach Möglichkeit hilfreiche ;) ) Antwort.

    Viele Grüße

    Jan
    Setz Dir einen Haltepunkt, führe die Anweisung Schritt für Schritt aus und überprüfe, ob das, was er bei jedem Schritt macht, das ist, was Du meinst, was er machen soll.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Hempelchen schrieb:

    Ich glaube das Problem ist, dass er garnicht will das gerechnet wird ^^

    Es kann aber nicht sein dass:

    "39,90 + 19,95" UND "19,90 + 24,90" zusammen treffen?!

    Genau.. es soll nicht gerechnet werden (dann wär's ja auch zu einfach ;) )

    Es kann auch sein, dass da stehen müsste "39,90 + 19,95 + 19,90 + 24,90" ...

    Mit den Haltepunkten hilft es mir leider nicht, da ich bzw. es mir nicht das gewünschte Ergebnis liefert..


    @ Erfinder des Rades:
    Es wird mir dann folgende Meldung ausgegeben:

    Erwartet: Ausdruck
    Es wird ein Komma, ")" oder eine gültige Ausdrucksfortsetzung erwartet.

    DonDingDong schrieb:

    Mit den Haltepunkten hilft es mir leider nicht, da ich bzw. es mir nicht das gewünschte Ergebnis liefert..

    Vergleiche das, was Dein Programm tut mit dem, was Du meinst, was Dein Programm tun sollte.
    Sage: In dieser Zeile erwarte ich, das "jhjhkjhlkh" rauskommt.
    Wenn "jhjhkjhlkh" rauskommt, ist alles i.O. Wenn nicht, hast Du einen Fehler gefunden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Mein Problem ist eig. auch nur, wie genau sollte ich dann den Quellcode schreiben sollte... ?(

    Alle Eigenschaften durchgehen?

    VB.NET-Quellcode

    1. If EinmaligBCS = "19,95" and EinmaligHSI = "19,90" Then
    2. Einmalig = EinmaligBCS & " + " & EinmaligHSI
    3. elseif EinmaligBCS = "19,95" and Einmalig HSI = "24,90" Then
    4. Einmalig = EinmaligBCS & " + " & EinmaligHSI
    5. elseif EinmaligBCS = "19,95" and EinmaligHSI = "29,90" Then
    6. Einmalig = EinmaligBCS & " + " & EinmaligHSI
    7. elseif EinmaligBCS = "19,95" and EinmaligHSI = "19,90 + 24,90" Then
    8. Einmalig = EinmaligBCS & " + " & EinmaligHSI
    9. elseif EinmaligBCS = "39,90" and EinmaligHSI = "19,90" Then
    10. Einmalig = EinmaligBCS & " + " & EinmaligHSI
    11. elseif EinmaligBCS = "39,90" and EinmaligHSI = "24,90" Then
    12. Einmalig = EinmaligBCS & " + " & EinmaligHSI
    13. elseif EinmaligBCS = "39,90" and EinmaligHSI = "29,90" Then
    14. Einmalig = EinmaligBCS & " + " & EinmaligHSI


    usw. ...


    @ ErfinderDesRades.. Hab Visual Studio 2003 .NET

    DonDingDong schrieb:

    Visual Basic Quellcode

    If EinmaligBCS = "" And EinmaligHSI = "" Then
    Einmalig = "0,00"

    ElseIf (EinmaligBCS = "19,95" Or "39,90" Or "39,90 + 19,95") And (EinmaligHSI = "19,90" Or "24,90" Or "29,90" Or "19,90 + 24,90") Then

    Einmalig = EinmaligBCS & " + " & EinmaligHSI

    End If

    Bei dem hier sind die Ausdrücke hinten den Or(en) unvollständig. Da fehlt EinmaligBCS = ...

    Ansonsten hab ich leider Kein Plan, was du vorhast, Sry. Mich verwirren die Bezeichner etwas. Aber auch, wenn ich die Text1, text2 usw nenne ist mir des unklar ...

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    picoflop schrieb:

    DonDingDong schrieb:

    Hab Visual Studio 2003 .NET

    Du weißt schon, dass es vom aktuellen Vb.Net (auch C# Net etc) eine völlig kostenlose "Express" Edition gibt, die nur wenige Einschränkungen hat? So richtig "rund" (IMHO) war .Net auch erst ab 2005 bzw Framework 2.0.

    schon.. bin so'n bißchen OldScool.. ;) ... Hab halt mit dem Programm gelernt...


    GEEEEIIIIILLLL (sry..) @ Vatter !!!

    So logisch...

    Ein EinmaligBCS = oder ein EinmaligHSI = davor zusetzen.. sprich:

    VB.NET-Quellcode

    1. If EinmaligBCS = "" And EinmaligHSI = "" Then
    2. Einmalig = "0,00"
    3. ElseIf (EinmaligBCS = "19,95" Or EinmaligBCS = "39,90" Or EinmaligBCS = "39,90 + 19,95") And (EinmaligHSI = "19,90" Or EinmaligHSI = "24,90" Or EinmaligHSI = "29,90" Or EinmaligHSI = "19,90 + 24,90") Then
    4. Einmalig = EinmaligBCS & " + " & EinmaligHSI
    5. End If


    Geil!! Danke Vatter, und Danke euch allen !!!!!!! Es funktioniert :)

    :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup:

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