Fehler nach Umstieg auf Access 2021

Das hatte ich auch gesehen und wollte es mir versuchen nachzubauen. Kannst ja schon mal anfangen, Ich habe heute und morgen leider noch keine Zeit. Aber dann.
 
Werbung:
Hallo,

ich habe da mal ein wenig begonnen...

Wie befürchtet gibt es schon zu Beginn gewaltige Probleme.

Würdest du dir die DB im Anhang mal anschauen?
Eventuell könnten wir mal telefonieren? Kann ich dir meine Telefonnummer als persönliche Nachricht schicken?

Noch einen schönen Abend - Wolfgang
 

Anhänge

Die Herausforderung bei dem Beispiel ist, dass der Autor einige wesentliche Dinge weggelassen hat. Einerseits gibt er einen sehr eleganten Ansatz, andererseits lässt er einige Dinge weg, die man entweder selbst rausfindet oder man meldet sich bei ihm an. Aber auf seiner Basis, für die ich mich hier persönlich bei ihm bedanken möchte, habe ich eine funktionstüchtige Version gebaut. Ich vervollständige sie noch etwas und schleife ein paar Ecken ab. Dann stelle ich sie zur Verfügung und erläutere sie auch gern im Einzelnen. Es ist nicht so wild. Telefonieren wird wohl nicht nötig sein.
 
Hallo,
wie schon gesagt, wenn es ums Design oder andere "lästige" Dinge geht, für die meine Kenntnisse ausreichen und die Zeit benötigen, bin ich gerne bereit das zu übernehmen.
Bei mir hapert es gewaltig beim VBA.

LG - Wolfgang
 
So, ich habe das mal soweit umgesetzt. Es gibt ein Unterformular, welches für sich allein läuft. (nur der OK-Button muss dann abgeklemmt werden, weil er sich auf das Hauptformular bezieht.) Wird das Hauptformular gestartet, ist der Kalender als Unterformular eingebunden. Das Hauptformular hat nur drei eigene Felder um die Funktion zu testen.
- Vorgabedatum: Im Gegensatz zum Unterformular, wo das Vorgabedatum das Tagesdatum ist, kann man über dieses Feld den Kalender aus dem Hauptformular heraus auf einen frei wählbaren Wert voreinstellen. (Datum einstellen und Feld verlassen löst das Ereignis aus)
- Test Ausgabedatum: Hier wird das jeweils im Kalender ausgewählte Datum angezeigt sobald ein Tag angeklickt wird.
- Test wenn OK im Unterformular gedrückt wird: Dieses Feld erhält erst das ausgegebene Datum aus dem Unterformular wenn der grüne Haken angeklickt wird.

Da das vorgegebene Beispiel, wie bereits erwähnt, unvollständig und an einigen Stellen für mich nicht immer nachvollziebar war, habe ich in den Fällen jeweils eine eigene Lösung geschaffen. Da gehts evtl. an manchen Stellen eleganter. Insbesondere die Klasseneigenschaften und Events in den Formularklassen bereiteten mir Probleme. Das mit den Properties, Zugriff auf die benutzerdefinierten Eigenschaften des Unterformulars ist soweit umgesetzt. Im Fall der benutzerdefinierten Ereignisse habe ich diese zwar eingebaut, nutze sie aber nicht wirklich. In den Fällen gibt es meiner Ansicht nach gleichwertige Workarounds. Falls jemand die Ereignisverarbeitung vervollständigen kann und möchte, wäre ich für ein Feedback dankbar, wo der Hund begraben liegt.

Ansonsten viel Spaß mit dem Kalender und bei Fragen, gerne melden.
 

Anhänge

Hallo Andreas,

ich habe mir gerade die Datei heruntergeladen und bin gespannt, ob alles funktioniert.

Aber zuerst möchte ich mich bei Dir bedanken!


Sobald ich es ausprobiert habe, werde ich mich wieder melden.

Besten Dank und einen guten Start in die neue Woche - Wolfgang
 
Hallo Andreas,

den Kalender habe ich in Office 2007 und 2021 erfolgreich getestet. Nochmals vielen Dank für deine Hilfe!

Ich glaube, dass der Kalender für viele interessant ist.
Schön, dass du auch im VBA einige Bemerkungen und Erklärungen geschrieben hast.
Der Code zum Unterformular ist ganz schön lang, da muss ich mich mal in Ruhe mit beschäftigen.

Eine große Herausforderung wird für mich die Einbindung in mein bestehendes Projekt. Drück mir die Daumen.

Liebe Grüße - Wolfgang
 
Das Wechselspiel zwischen Haupt und Unterformular ist etwas tricky und ich habe da an der einen oder Stelle vielleicht auch nur etwas Glück gehabt. Denn die Nutzung von benutzerdefinierten Eigenschaften und Events erschließt sich mir auch nicht immer. Ich glaube auch nicht, dass sie in Access und VBA essentiell sind, weil VBA das im Grunde ja auch nur nachbildet um "Objektorientierung" zumindest im Ansatz zu gewährleisten.
Ich bin da eher der traditionell sequentielle Typ. Oder, man könnte auch sagen, früher war alles besser um das eigene Unvermögen zu überspielen.🤣
 
Bevor ich den Kalender in meine DB einbaue, möchte ich ihn ein wenig anpassen.

Der bisher verwendete Kalender war beim Öffnen des Formulars unsichtbar und an ein Datumsfeld im Hauptformular gebunden. Ähnlich wie das Textfeld "Vorgabedat" im Hauptformular. Bei einem Klick in dieses Feld wurde der Kalender zur Datumsauswahl sichtbar. Das Datum wurde durch Auswahl von Jahr und Monat und durch einen Klick in den gewünschten Tag ausgewählt. Dabei wurde der Kalender wieder unsichtbar und das ausgewählte Datum wurde in das Datumsfeld übernommen.

