Access-o-Mania

Access-Forum => Access Programmierung => Thema gestartet von: jacobian am Dezember 28, 2017, 23:53:50

Titel: Kalender übernehmen
Beitrag von: jacobian am Dezember 28, 2017, 23:53:50
Liebe Spezialisten
Mein Anliegen ist es, eine Erinnerungsfunktion einzurichten, welche mit möglichst wenig Arbeitsschritten ein pop-up an einem bestimmten Tag und an einer bestimmten Uhrzeit einen Text anzeigt.

Erst hab ich mir überlegt, dass es ja bloss 3 Felder dazu braucht: Datum, Uhrzeit und Textfeld.
Hier fehlt mir jedoch dann das know-how in visual basic. blöd!
Der zweite Weg, war ein activ-x - Steuerelement, wo ich das Element Kalender-Steuerelement 12.0 finde. Dies wär dann halt bloss eine Teillösung der Aufgabe. Nämlich bloss das Datum!
Und zuletzt hab ich mich auf die Suche gemacht nach fertigen Lösungen und auch welche gefunden:
http://www.ms-office-forum.de/forum/showthread.php?t=99673
Hier wird ein Lösung angeboten, welche viel Platz auf dem Formular einnimmt. Es wird davon ausgegangen, dass auch eine ganze Liste der vergangenen Aufgaben angezeigt werden kann.         
Hier entnehme ich die Idee, eine aufgabe als erledigt markieren zu können, also ein viertes Element einzubauen.
Ferner getestet: Access Kalender 2018 von Smart tool: Ein geniales Aufgabentool. Bloss möcht ich EINE Aufgabe defninieren und es sollte schlank sein. http://www.add-in-world.com/download/access-kalender/           
Und dann endlich gefunden:  http://www.office-loesung.de/ftopic4502_0_0_asc.php       
Hier ist eigentlich die Lösung vorhanden, jedoch spuckt es eine Fehlermeldung aus wenn ich sämtliche Elemente importiere in meine Dantenbank, siehe Anhang.

Hier  http://www.access-o-mania.de/forum/index.php?topic=21352.0   hab ich dann noch den selben Kalender in Version 2010 konvertiert gefunden. Die gleiche Fehlermeldung erscheint.

https://support.microsoft.com/de-de/help/503570
Dort gelesen dass : Die Methode "FindFirst" ist jedoch nur auf Recordsetobjekte vom Typ "Dynaset" und "Snapshot" anwendbar ist, nicht aber auf den Typ "Table". Dies hat mich nach einigen Vesuchen, resp. Änderungen im Quellcode nicht weitergebracht.

Das Betriebssystem ist Windows7 und Standarddateiformat : Access 2002-2203
Hab den Terminkalender97 im access2003 aufmachen können und die Anwendung funktioniert dort ohne Fehlermeldung. Eben halt nicht wenn ich es in meine bestehende Datenbank übernehmen will.
Weiss also jemand, was ich ändern/probieren sollte, damit der Terminkalender97 sich ohne Fehlermeldung bedienen lässt?
Vielen herzlichen Dank
Edi



Titel: Re: Kalender übernehmen
Beitrag von: Lachtaube am Dezember 29, 2017, 05:28:17
Screenshots sollte man der Größe wegen im PNG-Format hochladen. Wenig sinnvoll erscheint es auch, Screenshots von Code-Passagen oder Meldungsfenstern anzufertigen - den kurzen Satz kann man doch schließlich abtippen.

