1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Feldberechnung anhand einer Uhrzeit - Access 2013

Discussion in 'Office-Programme' started by thfschmalz, Sep 6, 2016.

Thread Status:
Not open for further replies.
  1. Hallo, habe ein Problem und brauche eure Hilfe für Access 2013.

    Ich habe drei Felder, und zwar Uhrzeit, BE und BEFaktor. Ich möchte erreichen, das bei einer Uhrzeit zwischen 6 und 12 Uhr und einer Zahl im Feld BE der BEFaktor auf 1,5 gestellt wird, bei einer Uhrzeit zwischen 12 und 16 Uhr und einer Zahl im Feld BE das Feld BEFaktor 0,8 und bei einer Uhrzeit zwischen 16 und 6 Uhr und einer Zahl im Feld BE der BEFaktor auf 1,2 gestellt wird.

    Hat jemand eine Lösung für mich? Würde mich sehr freuen.
     
  2. Odie0506

    Odie0506 Kbyte

    Von was redest du genau?
    Arbeitest du gerade in einer Tabelle? -> Verwende ein Formular und führe die Berechnung in dem entsprechenden Formularfeld durch. Das reicht für die Anzeige. In der Tabelle gehört sowas nicht gespeichert.
    Arbeitest du in einem Bericht? -> identisches Vorgehen wie im Formular. Per VBA kann man hier allerdings auch in der Report-Eigenschaft "Beim Formatieren" für Codeberechnungen verwenden.
     
  3. Ich arbeite mit einem Einzelformular und nicht mit einer Tabelle. Die Felder sind Teile meines Diabetiker-Tagebuches. Ich will errechnen, wieviel Einheiten Insulin ich anhand der Uhrzeit für die gegessenen BE spritzen soll. Morgens (6:oo bis 12:00 Uhr) brauche ich für 1 BE 1,5 Einheiten Insulin,
    mittags (12:oo bis 16:00 Uhr) für 1 BE 0,8 Einheiten und abends (16:oo bis 6:00 Uhr) 1,2 Einheiten. Anhand der Uhrzeit soll jetzt im Feld BE-Faktor die entsprechende Menge Insulin eingetragen werden und in einem weiteren Feld Insulin die benötigte Menge anhand der eingegebenen BEs.
     
  4. Odie0506

    Odie0506 Kbyte

    Diabetiker und BE.... eben hat es Klick gemacht.

    Ich würde das im Feld Uhrzeit in das Ereignis "Nach Aktualisierung" einbauen und das Feld BE-Faktor für die (manuelle) Eingabe sperren.
    Könnte etwa so aussehen:
    Code:
    Private Sub Uhrzeit_AfterUpdate()
      Select Case Me.Uhrzeit.Value
         Case Is < 6 / 24 ' 00:00-05:59 Uhr
             Me.BEFaktor.Value = 1.2
         Case Is < 12 / 24 ' 06:00-11:59 Uhr
            Me.BEFaktor.Value = 1.5
         Case Is < 16 / 24 ' 12:00-15:59 Uhr
            Me.BEFaktor.Value = 0.8
         Case Else ' 16:00-23:59 Uhr
           Me.BeFaktor.Value = 1.2
     End Select
    End Sub
    Die Feldbezeichnungen Uhrzeit und BEFaktor müssen natürlich an die tatsächlichen Feldbezeichnungen angepasst werden.
     
  5. Schönen Dank für die Hilfe. Das klappt schon mal ganz Prima. Jetzt sollte nur noch im Feld BEFaktor kein Wert erscheinen, wenn auch im Feld BE kein Eintrag vorhanden ist. Geht das auch?
     
  6. Odie0506

    Odie0506 Kbyte

    Führe die Zuweisung zum Feld BEFaktor nur dann aus, wenn auch ein Wert in BE enthalten ist.
    Ich gehe mal davon aus, dass hier Leer, 0 oder auch Null (sprich Nichts) enthalten sein kann.
    Code:
    If (NZ(Me.BE.Value,0)>0) Then
    Select Case Me.Uhrzeit.Value
         Case Is < 6 / 24 ' 00:00-05:59 Uhr
             Me.BEFaktor.Value = 1.2
         Case Is < 12 / 24 ' 06:00-11:59 Uhr
            Me.BEFaktor.Value = 1.5
         Case Is < 16 / 24 ' 12:00-15:59 Uhr
            Me.BEFaktor.Value = 0.8
         Case Else ' 16:00-23:59 Uhr
           Me.BeFaktor.Value = 1.2
    End Select
    Else
      Me.BEFaktor.Value=Null
    End If
    
    Wenn das dan auch funktionieren soll, sobald im Feld BE eine Änderung durchgeführt wird, dann muss der Code dort auch im Ereignis "Nach Aktualisieren" eingefügt werden.
    Anstelle von "Null" kann natürlich bei Bedarf auch der Wert "0" verwendet werden. Kommt ganz darauf an, ob das Feld BEFaktor Null erlaubt oder einen Zahlenwert verlangt.
     
  7. Klasse, vielen Dank für die schnelle Hilfe. Es funktioniert alles so, wie es muss.
     
Thread Status:
Not open for further replies.

Share This Page