Soweit bekomme ich das vermutlich hin. Grundsätzlich möchte ich nur Wochentage (Montag bis Freitag) zur Auswahl zulassen. Daher habe ich bisher das Datum bei der Auswahl von Samstag oder Sonntag auf den Freitag zurückgesetzt.

Ich würde gerne die Felder für Samstag und Sonntag so sperren, dass man diese nicht anklicken kann. In den Eigenschaften habe ich daher Aktiviert auf "nein" und Gesperrt auf "ja" gesetzt. Leider bringt es nicht den gewünschten Erfolg. Der Cursor springt dann auf den Montag in dieser Reihe. Ebenso wenn man neben ein Feld im Detailbereich klickt.

Wie kann man es erreichen, dass nur Tage von Montag bis Freitag angeklickt werden können, und der Cursor sonst nichts macht?

Gruß - Wolfgang
 
Ich habe zwei ja/nein Häkchen eingebaut über die Samstag/Sontag ausgeschaltet werden können. Willst Du die Einstellung dauerhaft ändern, stelle den Standardwert der ja/nein-Felder in den Eigenschaften auf wahr oder falsch und "Sichtbar" auf Nein.
 

Anhänge

Hallo Andreas,

vielen Dank für deine Hilfe.

In #25 habe ich beschrieben wie ich mit dem Kalender bisher umgegangen bin. Bei der Auswahl eines Samstages oder Sonntags habe ich das Datum per VBA auf den Freitag geändert, das ist kein Problem. Das könnte ich auch weiterhin so machen.

Ich suche nach einer Lösung, dass bei einem Klick auf einen Samstag oder Sonntag einfach nichts passiert, und auch der Cursor nicht irgendwo hin springt.
Bis jetzt habe ich dafür keine Lösung gefunden.
Kann man Formularbereiche für den Cursor sperren?

Bitte mache dir nicht noch mehr Arbeit mit neuen Formularen. Der Kalender von dir ist okay, den werde ich auf jeden Fall verwenden. Ich bin froh, dass es damit eine elegante Lösung für mein Problem gibt. Doch bevor ich ihn in mein Formular einbaue, muss ich ihn ein wenig an meine Gegebenheiten anpassen.

Liebe Grüße - Wolfgang
 
Guten Morgen Wolfgang,

eigentlich kann man ja alle Steuerelemente, Textfelder, etc. einfach in den Eigenschaften auf nicht aktiv oder unsichbar setzen. Leider funktrioniert das nicht in Endlosformularen. Und die vorgegebene Programmierung nutzt eine Endlosformular für die einzelnen Zeilen. Es werden imme dynamisch soviele Zeilen aufgebaut, wie gerade benötigt werden. Das hat den Nachteil, dass selbst mit der bedingten Formatierung, die sonst in Endlosformularen das MIttel der Wahl ist, zuerst immer die richtige Zeile des aktiven Steuerelementes(Textfeldes) ermittelt werden muss. Also habe ich die Focus-Routine gebaut. Dort findest Du auch die Abhandlung für Sa/So. und kannst Diese entsprechend umbauen. Falls es nicht klappt, melde dich gerne.
 
Hallo,

darf ich nochmal um Hilfe bitten?
Um den Kalender in meine DB zu integrieren habe zuerst versucht, alles so anzupassen, wie es bei mir benötigt wird.

Daher habe ich ein paar Dinge umbenannt, etwas entfernt und im Code auskommentiert. Wie schon beschrieben ist aus Platzgründen der Kalender auf dem Formular unsichtbar und öffnet sich wenn man das Feld Datum anklickt.
Nach einem Klick in das gewünschte Datum wird dies ins Feld Datum auf dem Hauptformular übernommen. Bis hierhin ist alles okay.

In meiner DB soll nach dem Ändern des Datums eine Prozedur "Private Sub WrKalender()" ausgeführt. Das neue Datum kann ich in das Feld Datum übergeben, allerdings gelingt es mir nicht die Prozedur aus dem Unterformular heraus aufzurufen.

Die geänderte DB ist im Anhang

Für Eure Hilfe im Voraus vielen Dank - Wolfgang
 

Anhänge

Werbung:
Eine Private-Procedur lässt sich nur innerhalb derselben Klasse, also hier innerhalb des UFs, bzw HFs aufrufen. Deshalb heisst sie "Private" ;-)
Prozeduren und Funktionen die von überall her aufgerufen werden sollen müssen in einem allgemeinen Modul liegen und Public heißen.
Da kann man dann auch Variablen lustig mit übergeben und auswerten.
Der Austausch von Variablen ist recht einfach, wie du gesehen hast, geht auch noch auf viele andere Arten, wie globale Variablen, OpenArgs, etc.

Etwas tricky sind da Events, in einem Klassenmodul (hier Formularklassenmodule) in einem anderen Modul auszuwerten. Im Unterformular des Kalenders sind einige Events deklariert, die ich aber bisher nicht ausgewertet habe. Ich hab sie aber drin gelassen um ggf. genau auf solche Fragestellungen reagieren zu können. In diesem Fall habe ich das Event "DateSelected" mal genutzt. Bei mir hat es auch etwas gedauert und noch einma lin anderem Forum fragen notwendig gemacht, bis ich das Prinzip von selbst erstellten Ereignissen (Events) kapiert habe. Schau es dir einfach mal an und lese dich in objektorientierte Programmierung ein. Dabei stößt Du dann zwangsläufig auf Objekte, Klassen, Properties und Events.
 

Anhänge

Zurück
Oben