collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 105
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14471
  • stats Beiträge insgesamt: 72211
  • stats Themen insgesamt: 9746
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Übertrag >24 Stunden  (Gelesen 406 mal)

Offline mad

  • Access-Profi
  • **
  • Beiträge: 120
Übertrag >24 Stunden
« am: August 12, 2019, 14:00:15 »
Hallo Zusammen,

zur Ausgangssituation: Ich habe ein HF von dem ich den Wert eines berechnenden Textfeldes „ÜbDauer“ in ein Textfeld „ÜbStdN“  des UF übergebe sobald im UF ein Name ausgewählt wird. Solange die Zeit unter 24 Std. bleibt funktioniert der Übertrag, über 24 Std leider nicht mehr.

Datenherkunft des HF ist eine Abfrage „qyr_UebKenn“ in der die „ÜbDauer“ wie folgt berechnet wird:
Gesamtminuten: DatDiff("n";[ADatumU];[EDatumU])Umwandeln in hh:mm
Gesamtzeit: [Gesamtminuten]\60 & ":" & Format([Gesamtminuten] Mod 60;"00")Bis hierher sind auch Werte über 24 Std. möglich!

Die Ereignisprozedur zum Übertrag auf das UF lautet wie folgt.
Private Sub Name_AfterUpdate()
    Me!ÜbStdN = Me.Parent!ÜbDauer
End Sub
Da klappen die >24 Std. nicht mehr.

Beide Textfelder haben das Format: Zeit, 24Std.
Auch das Feld in die Tabelle in das der übertragenen Wert eingetragen wird hat das Format: Datum/Uhrzeit _ Zeit, 24Std.
Gibt es die Möglichkeit das Tabellenfeld so zu ändern das es hh:mm >24 Std aufnehmen kann?
Kann ich in der Ereignisprozedur die Gesamtminuten aus der Abfrage übertragen lassen und diese gleichzeitig wieder in Gesamtzeit hh:mm umwandeln lassen?

Kann das überhaupt funktionieren, auch wenn es nicht die ideale Lösung wäre? Wenn ja, könnte mir jemand Hilfestellung geben?

Würde eventuell dieser Beitrag helfen: https://www.access-o-mania.de/forum/index.php?topic=13652.msg77204#msg77204
Mir wäre soweit erstmal geholfen das ich die nachfolgenden Abfragen und Berichte nicht ändern müßte.

Gruss
mad
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 2206
Re: Übertrag >24 Stunden
« Antwort #1 am: August 12, 2019, 17:55:14 »
@mad
Schaust du hier: http://www.donkarl.com?FAQ2.10
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 
Folgende Mitglieder bedankten sich: mad

Offline mad

  • Access-Profi
  • **
  • Beiträge: 120
Re: Übertrag >24 Stunden
« Antwort #2 am: August 12, 2019, 18:50:09 »
Wo und wie müsste ich die Lösung von donkarl anwenden?

Zitat
Lösung
für eine Zeitdifferenz
=Format$(Fix(FctRound([MeineZeit]*24));"0") & ":" & Format$([MeineZeit];"nn")

Im UF?
Steuerelementeinhalt?


Gruss
mad
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 2206
Re: Übertrag >24 Stunden
« Antwort #3 am: August 13, 2019, 10:58:59 »
@mad
In der Abfrage
Gesamtzeit: Format$(Fix(FctRound([Gesamtminuten]*24));"0") & ":" & Format$([Gesamtminuten];"nn")wahrscheinlich musst du aber statt dem Alias (Gesamtminuten) den kompletten
Ausdruck wiederholen
Gesamtzeit: Format$(Fix(FctRound(DatDiff("n";[ADatumU];[EDatumU])*24));"0") & ":" & Format$(DatDiff("n";[ADatumU];[EDatumU]);"nn")
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline PhilS

  • Global Moderator
  • Access-Meister
  • *****
  • Beiträge: 630
    • Tipps zu Access, VBA, SQL und Co.
Re: Übertrag >24 Stunden
« Antwort #4 am: August 13, 2019, 11:27:04 »
Datenherkunft des HF ist eine Abfrage „qyr_UebKenn“ in der die „ÜbDauer“ wie folgt berechnet wird:
Gesamtminuten: DatDiff("n";[ADatumU];[EDatumU])Umwandeln in hh:mm
Gesamtzeit: [Gesamtminuten]\60 & ":" & Format([Gesamtminuten] Mod 60;"00")Bis hierher sind auch Werte über 24 Std. möglich!
Ich bin nicht sicher, ob ich dein Problem überhaupt verstehe.
Du hast doch bereits eine funktionierende Rechnung und eine ebenfalls funktionierende Formatierung.
Was genau ist das Problem?
Die Übergabe an ein anderes Form könntest du einfach lösen, indem du dort ein (verstecktes) weiteres Feld einfügst, das die Gesamtminuten enthält. Die Formatierung der Anzeige erreichst du dann wie bisher auch indem du dich auf das versteckte Feld beziehst. (Oder auch direkt auf das Feld im HFO, dann kannst du dir die Übergabe komplett sparen.)

 
Folgende Mitglieder bedankten sich: mad

