Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Berechnetes Feld und Endlos Unterformular

Begonnen von J.D, April 19, 2024, 09:58:46

⏪ vorheriges - nächstes ⏩

J.D

Hallo Forum,

ich habe in meinem letzten Feld nach Update folgendes
Private Sub Re_Ende_Zeit_AfterUpdate()
Me![Re_Ende_Zeit] = fRundeViertelstunde(Me![Re_Ende_Zeit], 2)
Me![Tag_Berechnet] = IIf(DateDiff("h", Me![Re_Start_Zeit], Me![Re_Ende_Zeit]) <= 10, DateDiff("h", Me![Re_Start_Zeit], Me![Re_Ende_Zeit]) - 1, DateDiff("h", Me![Re_Start_Zeit], Me![Re_Ende_Zeit]))
End Sub

und möchte im Feld [Tag_Berechnet] jeweils die Stunden anzeigen lassen,
jedoch wenn ich dann in der nächsten Zeile gehe, übernimmt er mir den Wert auf alle Zeilen... ;(
Gibt es dort eine Lösung?



MFG J.D.
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

PhilS

Zitat von: J.D am April 19, 2024, 09:58:46und möchte im Feld [Tag_Berechnet] jeweils die Stunden anzeigen lassen,
jedoch wenn ich dann in der nächsten Zeile gehe, übernimmt er mir den Wert auf alle Zeilen... ;(
In einem Endlosformular müssen die Steuerelemente gebunden sein, andernfalls gibt es nur einen Wert für das Steuerelement, der für alle Datensätze gilt.

Wenn du deinen obigen VBA-Ausdruck entsprechend anpasst und dann direkt in den Steuerelementinhalt von Tag_Berechnet schreibst, solltest du das gewünschte Ergebnis bekommen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

J.D

Ja, danke... aber irgendwie habe ich es hinbekommen...
über den Umweg einer Funktion ;)

Function AdjustedValue(value As Variant) As Variant
    If IsNumeric(value) Then
        If value <= 10 Then
            AdjustedValue = value - 1
        Else
            AdjustedValue = value
        End If
    Else
        ' Wenn der Wert keine Zahl ist, geben Sie den ursprünglichen Wert zurück
        AdjustedValue = value
    End If
End Function

Grüsse J.D.
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

PhilS

Zitat von: J.D am April 19, 2024, 10:59:32irgendwie habe ich es hinbekommen...

über den Umweg einer Funktion ;)
Das geht natürlich auch. Wichtig ist nur, dass für Access der Zusammenhang zum aktuellen Datensatz bzw. einem Wert daraus erkennbar ist. Das geht genauso mit einer eigenen Funktion, wenn sie als Steuerelementinhalt verwendet wird und als Argument den Wert aus dem aktuellen Datensatz bekommt.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

ebs17

Mein erstes Ansinnen  wäre immer, mich von Formularereignissen, -abhängigkeiten und -berechnungen unabhängig zu machen und die Berechnungen in der Abfrage vorzunehmen, die als Datenherkunft für das Formular dient. Damit hätte man im Formular ein zusätzliches gebundenes Steuerelement, und der Umgang mit NULL ist deutlich entspannter.

Nebenbei kann es ja sein, dass das berechnete Feld in weiteren Berechnungen und Auswertungen weiterverwendet werden soll. Das macht sich über die Abfrage immer einfach.
Mit freundlichem Glück Auf!

Eberhard

J.D

ja, ich hatte zuerst versucht es in der Datenbank als berechnetes Feld einzugeben, bin aber gescheitert, hab dort schon ein Feld welches die Zeiten berechnet...

Ich mach ja schon viel mit Access, aber ab und zu scheitert es zwischen VB und Formular auf Grund der unterschiedlichen schreib weisen. Da komme ich aber auch noch hin ;)

Nur leider benötige ich für einen Ausländischen Zweig eine sehr komplizierte Berechnung der stunden an Samstagen und Son/Feier Tagen, bis dahin werde ich noch über den einen oder anderen Stein springen...

MFG J.D.
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2