Genug kritisiert :) - im Anhang findest Du das konvertierte Kalenderformular oder verwende Haralds Upload hier (http://www.access-o-mania.de/forum/index.php?topic=22924.msg134493#msg134493).
Titel: Re: Kalender übernehmen
Beitrag von: jacobian am Dezember 30, 2017, 14:55:25
Hallo Lachtaube
Vielen Dank schon mal für die Antwort.
Lustig, dass das Thema vor wenigen Tagen aufgegriffen wurde!
Leider seh ich in deinem Anhang ausschliesslich ein Formular, welches ein Datumsfeld mit datepicker enthält.
Vermutlich sind meine Kenntnisse nicht ausreichend, um den Text mit Erinnerungsfunktion-popup zu einer bestimmten Zeit zu ergänzen.
Siehst du denn einen Grund für die Fehlermeldung in meinem Anhang (sorry fürs Format) ?
Titel: Re: Kalender übernehmen
Beitrag von: Lachtaube am Dezember 30, 2017, 15:14:29
Jacobian, wenn ich den Kopf mit der Maus drücke, erscheint bei mir das Kalender-Formular. Ist das bei Dir nicht der Fall?

Und nein, ich kann in Deinem Bild nichts erkennen. Versuche den Code zu kopilieren - vielleicht meldet sich dann VBA mit etwas Konkretem.
Titel: Re: Kalender übernehmen
Beitrag von: jacobian am Januar 01, 2018, 12:32:08
Hallo und ein gutes neues Jahr!
Ja das sieht bei mir genau so aus. Bloss würd ich mir eine Erinnerungsfunktion wünschen. Ich möchte an einem bestimmten Tag zu einer bestimmten Uhrzeit mittels jeweiligen Text eine Erinnerung angezeigt bekommen.
Bislang hab ich noch nicht rausgekriegt wie das kompilieren geht aber ich such mal weiterhin danach..
Titel: Re: Kalender übernehmen
Beitrag von: PhilS am Januar 01, 2018, 13:28:00
Bislang hab ich noch nicht rausgekriegt wie das kompilieren geht aber ich such mal weiterhin danach..
Im VBA-Editor, Menü "Debuggen"-"Kompilieren ...".
Wenn es dabei zu Fehlern kommt ist die Meldung wichtig, aber noch viel mehr die Codezeile, die dabei markiert wird.
Titel: Re: Kalender übernehmen
Beitrag von: Lachtaube am Januar 01, 2018, 13:32:44
Ich wünsche Dir auch ein gutes Neues!

Zum Kompilieren: im VBA-Editor den ersten Menüeintrag von oben unter Debuggen auswählen.

Zum Erinnern: je nachdem wann die Erinnerung stattfinden soll, muss beim Starten (das wäre einmalig) oder in bestimmten Abständen geprüft werden, ob eine Erinnerung fällig ist. Für Letzteres braucht es ein (optional verstecktes) Formular, das in gewissen Zeitabständen prüft, ob Erinnerungen angefallen sind. Diese wird man dann vermutlich in einer Tabelle festhalten und nebst Datum auch mit Uhrzeit ausstatten. Der kleine Kalenderdialog kann lediglich zur Auswahl und/oder Anzeige eines Datums verwendet werden. Wenn nebst Datum und ggf einer Zeitperiode auch noch Text zur Darstellung gebracht werden soll, ist die Aufgabe viel umfangreicher. Auf Roger's Library gibt es ein Beispiel ScheduleTracker (http://www.rogersaccesslibrary.com/forum/topic35.html), das ggf. als Muster dienen kann (weniger das Layout - das gefällt mir nicht- sondern eher das Datenhandling). Da befinden sich auch noch mehr Beispiele, die Zeiträume nebst Text anzeigen.

Persönlich nutzte ich Google Calendar, das mir Termine und Freizeit anzeigt und bei Bedarf eine Email verschickt oder auch das Handy wackeln/klingen lässt.
Titel: Re: Kalender übernehmen
Beitrag von: jacobian am Januar 01, 2018, 22:39:24
okay danke beiden!
unter VB und dem formular "Kalender", welches ich importiert hab sieht man, was ich im ersten post im Anhang gesedet hab. Wenn dort die Fehlermeldung weggeklickt wird, ist bei der Zeile: rs.FindFirst "Datum = " & DatumSQL(DateSerial(Me!Jahr, Me!Monat, aktDay))   das FindFirst blau hinterlegt.
Wenn ich mir andere Formulare anschau dann stoss ich auf das Formular Kunde, wo die ganze Zeile rot hinterlegt ist.
Private Sub Text46_BeforeUpdate(Cancel As Integer)
DatDiff("jjjj";[DATEDENAISSANCE];Datum())+(Format(Datum();"mmtt")<Format([DATEDENAISSANCE];"mmtt"))
End Sub
Da ich bei der Fehler-Elimination sämtliche Feldnamen in den Tabellen, welche Datum hiessen umbenannt habe, geh ich davon aus dass es deswegen rot ist, da hier bei der Berechnung des Alters das Feld Datum nicht mehr gefunden wurde.
Mittlerweile hab ich auch die Altersberechnungsfunktion gelöscht. Hat nix gebracht.
Wo find ich ein Verzeichnis, was die Farben gelb, rot, grün und blau zu bedeuten haben?
Eine Alternative zu dem besagten "Kalender97", der es mir angetan hat find ich es immer ein wenig weniger schön, wenn es extern passiert. Ich könnt ja eigentlich "Kalender97" parallel laufen lassen - dann kommt keine Fehlermeldung.
Deswegen bin ich noch motiviert, es weiterhin zu versuchen.
Titel: Re: Kalender übernehmen
Beitrag von: Lachtaube am Januar 02, 2018, 00:45:27
Im VBA-Editor im Menü Extras/Optionen... im Register Editor Format kannst Du das Farbschema einsehen und ändern.

Die gezeigte Anweisung ist syntaktisch falsch (und vermutlich auch rot markiert) und auch vom Sinn her nicht so recht etwas zuzuordnen. In VBA werden Funktionen ausschließlich mit englischen Namen verwendet. Argumente werden durch Kommata und nicht durch Semikola getrennt. Funktionen benötigen ein Ziel für eine Wertezuweisung - ansonsten wären es Prozeduren, die ohne Klammerung geschrieben werden.

Private Sub Text46_AfterUpdate()
   Dim CalculatedAge As Long
   
   CalculatedAge = DateDiff("yyyy", Me.DATEDENAISSANCE, Date) + _
                   (Format(Date, "mmdd") < Format(Me.DATEDENAISSANCE, "mmdd"))
   Me.TextfeldZurAltersanzeige = CalculatedAge
   'oder
   MsgBox CalculatedAge
End Sub

Am besten kommentierst Du alles Rote zunächst einmal aus. Wenn es danach keine Fehlermeldung mehr beim Kompilieren gibt, kann man Code in jeder auskommentierten Baustelle nach und nach abarbeiten.
Titel: Re: Kalender übernehmen
Beitrag von: Beaker s.a. am Januar 02, 2018, 12:56:58
Hallo Lachtaube,
Zitat
Am besten kommentierst Du alles Rote zunächst einmal aus.
Ob das eine so gute Idee ist? Evtl. erzeugt das doch weitere Fehler.
Ich arbeite Kompilierungsfehler in der Reihenfolge ab wie sie angezeigt
werden.
gruss ekkehard
Titel: Re: Kalender übernehmen
Beitrag von: Lachtaube am Januar 02, 2018, 13:31:51
Ekkehard, Du hast ja auch ausreichende Kenntnisse der VBA-Syntax, was bei Jacobian vermutlich nicht der Fall isein dürfte.
Titel: Re: Kalender übernehmen
Beitrag von: Beaker s.a. am Januar 02, 2018, 15:54:11
Hallo Lachtaube, (ich würde dich ja lieber mit Realnamen ansprechen)
Was ich meine ist, dass das Auskommentieren fehlerhaften Codes zu
Folgefehlern führen kann, die er dann versucht zu korrigieren, was aber
gar nicht nötig ist, wenn der erste Fehler ausgemerzt ist.
Das hat IMO auch nichts mit den Kenntnissen zu tun, denn das Problem
verschwindet ja auch nicht durch das Auskommentieren  ;)
gruss ekkehard
Titel: Re: Kalender übernehmen
Beitrag von: PhilS am Januar 02, 2018, 16:32:55
Ich möchte hier Ekkehard zustimmen. Ich halte es nicht für eine gute Idee allen problematischen Code auszukommentieren. Neben dem Problem, dass man sich dadurch mit Folgefehlern beschäftigt, die man gar nicht hätte, wenn man gleich den eigentlichen Fehler korrigiert hätte, stiftet es vielleicht auch mehr Verwirrung weil man den Überlick über relevanten und dauerhaft auskommentierten Code verliert. - Ganz besonders für Anfänger.

