Gehe nicht ins minus, gehe nur ins Plus, ziehe Geld ein !

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von slice.

    Gehe nicht ins minus, gehe nur ins Plus, ziehe Geld ein !

    Hallo leute,

    hab mal wieder ein Brake... und nach stunden suchen habe ich hier im Forum nicht das Richtige gefunden.

    Ich habe ein Button und ein Label.
    Das Label hat eine zahl von 25000, wenn ich den Button klicke sollen 5726 abgezogen werden..... Funktioniert perfekt !!!!
    Aber wenn ich jetzt 4x auf den Button geklickt habe bleibt eine Summe von 2096, klicke ich jetzt noch einmal möchte ich das er sagt sie haben kein Geld mehr (er soll nicht ins minus gehen)

    hier mal mein versuch: (im Klick)

    VB.NET-Quellcode

    1. If MessageBox.Show("Möchten sie wirklich die kleine Halle monatlich für 5.726 ,- € Mieten?", "Information", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
    2. Lagerplaetze_Gesamt.Text = Lagerplaetze_Gesamt.Text + 100
    3. Arbeiter_Gesamt.Text = Arbeiter_Gesamt.Text - 10
    4. Strom_Gesamt.Text = Strom_Gesamt.Text - 447
    5. fKonto.Text = fKonto.Text - 17187
    6. fKonto.Text = fKonto.Text - 5726
    7. ElseIf fKonto.Text = -0 Then
    8. MessageBox.Show("Leider haben sie zu wenig Geld auf Ihren Frimenkonto.", "Information ...", MessageBoxButtons.OK)
    9. End If

    Erstmal vorweg... Daten niemals im Control (Label, usw.) speichern. Lieber dafür eine eigene Variable nehmen mit passendem Datentyp.

    Jetzt zu deinem Problem:

    Du musst den aktuellen Wert prüfen ob kleiner/großer als das was zu subtrahieren willst. In etwa so:

    C#-Quellcode

    1. int konto = 25000;
    2. int kosten = 2726;
    3. if(kosten < konto)
    4. {
    5. // OK
    6. }
    7. else
    8. {
    9. // Kein Geld mehr...
    10. }
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!
    Du willst ja auch den Datentyp angeben:

    VB.NET-Quellcode

    1. Dim kosten As Integer = 2726


    Um das später dem Label zuzuweisen, musst du .ToString() aufrufen.

    Solltest du irgendwann mal den Text (String) einer Textbox in ein Integer umwandeln müssen, gibt es die Methode int.TryParse
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!
    Okay.

    ich hatte es jetzt erstmal als String gesetzt hatte auch gut funktioniert.

    Also er zeigt es jetzt an im nur klicke ich den Button rechnet er noch nicht runter.

    hier mal ein ausschnitt

    VB.NET-Quellcode

    1. Dim Firmenkontosumme As String = 25000


    VB.NET-Quellcode

    1. fKonto.Text = Firmenkontosumme


    VB.NET-Quellcode

    1. If Firmenkontosumme(5726 < Firmenkontosumme) Then
    2. MessageBox.Show("Möchten sie wirklich die kleine Halle monatlich für 5.726 ,- € Mieten?", "Information", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes
    3. ElseIf Firmenkontosumme = "0" Then
    4. MessageBox.Show("Leider haben sie zu wenig Geld auf Ihren Frimenkonto.", "Information ...", MessageBoxButtons.OK)
    5. End If


    Ich weis das letzte ist falsch da hapert es noch :D

    VBHunter schrieb:

    hier mal ein ausschnitt

    VB.NET-Quellcode

    1. Dim Firmenkontosumme As String = 25000



    Das seien nix String soweit ich weiß. :) Ich empfehle dir übrigend deine Datentypen direkt zu Kennzeichen, also quasi so: "intCompanyBankAccountSum". So kann man im Code später direkt erkennen um was für einen Datentyp es sich handelt (falls ein anderer mal deinen Code sieht).

    Update #1: Ähh, wat?

    VB.NET-Quellcode

    1. Dim Firmenkontosumme As String = 25000


    brauchst du nicht, da

    VB.NET-Quellcode

    1. fKonto.Text =


    schon "String" ist.

    Also wäre es dann so:

    VB.NET-Quellcode

    1. fKonto.Text = "25000"


    Finde ich aber persönlich nicht so schön.

    Update #2:

    Auch wenn ich warscheinlich gleich dafür gesteinigt werde, aber ich würde es so schreiben:

    VB.NET-Quellcode

    1. Dim intCompanyBankAccountSumAs Integer = 123123
    2. lblYourLabel.Text = CType(intCompanyBankAccountSum, String)


    Update #3: Steige durch deine uctl-Bezeichnung nicht ganz durch. Kannst du mal deine Projektmappe hochladen, dann kann man sich das ganze mal anschauen. Ich spreche von Labels kann auch sein, dass du Textboxen meinst. Danke. P.S.: Auch uctl's kannst du eindeutig kennzeichnen. :) Label = lblYourLabel, Textbox = txtbxYourTextBox, etc...

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

    Hm.... Ich hatte integer auch probiert aber er spuckt nur die Summe aus 25000..... wenn ich jetzt kaufen klicke nix

    ich hänge gerade hier fest:

    VB.NET-Quellcode

    1. If MessageBox.Show("Möchten sie wirklich die kleine Halle monatlich für 5.726 ,- € Mieten?", "Information", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
    2. End If
    3. If (5726 < Firmenkontosumme) Then
    4. Lagerplaetze_Gesamt.Text = Lagerplaetze_Gesamt.Text + 100
    5. Arbeiter_Gesamt.Text = Arbeiter_Gesamt.Text - 10
    6. Strom_Gesamt.Text = Strom_Gesamt.Text - 447
    7. Firmenkontosumme = Firmenkontosumme - 17187
    8. Firmenkontosumme = pKonto.Text - 5726
    9. ElseIf Firmenkontosumme = "0" Then
    10. MessageBox.Show("Leider haben sie zu wenig Geld auf Ihren Frimenkonto.", "Information ...", MessageBoxButtons.OK)
    11. End If
    12. End Sub
    Stimmt hab ich mal entfernt

    VB.NET-Quellcode

    1. If MessageBox.Show("Möchten sie wirklich die kleine Halle monatlich für 5.726 ,- € Mieten?", "Information", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
    2. ElseIf (5726 < Firmenkontosumme) Then
    3. Lagerplaetze_Gesamt.Text = Lagerplaetze_Gesamt.Text + 100
    4. Arbeiter_Gesamt.Text = Arbeiter_Gesamt.Text - 10
    5. Strom_Gesamt.Text = Strom_Gesamt.Text - 447
    6. Firmenkontosumme = Firmenkontosumme - 17187
    7. Firmenkontosumme = pKonto.Text - 5726
    8. Else Firmenkontosumme = "0"
    9. MessageBox.Show("Leider haben sie zu wenig Geld auf Ihren Frimenkonto.", "Information ...", MessageBoxButtons.OK)
    10. End If

    VB.NET-Quellcode

    1. ​Dim Konto as Integer = 25000
    2. Dim Kosten as Integer = 2726
    3. if Konto < Kosten Then
    4. 'Zu wenig geld
    5. Else
    6. 'Genug Geld
    7. End if
    if Brain.Enabled = False Then
    Process.start("C:\Brain.exe")
    End if
    __________________________________________________

    Error: Brain.exe not found System shut down
    Achso also die Kosten muss ich auch immer als variable setzen ....
    Dachte ich kann es so abziehen lassen da diese Summe /kosten ja nur einmal vorkommt

    Ich werde Mal versuchen das so einzubauen und testen. Aber erst morgen ....

    Danke erstmal an euch alle
    Kann man auch machen aber das finde ich sauberer

    Zitat entfernt. ~Thunderbolt
    if Brain.Enabled = False Then
    Process.start("C:\Brain.exe")
    End if
    __________________________________________________

    Error: Brain.exe not found System shut down

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

    Guten Morgen,

    habs geschaft das er es Checkt und auch abzieht. Wenn ich aber an meiner MassageBox ein YesNo mache zeigt er ein fehler

    VB.NET-Quellcode

    1. If Kleineslagermiete < Firmenkontosumme Then
    2. MessageBox.Show("Möchten sie wirklich die kleine Halle monatlich für 5.726 ,- € Mieten?", "Information", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes
    3. Firmenkontosumme = Firmenkontosumme - Kleineslagermiete
    4. fKonto.Text = CType(Firmenkontosumme, String)
    5. Else
    6. MessageBox.Show("Leider haben sie zu wenig Geld auf Ihren Frimenkonto.", "Information ...", MessageBoxButtons.OK)
    7. End If



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

    VBHunter schrieb:

    nach Else die MassageBox
    Erst die Else, dann die Massagebox. Gute Reihenfolge ;) Die nehm ich mir für's Wochenende vor :P


    btt:
    Grundlagenwissen, wo bist Du?

    Das Ergebnis der MessageBox auf Yes festzulegen, bringt Dir nix. Du musst das Ergebnis per If mit Yes vergleichen. Dann wird ein Schuh draus.

    VB.NET-Quellcode

    1. Dim MieteKleinesLager As Integer = 5726
    2. Dim Firmenkontosumme As Integer = 10000
    3. Private Sub TesteBonitaet()
    4. If MieteKleinesLager > Firmenkontosumme Then
    5. MessageBox.Show("Leider haben sie zu wenig Geld auf Ihren Firmenkonto.", "Information")
    6. fKonto.Text = Firmenkontosumme.ToString
    7. Exit Sub
    8. End If
    9. If MessageBox.Show("Möchten sie wirklich die kleine Halle monatlich für 5.726 ,- € mieten?", "Information", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then Firmenkontosumme -= MieteKleinesLager
    10. End Sub


    ACHTUNG: Hab routinemäßig die Namen etwas angepasst und die Rechtschreibung in Deinem Code korrigiert. Ob die beiden Beträge als Integer-Ganzeurobeträge gut sind, sei mal dahingestellt.
    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.

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

    Danke dir für dein umgebauten Code... aber jetzt passier da wieder garnichts. Er sagt mir ich habe zu wenig Geld.... drück OK und dann kommt Kaufen JA/NEIN.... drücke ich Ja passiert nix weiter .... gleiche bei Nein
    Sorry. Zeichenfehler. Die Logik ist ja auch unübersehbar. "If Miete > Kapital Then Fehler". Habe es oben korrigiert.
    Allerdings kann kein Kaufen ja/nein kommen, da die Prozedur über das Exit Sub (Zeile#9) vorzeitig verlassen wird und die Zeile#12 somit nicht mehr abgearbeitet wird.
    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.

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

    Ja gut... hatte trotzdem noch nicht funktioniert, hab ihn wieder zerlegt und das kam raus.

    VB.NET-Quellcode

    1. If Kleineslagermiete > Firmenkontosumme Then
    2. MessageBox.Show("Leider haben sie zu wenig Geld auf Ihren Firmenkonto.", "Information")
    3. Exit Sub
    4. End If
    5. If MessageBox.Show("Möchten sie wirklich die kleine Halle monatlich für 5.726 ,- € mieten?", "Information", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
    6. Firmenkontosumme -= Kleineslagermiete
    7. fKonto.Text = Firmenkontosumme.ToString
    8. End If


    und so funktioniert es !!!!

    Was ist wenn ich jetzt noch weitere dinge abziehen will (z.b. + 500 Kaution).... er soll ja dann z.b. sagen sie haben zu wenig Geld für die Kaution

    EDIT:
    Man sollte auch ein wenig nachdenken :D ..... hab den Fehler gefunden.... Ich muss natürlich X > Y richtig benennen

    Besten dank euch allen ... schließe das Thema !!! ;)

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

    Sehr viel weniger Code wird es kaum.
    Den Inhalt von

    VB.NET-Quellcode

    1. If Stromgesamt > Firmenkontosumme Then
    2. MessageBox.Show("Leider haben sie zu wenig Strom, erweitern sie Ihr Kraftwerk!", "Information")
    3. Exit Sub
    4. End If

    Erschließt sich mir nicht. Aber ist ja Dein Projekt. Was hat eine Energiemenge mit dem Geld auf dem Firmenkonto zu tun? Außerdem kommen nur stückelhaft neue Informationen. Wäre sinnvoll, erstmal zu beschreiben/erklären, worum es überhaupt im Gesamten geht. Sonst hangeln wir uns von einem zum anderen Problem, nur um nach 30 Posts festzustellen, dass es für alles ne ganz einfache, aber auch ganz andere Lösung gibt.
    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.
    Ja sorry :/ bin ja kein Profi, ich steiger mich ja da erst rein....

    aber noch mal kurz, wie bekommt man das hin das er statt 25000 .... 25.000 € anzeigt ?


    Danach komm ich bestimmt erstmal allein klar :thumbsup: