Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: PoweredbyApple am März 03, 2013, 19:39:25

Titel: Preis/Zeit in Intervallen
Beitrag von: PoweredbyApple am März 03, 2013, 19:39:25
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
Titel: Re: Preis/Zeit in Intervallen
Beitrag von: MzKlMu am März 03, 2013, 19:52:34
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.
Titel: Re: Preis/Zeit in Intervallen
Beitrag von: PoweredbyApple am März 03, 2013, 21:19:42
Ich bekomme falsche Werte.
Ich bekomme immer 0€ als Ergebnis :/
Titel: Re: Preis/Zeit in Intervallen
Beitrag von: database am März 03, 2013, 21:22:54
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

Titel: Re: Preis/Zeit in Intervallen
Beitrag von: PoweredbyApple am März 03, 2013, 21:36:52
Endlich!! & unendlich vielen Dank!! Jetzt passt's :))) Danke Schöööööön!!
Titel: Re: Preis/Zeit in Intervallen
Beitrag von: PoweredbyApple am März 03, 2013, 21:50:12
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
Titel: Re: Preis/Zeit in Intervallen
Beitrag von: database am März 03, 2013, 21:58:05
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

Titel: Re: Preis/Zeit in Intervallen
Beitrag von: PoweredbyApple am März 03, 2013, 22:02:41
Achso. Danke Schön. Hm, jetzt passen die Standartwerte bei den verschiedenen Piloten. Aber die Preiswerte ändern sich nicht bei verschiedenen Zeiten.
Titel: Re: Preis/Zeit in Intervallen
Beitrag von: database am März 03, 2013, 22:10:47
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  ;)
Titel: Re: Preis/Zeit in Intervallen
Beitrag von: PoweredbyApple am März 03, 2013, 22:29:18
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.
Titel: Re: Preis/Zeit in Intervallen
Beitrag von: database am März 04, 2013, 09:54:21
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]
Titel: Re: Preis/Zeit in Intervallen
Beitrag von: PoweredbyApple am März 04, 2013, 13:41:02
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?!
Titel: Re: Preis/Zeit in Intervallen
Beitrag von: database am März 05, 2013, 11:58:14
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
Titel: Re: Preis/Zeit in Intervallen
Beitrag von: PoweredbyApple am März 05, 2013, 19:18:15
Richtig. Vielen Vielen Vielen Vielen Vielen Vielen Dank!! Jetzt passt alles. :))
Titel: Re: Preis/Zeit in Intervallen
Beitrag von: database am März 05, 2013, 21:26:41
Hallo,

na schön, dass es letztendlich doch noch funktioniert  ;)

Setze doch bitte den Thread in DEINEM ersten Beitrag auf 'gelöst'

DANKE