Offline mad

  • Access-Profi
  • **
  • Beiträge: 120
Re: Übertrag >24 Stunden
« Antwort #5 am: August 13, 2019, 17:42:01 »
Hallo Zusammen,

habe die Variante von Beaker s.a. ausprobiert,
Zitat
wahrscheinlich musst du aber statt dem Alias (Gesamtminuten) den kompletten
Ausdruck wiederholen
Code: [Auswählen]

Gesamtzeit: Format$(Fix(FctRound(DatDiff("n";[ADatumU];[EDatumU])*24));"0") & ":" & Format$(DatDiff("n";[ADatumU];[EDatumU]);"nn")
Damit bekomme ich aber die Fehlermeldung - Bild FctRounde.png

Dann habe ich die Variante von PhilS probiert. Habe ein verstecktes Feld für die Gesamtminuten ins UF eingefügt und zum Tabellenfeld "ÜbStdN" bei Steuerelementinhalt folgenden Code eingetragen:
=[ÜbMin]\60 & ":" & Format([ÜbMin] Mod 60;"00")Funktioniert so weit.

Jetzt habe ich aber das Problem, daß wenn ein Kollege nicht die ganze Zeit anwesend war, daß ich die Stunden im Tabellenfeld "ÜbStdN" nicht mehr händisch anpassen kann. Wenn das auch ginge, würden vermutlich die Gesamtminuten immer wieder übertragen werden.
Am einfachsten wäre für mich wie beschrieben:
Zitat
Die Ereignisprozedur zum Übertrag auf das UF lautet wie folgt.
Code: [Auswählen]

Private Sub Name_AfterUpdate()
    Me!ÜbStdN = Me.Parent!ÜbDauer
End Sub
das einfach der Wert aus ÜbDauer nach ÜbStdN übertragen wird, egal ob der Wert <24 (funktioniert ja) oder >24 Std ist.

Gruss
mad
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 2206
Re: Übertrag >24 Stunden
« Antwort #6 am: August 13, 2019, 18:53:02 »
@mad
Aufmerksamer lesen. Im verlinkten Artikel ist ein weiterführender Link zu der
benötigten Function
Function fctRound(varNr As Variant, Optional varPl As Integer = 2) As Double
  'by Konrad Marfurt + ("" by) Luke Chung + Karl Donaubauer
     'raus hier bei nicht-nummerischem Argument
     If Not IsNumeric(varNr) Then Exit Function
     fctRound = Fix("" & varNr * (10 ^ varPl) + Sgn(varNr) * 0.5) / (10 ^ varPl)
 End Function

Diese musst du in ein allgem. Modul schreiben. Dann sollte es funzen.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline mad

  • Access-Profi
  • **
  • Beiträge: 120
Re: Übertrag >24 Stunden
« Antwort #7 am: August 13, 2019, 20:30:53 »
Hallo,

habe den Code jetzt wie folgt angelegt:
Bild: Modul_fctRound.png
Habe alle beide Codes in der Abfrage ausprobiert:
In der Abfrage
[code]Gesamtzeit: Format$(Fix(FctRound([Gesamtminuten]*24));"0") & ":" & Format$([Gesamtminuten];"nn")
wahrscheinlich musst du aber statt dem Alias (Gesamtminuten) den kompletten
Ausdruck wiederholen
Gesamtzeit: Format$(Fix(FctRound(DatDiff("n";[ADatumU];[EDatumU])*24));"0") & ":" & Format$(DatDiff("n";[ADatumU];[EDatumU]);"nn")[/code]

Leider kommt wieder die Fehlermeldung:
Bild: FctRound.png
Egal ob ich die Abfrage ausführen möchte oder in die Formularansicht wechseln möchte.
Was habe ich noch übersehen? Habe ich das Modul doch falsch angelegt?
Vermutlich stoße an meine Grenzen.


Gruss
mad
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23813
Re: Übertrag >24 Stunden
« Antwort #8 am: August 13, 2019, 21:28:39 »
Hallo,

hast Du
Zitat
Diese musst du in ein allgem. Modul schreiben
wirklich berücksichtigt?

Offline mad

  • Access-Profi
  • **
  • Beiträge: 120
Re: Übertrag >24 Stunden
« Antwort #9 am: August 13, 2019, 22:02:44 »
Sicher bin ich mir natürlich nicht.
Habe mal in anderen Modulen meiner DB nachgesehen wie diese so aussehen.
Habe auch mal etwas nachgelesen:
Zitat
Allgemeine Module

