Konvertierungsproblem beim Umwandeln einer Zahl Verfasst am: 17.09.2011, 10:31
Hallo Zusammen,
erst einmal ein Kompliment für das tolle Forum. Habe hier schon wertvolle Tips gefunden.
Jetzt habe ich aber ein Problem für das ich noch keine Lösung finden konnte und hoffe auf Unterstützung.
Kurze Erklärung:
Ich multipliziere Zahlen mit Minuten und teile das Ergebnis dann in Stunden und Minuten. Um das zu lösen, arbeite ich mit Teilergebnissen mit den ich dann weiterrechne.
Soweit so gut. Wenn ich eines meiner Ergebnisse (Nr. jetzt weiterverwenden will, bekomme ich aber folgende Meldung: "Beim Umwandeln aus einer Zahl muss der Wert eine Zahl sein, die kleiner als unendlich ist."
Ich verstehe nur nicht warum, da ich die gleiche Logik verwende wie bei den vorherigen Berechnungen.
Hier mein Code:
Code:
Private Sub cmdBerechnen_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdBerechnen.Click
Dim Ergebnis1, Ergebnis2 As Integer
Dim Ergebnis3, Ergebnis4, Ergebnis5, Ergebnis6, Ergebnis7, Ergebnis8, Ergebnis9, Ergebnis10 As Double
'Formate der Ergebnisse festlegen
' Ergebnis 1 = Umrechnung ein Mitarbeiter pro Woche
' Ergebnis 2 = Summe für alle Mitarbeiter pro Woche
' Ergebnis 3 = Stunden aus Ergebnis 2 ausrechnen
' Ergebnis 4 = Minuten aus Ergebnis 5 ausrechnen
' Ergebnis 5 = Ergebnis 2 mal Arbeitstage
' Ergebnis 6 = Stunden aus Ergebnis 5 ausrechnen
' Ergebnis 7 = Minuten aus Ergebnis 5 ausrechnen
' Ergebnis 8 = Kosten für Stunden aus Ergebnis 6
' Ergebnis 9 = Kosten für Minuten aus Ergebnis 6
' Ergebnis 10 = Gesamtkosten aus Ergebnis 8 und 9
If txtEingabeDifferenzProTag.Text = "" Then MsgBox("Bitte tragen Sie eine Zahl für 'Differenz pro Tag' ein")
'Prüfen ob ein Wert eingetragen ist.
If txtEingabeDifferenzProTag.Text <> "" Then _
Ergebnis1 = (Convert.ToInt16(txtEingabeDifferenzProTag.Text) * 5)
lblErgebnisSummeWoche.Text = CStr(Ergebnis1)
'Eingabe auf 5 Arbeitstage umrechnen + anzeigen
If txtEingabeDifferenzProTag.Text = "" Then MsgBox("Bitte tragen Sie eine Zahl für 'Differenz pro Tag' ein")
'Leere Felder abfangen
If txtEingabeAnzahlMitarbeiter.Text <> "" Then _
Ergebnis2 = (Ergebnis1 * Convert.ToInt16(txtEingabeAnzahlMitarbeiter.Text))
lblErgebnisMitarbeiterWocheMinuten.Text = CStr(Ergebnis2)
'Summe der Wochenzeit mit Anzahl Mitarbeiter multiplizieren + anzeigen
If txtEingabeAnzahlMitarbeiter.Text = "" Then MsgBox("Bitte tragen Sie eine Zahl für 'Anzahl Mitarbeiter' ein")
'Leere Felder abfangen
Ergebnis3 = CInt(Math.Floor(Ergebnis2 / 60))
'Ergebnis 2 aufteilen für Stunden als Ergebnis 3
Ergebnis4 = Ergebnis2 - (Ergebnis3 * 60)
'Ergebnis 3 aufteilen für Minuten als Ergebnis 4
lblErgebnisUmrechnungStunden.Text = (Ergebnis3) & ":" & (Ergebnis4)
'Anzeige von Ergebnis 3 und 4 als Stunden:Minuten
If txtEingabeArbeitstage.Text <> "" Then _
Ergebnis5 = (Ergebnis2 * Convert.ToInt16(txtEingabeArbeitstage.Text))
'Minuten mal Arbeitstage
If txtEingabeArbeitstage.Text = "" Then MsgBox("Bitte tragen Sie eine Zahl für 'Arbeitstage' ein")
'Leere Felder abfangen
Ergebnis6 = CInt(Math.Floor(Ergebnis5 / 60))
'Ergebnis 5 aufteilen für Stunden als Ergebnis 6
'mit Math.Flor abrunden
Ergebnis7 = Ergebnis5 - (Ergebnis6 * 60)
'Ergebnis 5 aufteilen für Minuten als Ergebnis 7
lblErgebnisGesamtStunden.Text = (Ergebnis6) & ":" & (Ergebnis7)
'Anzeige von Ergebnis 6 und 7 als Stunden:Minuten
Ergebnis8 = (Ergebnis6 * Convert.ToInt16(txtEingabeStundenlohn))
'Stunden in Euro umrechnen
Ergebnis9 = (Ergebnis7 * Convert.ToInt16(txtEingabeStundenlohn) / 10)
' Minuten in Euro umrechnen