Neuigkeiten:

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

Mobiles Hauptmenü

Datumsauswahl anzeigen

Begonnen von gsaccess, April 04, 2024, 15:41:16

⏪ vorheriges - nächstes ⏩

gsaccess

Ich habe ein Formular mit einem Unterformular. Im Unterformular soll bei Fokuserhalt des Datumfeldes(Datum, kurz) der Kalender für die Auswahl des richtigen Datums automatisch angezeigt werden.
RunCommand acCmdShowDatePickerDies funktioniert im Unterformular solange es nicht in das Hauptformular eingebunden ist problemlos.
sobald ich das Unterformular in das Hautformular einbinde kommt bei Fokuserhalt des Datums folgende Fehlermeldung(siehe Bild).
Kann es sein, dass der Befehl RunCommand acCmdShowDatePickerin einem Unterformular nicht funktioniert bzw. gibt es dazu eine andere Lösung.

Günther

Beaker s.a.

Hallo,

Wozu?
Jedes Textfeld hat die Eigenschaft "Datumsauswahl anzeigen". Diese auf
"Für Datumsangaben" eingestellt erledigt Access deine Anforderung
automatisch.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

gsaccess

Die Eigenschaften habe ich für Datumseingabe eingestellt. Es soll aber bei Fokuserhalt das Kalendersteuerelement automatisch angezeigt werden, um das Datum anklicken zu können. Der Anwender spart sich dadurch jedesmal einen Klick für das Öffenen des Kalenders.
(Siehe Bild)
Günther

gsaccess

Wozu?
Jedes Textfeld hat die Eigenschaft "Datumsauswahl anzeigen". Diese auf
"Für Datumsangaben" eingestellt erledigt Access deine Anforderung
automatisch.
Das Steuerelement Kalender kann aber nicht bei Fokuserhalt automatisch angezeigt werden.

Günther

Beaker s.a.

Sorry, hatte ich falsch verstanden.
Helfen kann ich aber leider auch nicht.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

PhilS

Zitat von: gsaccess am April 04, 2024, 15:41:16Dies funktioniert im Unterformular solange es nicht in das Hauptformular eingebunden ist problemlos.

sobald ich das Unterformular in das Hautformular einbinde kommt bei Fokuserhalt des Datums folgende Fehlermeldung(siehe Bild).
Dein Problem kann ich so nicht nachvollziehen. Im Prinzip sollte dein Code funktionieren, egal ob das betreffende Steuerelement in einem Hauptform oder UFO ist.

In welchem Ereignis führst du den Code aus?

Probier doch mal ein ganz simples Beispiel mit dieser Funktionalität zu erstellen?
Tritt dort der Fehler auch auf?
Wenn ja, kannst du dieses Beispiel ja mal hier hochladen.
Wenn nein, muss die Problemursache eine spezielle Situation in deinem Formular sein. Z.B. anderer Code in dem Zusammenhang ebenfalls läuft.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

gsaccess

vielen Dank für eure Rückmeldungen.
Ich habe bisher den code
RunCommand acCmdShowDatePickerDas hat nicht funktioniert. Siehe oben.
Der Code SendKeys ("%{DOWN}")funktioniert.
Im Forum wird dieser Code aber immer wieder als problematisch beschrieben. Numlock wird ausgeschalten.
Kann er trotzdem verwendet werden?

Günther

PhilS

Zitat von: gsaccess am April 15, 2024, 13:04:43Ich habe bisher den code
RunCommand acCmdShowDatePickerDas hat nicht funktioniert. Siehe oben.
Das sollte es aber eigentlich. Ich hatte dir oben ja ein paar Ansatzpunkte zur Problemanalyse geschrieben.

Zitat von: gsaccess am April 15, 2024, 13:04:43Der Code
SendKeys ("%{DOWN}")funktioniert.
Im Forum wird dieser Code aber immer wieder als problematisch beschrieben. Numlock wird ausgeschalten.
Kann er trotzdem verwendet werden?
SendKeys sendet halt Tastatureingaben an das in diesem Moment aktive Fenster.
Ob das dein Fenster ist, oder irgendein anderes, das zufällig in diesem Moment den Focus bekommen hat, kannst du nicht wissen.
In deinem Kontext ist die Wahrscheinlichkeit eher gering, dass ein falsches Fenster aktiv ist und die Auswirkungen von {DOWN} sind üblicherweise eher harmlos.

Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

gsaccess

ZitatProbier doch mal ein ganz simples Beispiel mit dieser Funktionalität zu erstellen?
Tritt dort der Fehler auch auf?
Wenn ja, kannst du dieses Beispiel ja mal hier hochladen.

In der Anlage die Test5 DB mit dem Formular frmstunden und dem Unterformular frmAuftragStunden.
Im Unterformular frmAuftragStunden funktioniert der Code
RunCommand acCmdShowDatePicker.
Das Unterformular muss ein Endlosformular sein. In der Datenblattansicht wird der Kalender nicht automatisch geöffnet.
Wenn dann dieses Unterformular in das Hauptformular frmStunden eingebunden wird kommt der Fehler (siehe Bild - Fehlermeldung)
Ich hoffe damit das Problem sichtbar gemacht zu haben.
Oder habe ich hier einen Denkfehler?