Im Gegensatz dazu gibt es sog. "öffentliche" Sub-Prozeduren und Funktionen, die an jeder Stelle im Programm aufgerufen werden können. Sie werden in einem allgemeinen (globalen) Modul gespeichert, und mit dem Begriff Public gekennzeichnet.

Beispiel:

Public Function EineFunktion(S As Long) As Long
   EineFunktion = S + 1
End Function


So kann ein allgemeines Modul erstellt, und Code eingefügt werden:

    Code-Editor öffnen
    im Projekt-Explorer (linkes Fenster) mit rechter Maustaste Einfügen - Modul auswählen,

        oder Menüleiste Einfügen - Modul

    ein neues leeres Modul wird angezeigt
    Code in das Modul einfügen
    das Modul abspeichern Strg+S
Habe jetzt vor Function noch Public gesetzt.
Weis aber immer noch nicht ob das in die richtige Richtung geht, denn funktionieren tuts immer noch nicht.

Gruss
mad
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23813
Re: Übertrag >24 Stunden
« Antwort #10 am: August 13, 2019, 22:34:27 »
Hallo,

wenn Du der Beschreibung gefolgt bist, sollte die Funktion schon in einem Standard-Modul stehen...

weiterhin könntest Du versuchen, die ";" in der Datdiff-Funktion zu ersetzen und deren englischen Namen verwenden:
….DateDiff("n",[ADatumU],[EDatumU])….

Offline mad

  • Access-Profi
  • **
  • Beiträge: 120
Re: Übertrag >24 Stunden
« Antwort #11 am: August 14, 2019, 08:28:36 »
Hallo Zusammen,

habe den Vorschlag
Zitat
….DateDiff("n",[ADatumU],[EDatumU])….
wie folgt ausprobiert:
Gesamtzeit: Format$(Fix(FctRound(DateDiff("n",[ADatumU],[EDatumU])*24));"0") & ":" & Format$(DateDiff("n",[ADatumU],[EDatumU]);"nn")Habe auch mal alle Semikola geben Komma ausgetausch.
dann kommt immer folgende Fehlermeldung:
Bild: Syntx_falsch.png

Wenn ich nur "DateDiff" und die Semikola stehen lasse, dann springt der Code wieder auf DatDiff zurück.

Vielleicht ist es für die Experten leichter das sich mal in der DB anzusehen. Habe dazu einen Auszug "FF_DB_Ueb.accdb" (Anhang als ZIP) gemacht.
Beim öffnen den Formulars "Übungen_Veranstaltungen" sieht man meinen aktuellen Stand, bei dem der Übertrag >24 Std nicht funktioniert.
Beim ersten Datensatz wenn man im Unterformular einen Namen hinzufügt (Tab-Taste od. anderes Feld springen) werden die 6:00 Std übernommen. Beim zweiten Datensatz wo die Std >24 sind werden beim auswählen eines Namens die 27 Std  nicht übernommen.
Wenn man nun die Datenherkunft des HF von qyr_UebKenn in qyr_UebKenn_FctRound austauscht kommen die bereits aufgezeigt Probleme.

Vielleicht möchte sich das nochmals jemand ansehen.


Gruss
mad
 

Offline mad

  • Access-Profi
  • **
  • Beiträge: 120
Re: Übertrag >24 Stunden
« Antwort #12 am: August 14, 2019, 08:44:59 »
Entschuldigung,
es hat sich in der DB ein Fehler eingeschlichen, darum lade ich diese nochmals neu hoch.


Gruss
mad
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23813
Re: Übertrag >24 Stunden
« Antwort #13 am: August 14, 2019, 09:47:20 »
Hallo,

ein Modul darf nicht den selben Namen wie eine Function/Sub haben.

Nenne das Modul also z. B. so:  mdl_Calc

Offline mad

  • Access-Profi
  • **
  • Beiträge: 120
Re: Übertrag >24 Stunden
« Antwort #14 am: August 14, 2019, 11:20:55 »
Hallo,

Das Modul habe ich umbenannt. Erstmal funktioniert die Abfrage sowie auch das HF.
Aber die Gesamtzeit wird jetzt ein sehr komische Werte angezeigt, nämlich 8640:00 bzw. 38880:00.
Ich habe jetzt in den Code statt ...*24  -   .../60 eingetragen, dann wird wieder die 6:00 bzw. 27:00 angezeigt.
Allerdings hat der übertrag bei >24 Std in das Feld des UF immer noch nicht geklappt.

Wie kann man jetzt den Übertrag
Private Sub Name_AfterUpdate()
    Me!ÜbStdN = Me.Parent!ÜbDauer
End Sub
noch hinbekommen?


Gruss
mad
 

 

Übertrag UF nach HF

Begonnen von YSBerlinBoard Formular

Antworten: 6
Aufrufe: 3252
Letzter Beitrag August 18, 2010, 22:45:22
von YSBerlin

Advertisment / Werbung - Amazon Affiliate Links