Servus Leute, ich habe folgendes Problem:
Ich habe ein Formular erstellt, mit dem ein Preis auf Grund von verstrichender Zeit ausgegeben werden soll.
Das Zeitfeld heißt: "DateTime" & das Preisfeld: "fnPreis". Es gibt einen Grundpreis von 2.5€. Jetzt sollen alle 10 Minuten 1.5€ dazu kommen. Beispiel:
00:01-00:10 (fnPreis = 2.5€), 00:11-00:20 (fnPreis = 4€), 00:21-00:31 (fnPreis = 5.5€) und soo weiter....bis zu einer Stunde. Bei einer Stunde und mehr, sollen nur noch
1€ statt 1.5€ dazu kommen. Beispiel: 01:01-01:10 (fnPreis = 11€), 01:11-01:20 (fnPreis = 12) und das bist in die Unendlichkeit und noch weiter.
Ich habe jetzt mit Hilfe von anderen Foren bereits einen Code dafür geschrieben, der ungefähr so aussieht:
If Me!DateTime <= 60 Then
fnPreis = 2.5 + (Me!DateTime / 10 - 1) * 1.5
If Me!DateTime >= 60 Then
fnPreis = 2.5 + 6 * 1.5 _
+ (Me!DateTime / 10 - 1) * 1
End If
End If
Leider funktioniert dieser Code nicht richtig und ich weiß nicht mehr weiter.
Kann mir hier jemand vielleicht helfen?!
Mit freundlichen Grüßen,
PoweredbyApple
Hallo,
und warum wechselst Du jetzt das Forum?
Im anderen Forum hast Du doch geschrieben, dass es funktioniert.
Was funktioniert denn nun nicht nicht?
http://www.ms-office-forum.net/forum/showthread.php?t=297988 (http://www.ms-office-forum.net/forum/showthread.php?t=297988)
und hier:
http://www.office-loesung.de/ftopic578473_0_0_asc.php (http://www.office-loesung.de/ftopic578473_0_0_asc.php)
PS:
Auch in diesem Forum ist Grossposting unerwünscht. Kannst Du in den Regeln nachlesen.
Und es nutzt auch nichts das Forum zu wechseln, da sind überall die gleichen Leute.
Ich bekomme falsche Werte.
Ich bekomme immer 0€ als Ergebnis :/
Hallo,
die Formel stimmt nicht ganz mit deinen Angaben überein!
Weiter muss die Bedingung zum Anfang ebenfalls auf den Umstand Rücksicht nehmen, dass du für die ersten 10 Minuten den Grundpreis rechnest!
If Me!DateTime >10 AND Me!DateTime <= 60 Then
fnPreis = 2.5 + Int(Me!DateTime / 10) * 1.5
Zitatbis zu einer Stunde.
das geht genau bis 59 Minuten, denn deiner Angabe nach soll ab einer Stunde (also 60 Minuten) der Grundpreis 10 lauten.
Muss auch so sein sonst kommst du bei dieser Bedingung nicht ins Reine:
ZitatBeispiel: 01:01-01:10 (fnPreis = 11€),
Wenn also folgende Aussagen stimmen ...
5 Min fnPreis = 2,5
11 Min fnPreis = 4
59 Min fnPreis = 10
60 Min fnPreis = 10
61 Min fnPreis = 11
75 Min fnPreis = 12
... kannst du untenstehenden Code einsetzen.
If Me!DateTime > 10 And Me!DateTime <= 59 Then
fnPreis = 2.5 + (Int(Me!DateTime / 10) * 1.5)
End If
If Me!DateTime >= 60 Then
fnPreis = 10 + (Int(Me!DateTime / 10) - 5) * 1
End If
If Me!DateTime <= 10 Then
fnPreis = 2.5
End If
HTH
Endlich!! & unendlich vielen Dank!! Jetzt passt's :))) Danke Schöööööön!!
Kann ich gleich noch eine zweite Frage stellen?!
Also, diese Rechnung die du mir eben gegeben hast, zählt für minderjährige Pilotschüler.
Diese sind über eine Tabelle in einem Kombinationsfeld in meinem Formular. Also zahlen die weniger als die volljährigen Schüler, bzw. Scheininhaber.
Diese zahlen statt 2.5€, 3.5€ mit der selben Prozedur, also immer 1.5€ dazu bis zu einer vollen Stunde, wo sie dann nur noch 1€ dazu zahlen.
Beispiel: 00:01-00:10 (fnPreis = 3.5€), 00:51-01:00 (fnPreis = 11€) & bei einer Stunde, 01:01-01:10 (fnPreis = 12€). Ich habe das jetzt mal versucht mit deiner Formel umzusetzen, aber da bekomme ich wieder nur den Standartwert raus..
If Me!DateTime > 10 And Me!DateTime <= 59 And (cmbPilot = 3 Or cmbPilot = 38 Or cmbPilot = 39 Or cmbPilot = 43) Then
fnPreis = 2.5 + (Int(Me!DateTime / 10) * 1.5)
End If
If Me!DateTime >= 60 And (cmbPilot = 3 Or cmbPilot = 38 Or cmbPilot = 39 Or cmbPilot = 43) Then
fnPreis = 10 + (Int(Me!DateTime / 10) - 5) * 1
End If
If Me!DateTime <= 10 And (cmbPilot = 3 Or cmbPilot = 38 Or cmbPilot = 39 Or cmbPilot = 43) Then
fnPreis = 2.5
End If
If Me!DateTime > 10 And Me!DateTime <= 59 And (cmbPilot <> 3 Or cmbPilot <> 38 Or cmbPilot <> 39 Or cmbPilot <> 43) Then
fnPreis = 3.5 + (Int(Me!DateTime / 10) * 1.5)
End If
If Me!DateTime >= 60 And (cmbPilot <> 3 Or cmbPilot <> 38 Or cmbPilot <> 39 Or cmbPilot <> 43) Then
fnPreis = 11 + (Int(Me!DateTime / 10) - 5) * 1
End If
If Me!DateTime <= 10 And (cmbPilot <> 3 Or cmbPilot <> 38 Or cmbPilot <> 39 Or cmbPilot <> 43) Then
fnPreis = 3.5
End If
Aber bitte schön ... ::)
wichtig ist viel mehr noch dass du den Code verstehst! ;) :D
für die neue Frage...
If Me!DateTime > 10 And Me!DateTime <= 59 And (cmbPilot = 3 Or cmbPilot = 38 Or cmbPilot = 39 Or cmbPilot = 43) Then
fnPreis = 2.5 + (Int(Me!DateTime / 10) * 1.5)
End If
If Me!DateTime >= 60 And (cmbPilot = 3 Or cmbPilot = 38 Or cmbPilot = 39 Or cmbPilot = 43) Then
fnPreis = 10 + (Int(Me!DateTime / 10) - 5) * 1
End If
If Me!DateTime <= 10 And (cmbPilot = 3 Or cmbPilot = 38 Or cmbPilot = 39 Or cmbPilot = 43) Then
fnPreis = 2.5
End If
'ab hier darf cmbPilot nicht mehr 3 UND nicht 38 UND nicht 39 ... sein
If Me!DateTime > 10 And Me!DateTime <= 59 And (cmbPilot <> 3 AND cmbPilot <> 38 AND cmbPilot <> 39 AND cmbPilot <> 43) Then
fnPreis = 3.5 + (Int(Me!DateTime / 10) * 1.5)
End If
If Me!DateTime >= 60 And (cmbPilot <> 3 AND cmbPilot <> 38 AND cmbPilot <> 39 AND cmbPilot <> 43) Then
fnPreis = 11 + (Int(Me!DateTime / 10) - 5) * 1
End If
If Me!DateTime <= 10 And (cmbPilot <> 3 AND cmbPilot <> 38 AND cmbPilot <> 39 AND cmbPilot <> 43) Then
fnPreis = 3.5
End If
HTH
Achso. Danke Schön. Hm, jetzt passen die Standartwerte bei den verschiedenen Piloten. Aber die Preiswerte ändern sich nicht bei verschiedenen Zeiten.
Da kann ich dich nur um diese Nacht Geduld ersuchen,
ich kann mir das gerne morgen anschauen.
Jetzt gehts auf die Matratze, meine Nacht endet um 04:00 :(
aber dennoch schnell...
If Me!cmbPilot = 3 Or Me!cmbPilot = 38 Or Me!cmbPilot = 39 Or Me!cmbPilot = 43 Then
If Me!DateTime > 10 And Me!DateTime <= 59 Then
fnPreis = 2.5 + (Int(Me!DateTime / 10) * 1.5)
End If
If Me!DateTime >= 60 Then
fnPreis = 10 + (Int(Me!DateTime / 10) - 5) * 1
End If
If Me!DateTime <= 10 Then
fnPreis = 2.5
End If
Else
'ab hier darf cmbPilot nicht mehr 3 UND nicht 38 UND nicht 39 ... sein
If Me!DateTime > 10 And Me!DateTime <= 59 Then
fnPreis = 3.5 + (Int(Me!DateTime / 10) * 1.5)
End If
If Me!DateTime >= 60 Then
fnPreis = 11 + (Int(Me!DateTime / 10) - 5) * 1
End If
If Me!DateTime <= 10 Then
fnPreis = 3.5
End If
End If
...versuch das noch schnell ;)
Nein, leider immer noch nichts. Ich danke dir aber schon mal für die ganze Hilfe. Schlaf Gut & wenn du wieder Zeit findest, dann können wir ja weiter machen.
Hallo,
sollte eigentlich funktionieren,
ich hab das provisorisch nachgestellt - die Sprünge und Ergebnisse sollten passen!
EDIT:
Im Anhang findest du eine Beispielanwendung mit einem Formular - probier mal das aus.
[Anhang gelöscht durch Administrator]
Ah, ich glaube jetzt weiß ich das Problem. Das Zeitfeld ist als 24 Stunden-Format ausgelegt. Das habe ich natürlich vergessen zu erwähnen. Also wird dabei natürlich nicht die Minutenanzahl berechnet. :// Dann müsste ich ja eig. nur das Zeitfeld (Me!DateTime * 24 * 60*) rechnen oder?! Aber wie muss ich dann die größer kleiner Rechnung ändern?! If Me!DateTime > 0,167 And Me!DateTime <= 0,98 Then
fnPreis = 2.5 + (Int((Me!DateTime * 24 * 60) / 10) * 1.5)
End If
Etwa so, dass ich die Zeit einfach durch 60 rechne?!
Hallo,
wenn das heißt, dass du in DateTime die Zeit in der Form erfaßt 01:15 ... dann
Private Sub Befehl0_Click()
Dim fnPreis As Double
Dim minuten As Long
minuten = Me.DateTime * 1440
If Me!cmbPilot = 3 Or Me!cmbPilot = 38 Or Me!cmbPilot = 39 Or Me!cmbPilot = 43 Then
If minuten > 10 And minuten <= 59 Then
fnPreis = 2.5 + (Int(minuten / 10) * 1.5)
End If
If minuten >= 60 Then
fnPreis = 10 + (Int(minuten / 10) - 5) * 1
End If
If minuten <= 10 Then
fnPreis = 2.5
End If
Else
If minuten > 10 And minuten <= 59 Then
fnPreis = 3.5 + (Int(minuten / 10) * 1.5)
End If
If minuten >= 60 Then
fnPreis = 11 + (Int(minuten / 10) - 5) * 1
End If
If minuten <= 10 Then
fnPreis = 3.5
End If
End If
Richtig. Vielen Vielen Vielen Vielen Vielen Vielen Dank!! Jetzt passt alles. :))
Hallo,
na schön, dass es letztendlich doch noch funktioniert ;)
Setze doch bitte den Thread in DEINEM ersten Beitrag auf 'gelöst'
DANKE