Günther

gsaccess

Hat jemand von euch eine Idee warum RunCommand acCmdShowDatePickerin einem Unterformular nicht funktioniert?
SendKeys ("%{DOWN}") schaltet leider immer wieder den Numlockblock aus.
Siehe auch letztes DB upload.

Günther

PhilS

Zitat von: gsaccess am April 24, 2024, 23:31:25Hat jemand von euch eine Idee warum
RunCommand acCmdShowDatePickerin einem Unterformular nicht funktioniert?
Ich habe leider keine Idee zur Problemlösung.
Die von dir gezeigte Fehlermeldung scheint kein generelles Problem zu sein. Die kann ich zwar mit deinem Beispiel nachvollziehen, aber nicht, wenn ich ein ähnliches Szenario selbst erstelle. - Allerdings, auch in meinem einfachen Beispiel funktioniert RunCommand acCmdShowDatePicker leider meistens nicht; es passiert einfach gar nichts, ohne Fehlermeldung.


Zitat von: gsaccess am April 24, 2024, 23:31:25SendKeys ("%{DOWN}") schaltet leider immer wieder den Numlockblock aus.
Siehe auch letztes DB upload.
Das ist ein bekanntes Problem mit SendKeys.
Ein einfacher Workaround wäre, den Nummernblock einfach im Anschluss wieder zu aktivieren, wenn er ausgeschaltet ist.
Mit meinem Keyboard-State Klassenmodul ist das sehr einfach.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

ebs17

ZitatDie RunCommand-Methode führt einen integrierten Menü- oder Symbolleistenbefehl aus.
Das kann man in der Hilfe nachlesen.

Diese Menü- oder Symbolleistenbefehle haben aber keine Ahnung von Objekten und erst recht nicht von Deinen Objekten. Sie werden dann also dort ausgeführt, wo "Access" meint, dass es gerade aktuell ist. Diese Meinung kann sich schnell von Deinen Wünschen unterscheiden.
Erste Überlegung könnte/sollte also sein, vor der Anweisung den Fokus gezielt auf das Unterformular zu setzen.

Von Fokussetzerei halte ich allerdings regelmäßig wenig. Wenn man einen Menschen oder ein Objekt mit Namen kennt, muss man nicht erst den Finger aufsetzen, um zu verdeutlichen, wen/was man meint.
Ein Datumsfeld ist z.B. eine TextBox, die ihrerseits Eigenschaften hat und die in einem Formular adressierbar ist.
Nach Objektkatalog würde ich meinen Versuch mit so etwas starten:
Me.txtDatum.ShowdatePicker = 1
In jedem Fall hat man hier eine Unabhängigkeit davon, ob das Formular ein Haupt- oder Unterformular ist.
Mit freundlichem Glück Auf!

Eberhard

gsaccess

Vielen Dank für die ausführliche Auseinandersetzung mit meinem Problem!!
ZitatMit meinem Keyboard-State Klassenmodul ist das sehr einfach.
Ich habe mich mit dem Code auseinandergesetzt, steige aber nicht durch.
Gibt es nicht eine einfache Möglichkeit abzufragen ob numlock eingeschaltet ist oder nicht. Wenn nicht eingeschaltet, soll eingeschaltet werden.
Hab es mit folgendem Code versucht
     If Not CBool(GetKeyState(KeyCodeConstants.vbKeyNumlock)) Then
         'MsgBox "NumLock ist nicht eingeschaltet"

         SendKeys "{NUMLOCK}", True
         Exit Sub
     End If
Aktivierung Numlock wird aber nur gewechselt.

Me.txtDatum.ShowdatePicker = 1damit wird zwar kein Fehler produziert, aber das Steuerelement Kalender wird nicht geöffnet.

Günther


PhilS

Zitat von: gsaccess am April 28, 2024, 16:11:10Ich habe mich mit dem Code auseinandergesetzt, steige aber nicht durch.

Gibt es nicht eine einfache Möglichkeit abzufragen ob numlock eingeschaltet ist oder nicht. Wenn nicht eingeschaltet, soll eingeschaltet werden.
Ja, es gibt eine *sehr* einfache Möglichkeit dafür. Das ist der Sinn und Zweck dieses Klassenmoduls.
1.) In Access über "Externe Daten" - "Importieren" aus der Beispiel-DB das Klassenmodul "Keyboardstate" in deine DB importieren.
2.) Folgenden Code schreiben:
    If Not Keyboardstate.Numlock Then
        Keyboardstate.Numlock = True
    End If
Einfach genug? ;-)
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

gsaccess

Danke für deine Unterstützung.
Ich habe das Modul importiert und den Code in das Feld beiFokusverlust geschrieben. Das führt aber trotzdem dazu dass der Numlock abwechselnd ein- und ausgeschalten wird.
Es sollte aber eigentlich überpröft werden ob der Numlock eingeschalten ist und nur wenn er nicht eingescchalen soll er wieder aktiviert werden.

Günther