Der Compiler bricht ja jeweils bei einem konkreten Fehler ab. Diesen kann man dann jeweils konkret angehen.

Nebenbei zum eigentlichen Problem: Mich beschleicht hier der Verdacht, dass die wesentlichen Probleme daher rühren, dass der Code auf DAO ausgelegt ist, aber jacobian in seinem Projekt nur die ADO-Bibliothek eingebunden hat.
@jacobian: Schau mal im VBA-Editor unter Menü "Extras"-"Verweise" ob du dort die Microsoft DAO 3.6 Object Library eingebunden hast. Wenn nein, diese in der Liste suchen und ankreuzen. - Danach nochmal kompilieren.
- Ich wette 0.02EUR darauf, dass das die Anzahl der Kompilierfehler drastisch reduzieren wird.
 
Titel: Re: Kalender übernehmen
Beitrag von: jacobian am Januar 06, 2018, 18:43:24
aktiviert waren bei mir folgende Bibliotheken:
Visual Basic for Application
Microsoft Access 12.0 Object Library
OLE Automation
Microsoft ActiveX Data Objects 2.5 Library
Microsoft Office 12.0 Access Database engine Object Library
Microsoft Visual Basic for Application Extensibility 5.3
Konnte jedoch nicht das Microsoft DAO 3.6 Object Library einfach aktivieren, sondern  musste erst das Microsoft Office 12.0 Access Database enginge Object Library deaktivieren.
Bedingtes Juhui, denn nun ist die Fehlermeldung: Laufzeitfehler 3061:  1 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.
Wenn ich jetzt auf die Schaltfläche Debuggen klicke wird diese Zeile gelb hinterlegt:  Set rs = db.OpenRecordset("Select Datum From Termin", dbOpenSnapshot)
Die Lösung für Laufzeitfehler 3061 hab ich bislang nicht gefunden.
Möchte noch präzisieren dass meine Access-Version 2007 ist.


