Hallo,
ich hab ein Problem welches ich nicht gelöst bekomme.
Ich habe ein HF und ein Ufo, im HF wähle ich über ein Textfeld mit dem "DatePicker" ein Datum aus, daraufhin führe ich im "bei geändert" Ereignis folgendes Code aus.
DoCmd.RunCommand acCmdSaveRecord
KombiDatumstagUpdate
folge:
Public Sub KombiDatumstagUpdate()
If IsNull(Me!KombiDatumstag) Then Exit Sub
Dim rst As DAO.Recordset
Set rst = Me.RecordsetClone
rst.FindFirst "Datumstag_F = #" & Format(Me!KombiDatumstag, "yyyy-mm-dd") & "#"
Me.Bookmark = rst.Bookmark
Set rst = Nothing
Call FormularAktualisieren
end sub
jetzt nur ein kleiner Auszug aus FormularAktualisieren
Form_frmDienstplan!ufrmDienstplan.Requery
Form_frmDienstplan!ufrmDienstplanAngestellte.Requery
Form_frmDienstplan!frmIstStunden.Requery
Form_frmDienstplan!frmIstStundenAktuell.Requery
Form_frmDienstplan!ReportDienstposten.Requery
so... jetzt das Problem.
es funktioniert alles super, außer das ich keine bedingte Formatierung in dem Ufos dargestellt bekomme BIS ich irgendwo hinklicke, egal ob im HF, oder Ufo.
hab schon me.refresh, me.repaint , ufo.setfocus usw. probiert. Alles ohne Erfolg, sie klappt erst nach einem Mausklick.
hat wer ne Idee, woran das liegt? Beim open Ereignis des HF wird ein DS anhand es heutigen Datums automatisch als Bookmark gesetzt und da zeigt er die Formatierung an. Aber nicht beim wechsel des DS.... HILFE :o
PS: Ich habe auch noch Textfelder im Ufo die bei Steuerelementinhalt: =[Position].[column](1) haben, diese werden AUCH erst nach einem "klick" sonstwo hin angezeigt.
Ich würde versuchen, die Unterformulare über das Feld Datumstag_F (wenn das Dein Schlüsselfeld ist) im Hauptformular zu verknüpfen (Eigenschaften Verknüpfen Von und Verknüpfen Nach der Unterformularsteierelemente verwenden). Ein Requery auf die Unterformulare sollte dann IMHO nicht notwendig sein.
PS: Für das Anstoßen der Suche würde ich eher das Nach Aktualisierung Ereignis in Betracht ziehen - dann kann man auch mal ein Datum eintippen.
Wenn's nicht hilft, bitte ein abgespecktes Beispiel im mdb-Format hochladen.
Hi,
Ja das mit dem verknüpfen hab ich auch schon angefangen umzusetzten, viel mir heute Nacht auch ein. Werd ich heute Abend mal weiter testen.
Das Prob mit "nach aktualisierung" ist, dass der Wert erst genutzt wird, sobald ich den Fokes des Feldes verliere, oder mit Enter bestätige.
Zumindest wird es nicht ausgelöst wenn ich über den Datepicker ein Datum wähle.
So habs mal geändert.
Leider tritt der Fehler immer noch auf, habs unter Acc2010 und 2016 getestet.
Vorher, wo ich das Datum über ein Kombi Feld mit Datensatzherkunft einer Tabelle ausgewählt hatte, klappte das ohne Probleme..... ich werd weiter testen.
PS: evtl. keine schöne Lösung, aber kann man einen Mausklick per VBA simmulieren? So ähnlich wie Sendkeys {Enter}?
Hochladen kann ich leider nicht, ist schon zu komplex mit Daten bestückt.
Hallo,
bei der Auswahl eines Datums mit dem integrierten DatePicker wird das "Change"-Ereignis des Textfeldes ausgelöst....
Hi
Zitat von: Xoar am Februar 03, 2017, 14:49:05
PS: evtl. keine schöne Lösung, aber kann man einen Mausklick per VBA simmulieren? So ähnlich wie Sendkeys {Enter}?
'aus: http://www.vbarchiv.net/tipps/tipp_52-mausklick-simulieren.html
' Benötigte Deklarationen
Private Declare Sub mouse_event Lib "user32" _
( _
ByVal dwFlags As Long, _
ByVal dx As Long, _
ByVal dy As Long, _
ByVal cButtons As Long, _
ByVal dwExtraInfo As Long)
Public Const MOUSE_LEFT = 0
Public Const MOUSE_MIDDLE = 1
Public Const MOUSE_RIGHT = 2
' Die nachfolgende Prozedur simuliert den gewünschten Mausklick.
Public Sub SendMausklick(ByVal mButton As Long)
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10
If (mButton = MOUSE_LEFT) Then
Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
ElseIf (mButton = MOUSE_MIDDLE) Then
Call mouse_event(MOUSEEVENTF_MIDDLEDOWN, 0, 0, 0, 0)
Call mouse_event(MOUSEEVENTF_MIDDLEUP, 0, 0, 0, 0)
Else
Call mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
Call mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)
End If
End SubVielleicht hilft das?
Harald
Ich teste es nachher mal.
Das "change" Ereignis ist ja das "bei geändert"
Oder?
@bahasu
ja das Mausklick simulieren klappt.
Problem gelöst, woran es auch immer gelegen hat.