Titel: Re: Kalender übernehmen
Beitrag von: Frithjiof am Januar 06, 2018, 19:17:12

Wenn ich jetzt auf die Schaltfläche Debuggen klicke wird diese Zeile gelb hinterlegt:  Set rs = db.OpenRecordset("Select Datum From Termin", dbOpenSnapshot)
Bist du sicher dass das Feld "Datum" (=ungünstiger Feldname) heißt und die Tabelle "Termin"?
Geht das vielleicht?
Set rs = db.OpenRecordset("Select Termin.Datum From Termin;", dbOpenSnapshot)
Titel: Re: Kalender übernehmen
Beitrag von: MzKlMu am Januar 06, 2018, 19:40:50
Hallo,
etwas OT:
Zitat
"Datum" (=ungünstiger Feldname)
Es gibt diese Hinweise oft. Aber wo steht das ?
Ich verwende schon seit ewigen Zeiten (Access97) "Datum" als Feldname und hatte noch nie Probleme.
Datum lässt sich auch in keiner der offiziellen Listen für reservierte Worte finden.
Es gibt andere Worte da ist es kritischer (Name, Anzahl etc.), aber Datum ?
Die (deutsche) Funktion Datum() benötigt ja die Klammern.

Hat jemand mit "Datum" schon gegenteilige Erfahrungen gemacht ?

Ich verwende auch schon ewig problemlos Umlaute in Feld und Objektnamen. Allerdings alles auch nur in deutscher Sprache.
Titel: Re: Kalender übernehmen
Beitrag von: Frithjiof am Januar 06, 2018, 20:52:42
Hallo Klaus
Zitat
"Datum" (=ungünstiger Feldname)
Es gibt diese Hinweise oft. Aber wo steht das ?

Ungünstig, weil es die Verwechselung mit der Funktion Datum() geben kann.
und hier z.B. ein umgekehrter Fall (http://www.office-loesung.de/ftopic389936_0_0_asc.php)

"Ungünstig" heißt ja aber nicht "verboten".


Es ist auch immer eine Frage was mit einer Datenbank, insbesondere auch langfristig, beabsichtigt wird. 

Mit Umlauten könnte es z.B. Probleme geben wenn die Datenbank auf einen SQL-Server übertragen werden soll, oder wenn man mit PHP dran (https://www.php.de/forum/webentwicklung/datenbanken/49253-mysql-tabellenname-enthält-umlaut-ö-hilfe) muss.

Hier ein Beispiel (http://www.asv-berlin-ev.de/htm/kurse.html) einer aus Access generierten Html Seite (ist in Arbeit) 

Dem ungeachtet kann ich aber alles in allem deine Erfahrung bestätigen.

Frithjof
Titel: Re: Kalender übernehmen
Beitrag von: jacobian am Januar 06, 2018, 23:11:47
Hahaha! Sehr cool! Nun läuft's! Thx so much!
Nämlich hab ich, da ich vermutet hab, dass diese Namen ungünstig sind und mehrfach vorkommen (hat immer funktioniert wie bei MzKlMu), alle Feldnamen "Datum" abgeändert. Blöderweise auch dasjenige.
Jetzt wo es wieder Datum heisst kommt keine Fehlermeldung mehr.
Hab ferner das Formular "Kalender" per Makro als Autoexec gesetzt. Somit ist das pop-up jederzeit aktiv und es wird an jeden Termin erinnert.
newbie ist happy! Merci an alle Helfer!
Titel: Re: Kalender übernehmen
Beitrag von: Lachtaube am Januar 06, 2018, 23:32:54
Ich vermute eher, dass aktivierte Objektnamen Autokorrektur in den Optionen für die Datenbank das Fehlverhalten bei Datum verursacht.