Hallo,
mein Ziel ist, aus dem Outlook-Kalender heraus einen bestimmten Datensatz in einer a2007-Datenbank (a2007) anzuzeigen.
Als Zwischenschritt habe ich dafür eine kleine mdb-Datei (Name z.B. ,,53.mdb") vorgesehen. Wenn ich diese direkt im Explorer anklicke, erhalte ich den gewünschten Datensatz in der a2007-Datenbank, egal in welchem Zustand diese war: konnte z.B. geschlossen gewesen sein oder war bereits in einer beliebigen Menüebene geöffnet.
Wenn ich die 53.mdb im von access generierten Outlook-Kalender-Eintrag anklicken will, ist das leider nicht möglich, da die Sicherheitseinstellungen in Outlook das Anhängen einer mdb untersagen. Die im Internet aufgeführten Varianten, die registry und/oder outlook anzupassen, kann ich nicht machen, da die IT das nicht zulässt.
Als Lösung habe ich gefunden, die mdb als zip in Outlook zu bringen. Beim Versuch, im Outlook-Kalender diese im zip-Format angehängte Datenbank zu öffnen, erhalte ich die Meldung: ,,Die Datenbank ,,53.mdb" ist schreibgeschützt".
Auch beim Versuch, die Datenbank aus der zip-Datei heraus (also nicht in der Outlook-Umgebung) zu öffnen, erhalte ich diese Meldung.
Die Datenbank hat als Standardöffnungsmodus ,,Freigegeben", es gibt keine Sperrungen. Es gibt keine Schreibaktionen auf Tabellen, da es in dieser kleinen mdb keine Tabellen gibt.
Sie enthält nur ein paar Programmzeilen, um eine weitere Datenbank aufzurufen bzw. die bereits aufgerufene Datenbank so zu steuern, dass dort ein bestimmter Datensatz angezeigt wird.
Frage:
Wie kann ich die Meldung unterdrücken?
Welche andere Möglichkeit habe ich, aus outlook heraus einen bestimmten Datensatz in einer zu öffnenden bzw. bereits geöffneten Datenbank (frontend, backend, Berechtigungssystem) anzuzeigen?
Harald
Zitateinen bestimmten Datensatz in einer a2007-Datenbank
Ich bin nun etwas einfach gestrickt und würde mich mit einfachen Lösungen begnügen: Um einen Datensatz zu identifizieren, benötigt man dessen (eindeutige) ID. Eine ID wiederum kann man in einem Kalendereintrag als Minitext hinterlegen und so auch auslesen.
Mit Outlook-Ereignissen kenne ich mich nicht aus, aber da sollte doch etwas passendes zu finden sein, um ein kleines VB-Script auszuführen oder direkt per VBA (das gibt es auch in Outlook) die Ziel-DB anzusprechen.
MfGA
ebs
uiuiuiuiui.....
böse !!
Ich habe gerade mal eine Frontend von mir in eine zip-Datei gepackt, habe sie mir selbst zugesandt und die Meldung beim Öffnen aus Outlook einfach mal ignoriert und Daten geändert..... hat geklappt.
ABER!
Ich arbeite in einem Homeoffice über einen VPN-Tunnel. Wenn es jetzt nicht nur daran liegt, dass die VPN-Verbindung durch diese Aktion einen weg hat, dann hat er mir die echte FE, die auf dem Server liegt geschmeidig zerhackt.......
Kriege jetzt andauernd Netzwerk- oder Datenträgerfehler, wenn ich die FE starten möchte.......
Also besser mit Kopien arbeiten :-\
Und besser nicht über VPN: Muss nächste Woche aus dem Büro mal sehen, welhe Verwundeten ich noch am leben halten kann........
Hi Bruno,
Zitat von: 69bruno am August 17, 2012, 15:39:57
und die Meldung beim Öffnen aus Outlook einfach mal ignoriert und Daten geändert..... hat geklappt.
da diese Anwendung von Leuten genutzt werden soll, deren "Schmerzgrenze" für nervende Hinweise anders gelagert ist als bei mir, ist der obige Hinweis noch nicht die von mir erhoffte Lösung.
Zitat von: 69bruno am August 17, 2012, 15:39:57
Also besser mit Kopien arbeiten
Da stimme ich 100%ig zu. Solange noch ein Byte frei ist, sollte man es für ein Backup nutzen. ;D
Harald
Hi
Zitat von: ebs17 am August 17, 2012, 15:23:36
Mit Outlook-Ereignissen kenne ich mich nicht aus
Dann haben wir das als Gemeinsamkeit. ;)
Zitat von: ebs17 am August 17, 2012, 15:23:36
... aber da sollte doch etwas passendes zu finden sein, um ein kleines VB-Script auszuführen oder direkt per VBA (das gibt es auch in Outlook) die Ziel-DB anzusprechen.
wenn das die Lösung ist, dann her damit.
Wobei so ganz klein ist das Skript nicht, da es eine Reihe von api-Aufrufen gibt (u.a. aus einem fremden Programm eine access-Datenbank steuern, in der irgendein beliebiges Formular zum Zeitpunkt des Aufrufs aktiv sein kann unter Berücksichtigung eines Berechtigungssystems).
Harald
Bei der Fernsteuerung (Fernbedienung der GUI) von anderen Datenbanken bin ich sehr kritisch, und Du willst eine ferngesteuerte Anwendung von einer zweiten Seite aus fernsteuern?
Das ist entweder unorganisiert und verwirrt oder sehr komplex genial. Ein Mittelfeld gibt es da meiner Meinung kaum.
Wenn eine Anwendung aber ausgelegt ist für einen Zugriff von außen, hätte sie vermutlich eine Schnittstelle, wo ein "Anruf " entgegen genommen und verarbeitet wird. Frag mich aber nicht wie. Ein eigenes Event wäre vielleicht ein Weg.
Zu modularer Anwendungsentwicklung, die das in etwa trifft, ist von Michael Zimmermann innerhalb der AEK-Downloads (http://www.donkarl.com/Downloads/AEK) etwas zu lesen.
Zu Outlook: Eine Kurzrecherche ergab: Termine und Aufgaben kann man mit einer Erinnerung versehen. Unmittelbar vor dem Anzeigen einer Erinnerung tritt das Reminder-Ereignis ein. Damit hätte man also einen Anstoß, um irgendeine Prozedur aufzurufen. Weiteres liest und erarbeitest Du bitte in der Outlook-VBA-Hilfe.
Oder Du passt Dir so etwas an: Inspector Wrapper (http://www.vboffice.net/sample.html?pub=5&mnu=2&smp=50&cmd=showitem)
Die Suche per Google mit den Stichworten Outlook VBA Ereignisse dürfte weitere Quellen offenbaren.
MfGA
ebs
Hallo,
das Anhängen einer *.mdb an eine Outlook-Nachricht ist aus Sicherheitsgründen gesperrt - richtig.
Umgehen kannst du das zum Einen - wie du schon gemacht hast - in dem du die Datei in ein zip-Format bringst, zum Anderen in dem du die Dateiendung änderst (z.B. *.md_).
Zu Öffnen wäre die Datei dann über den Umweg 'Öffnen mit ...' und Auswahl der MSACCESS.EXE oder durch 'Downloaden' aus der Mail und zurückbenennen.
Das Problem mit dem Schreibschutz entsteht einerseits durchs Zippen andererseits dadurch, dass sich diese Datei als Anhang einer Mail zeigt und dadurch das direkte Öffnen in einem temorären Umfeld stattfindet.
Acc2007 benötigt bereist für das fehler-/meldungsfreie Öffnen 'Vertrauenswürdige Speicherorte' welche durch das temporäre Umfeld nicht gegeben sind.
M.E. wäre die einfache Variante die Datei ungezippt zu versenden und jede Mail mit einem Kurztext zur Handhabung des Anhanges zu versehen.
Auch 'genervte' Benutzer dürften in der Lage sein eine Datei auf ihren Desktop zu speichern, die Endung zu ändern und die DB zu starten.
Wenn du die dann mit einem AutoExec-Eintrag gestaltest sollte deine Verarbeitungroutine ablaufen können.
Auch die von ebs angesprochene Verarbeitung von Outlook-Ereignissen via VBA KANN eine mögliche Lösung bieten.
Allerdings wird es meiner Meinung nach nicht einfach sein viele oder mehrere Empfängerstationen mit dem benötigten Code in den Outlookinstallationen zu 'versorgen'
Hallo Peter,
danke für Deine Antwort.
Zitat von: database am August 18, 2012, 09:34:15
zum Anderen in dem du die Dateiendung änderst (z.B. *.md_).
Werde ich ausprobieren, ob das Öffnen von md_ vielleicht sogar permanent zuweisbar ist.
Zitat von: database am August 18, 2012, 09:34:15
Wenn du die dann mit einem AutoExec-Eintrag
So bereits geschehen.
Zitat von: database am August 18, 2012, 09:34:15
Auch die von ebs angesprochene Verarbeitung von Outlook-Ereignissen via VBA KANN eine mögliche Lösung bieten.
Allerdings wird es meiner Meinung nach nicht einfach sein viele oder mehrere Empfängerstationen mit dem benötigten Code in den Outlookinstallationen zu 'versorgen'
Genau diese Schwierigkeit hatte mich veranlasst, die Logik zum Aufrufen der Datenbank nicht in Outlook, sondern in einer zwischengeschalteten access-Anwendung zu implementieren.
Mal abgesehen, dass ich noch Lichtjahre davon entfernt bin, in Outlook ereignisgesteuerte Programme einzutragen.
Harald
Hallo ebs,
danke für die Vorschläge.
Zitat von: ebs17 am August 17, 2012, 23:38:28
Die Suche per Google mit den Stichworten Outlook VBA Ereignisse dürfte weitere Quellen offenbaren.
Bei deren Studium, hatte ich allerdings den Eindruck, dass ich auf einem anderen Planeten gelandet bin.
Harald
Hallo Harald,
Zitatob das Öffnen von md_ vielleicht sogar permanent zuweisbar ist.
Davon würde ich Abstand nehmen.
Was wenn ein Scherzbold eine wichtige *.doc als *.md_ versendet... (Bitte frag nicht wieso das jemand machen sollte ... :D)
Zitat von: database am August 18, 2012, 13:55:27
Hallo Harald,
Zitatob das Öffnen von md_ vielleicht sogar permanent zuweisbar ist.
Davon würde ich Abstand nehmen.
Was wenn ein Scherzbold eine wichtige *.doc als *.md_ versendet... (Bitte frag nicht wieso das jemand machen sollte ... :D)
Hi Peter,
ok, ich war selber solch ein Scherzbold und habe dabei die im Bild sichtbare Meldung bekommen.
Sieht noch annehmbar aus.
Jetzt bin ich erst einmal neugierig, ob ich in der Firma überhaupt die Rechte habe, solch eine Zuweisung zu machen.
Harald
[Anhang gelöscht durch Administrator]
Hallo Harald,
da bin ich nochmal...
Kennst du diesen Link?
http://msdn.microsoft.com/de-de/library/office/ee814736.aspx (http://msdn.microsoft.com/de-de/library/office/ee814736.aspx)
Darin befindet sich am Ende eine weiterführende Linkliste in der u.A. folgender Link zu finden ist:
VBOffice VBA Beispiele (http://www.vboffice.net/sample.html?lang=de&cmd=list&mnu=2)
und darin wiederum wird eine Möglichkeit zum Öffenen einer Exel-Datei gezeigt
Excel-Datei aus Outlook öffnen (http://www.vboffice.net/sample.html?lang=de&mnu=2&smp=84&cmd=showitem)
Zitat von: database am August 18, 2012, 14:19:59
und darin wiederum wird eine Möglichkeit zum Öffenen einer Exel-Datei gezeigt
http://www.vboffice.net/sample.html?lang=de&mnu=2&smp=84&cmd=showitem (http://www.vboffice.net/sample.html?lang=de&mnu=2&smp=84&cmd=showitem)
Hi Peter,
die ersten beiden hatte ich heute nach dem Hinweis von ebs ergoogelt, den dritten kannte ich noch nicht.
Soll das dann darauf hinauslaufen, dass ich in Excel die vba-Routinen einbaue, um die eigentliche Datenbank zu öffnen?
Wobei dann aber wieder das Problem ist, wie bringe ich die Zeilen auf verschiedene outlook-Anwendungen. Aus outlook konnte ich heute per vba auch die gewünschte "Zwischen"-access-Datenbank öffnen, aber auch hier gilt die Frage, wie verteile ich das, ohne an alle Rechner zu gehen.
Harald
Nein,
du musst dir ein passendes Ereignis für deine ERHALTENE Nachricht suchen und für dieses Ereignis definierst du IN OUTLOOK die Routine um die *.mdb zu starten.
Der Link zum Öffnen der Excel-Datei war nur als Beispiel gedacht um dir zu zeigen, dass eine Datei ausserhalb von Outlook per VBA aus Outlook heraus gestartet werden kann.
So wäre es vielleicht möglich, die Benutzer vorab mit der *.mdb zu versorgen um diese an einem definierten Speicherort abzulegen.
Aus der Mail heraus wird die Datei dann beim Eintreten des definierten Ereignisses die Datei geöffnet.
VBA-Code für Outlook kann nicht einfach herumgereicht werden, da die Programmierumgebung nicht dazu ausgelegt ist.
Code kann auf einem Rechner erstellt werden, muss dann aber EXPORTIERT werden und auf den anderen relevanten Maschinen IMPORTIERT werden um - in eben diesen anderen Outlook-Intallationen - verwendbar zu sein.
In dem ersten Link von oben findet sich auch eine Erklärung dazu unter 'Verteilen des Codes'
Bezüglich Codeverteilung könnte auch das ein Hilfsmittel sein:
Rund um die VB-IDE (http://www.team-moeller.de/?Tipps_und_Tricks:Rund_um_die_VB-IDE)
Somit solltest Du ein ausführbares Script erstellen können, was dann ein Benutzer nur noch zu starten hätte zzgl. der Bestätigung einiger Sicherheitsabfragen (die ich gerade bei Outlook erwarten würde).
MfGA
ebs
Hi ebs,
danke für den Link: ist viel Interessantes dabei. :)
Harald
Wie komt denn eigentlich der Kalendereintrag zustande ?
Verschickst Du Terminanfragen ?
Hi Bruno,
wenn in der Datenbank ein neuer Datensatz erfaßt wurde, trägt das access-VBA einen Kalendereintrag mit Erinnerungsfunktion in Outlook ein.
Harald
Ok, wenn es da jetzt noch jemand gibt, der sich mit Hyperlinks gut auskennt, dann könnte doch in dem Eintrag auch automatisch ein Hyperlink eingesetzt werden, der auf die fe.mdb verweist. Bei unserer Netzwelt klappt das. Das Problem: Eine andere nervende Meldung, nämlich "wollen Sie öffnen oder speichern" erscheint. Und die kriege ich jetzt auch nicht ausgeschaltet......
Ups, ruder ruder ruder
zurück,
Bei einem Termineintrag funktioniert es seltsamerweise nicht. Wenn ich eine Besprechungsanfrage versende, dann kann ich einen Hyperlink einsetzen. Aber nicht bei einem Termineintrag.......... ???
Hi Bruno,
den Weg über einen Hyperlink zu gehen, habe ich bewusst nicht versucht, da ich dann die "Zwischen"-Datenbank, in der die Logik enthalten ist, immer in einem bestimmten Ordner vorhalten müßte. Löscht dort jemand die Hyperlink-Datei, funktioniert der Datenbank-Aufruf nicht mehr.
In der "Zwischen"-Datenbank wird überprüft: ist die gewünschte Datenbank bereits geöffnet: wenn ja, dann bringe sie in den Vordergrund, maximiere sie und rufe dort eine geeignete Procedure auf, um den gewünschten Datensatz zu selektieren, wenn nein, dann rufe den Anmeldebereich auf, in dem Name + Kennwort einzutragen sind und selektiere dann den Datensatz.
Harald
Wobei man ja aber eine kleine Zwischendatenbank individuell je Hyperlink oder User anlegen könnte, die dann aufgerufen wird....
aber ok, dann erst mal weiter ohne Hyperlinks......
ich probiere......
Und da fällt mir noch ein, hast Du die Möglichkeit, ein öffentliches Postfach anzulegen, oder sind die User überfordert mit dessen Einbindung ??
Hi Bruno,
Zitat von: 69bruno am August 20, 2012, 10:30:18
öffentliches Postfach anzulegen, oder sind die User überfordert mit dessen Einbindung ??
Sorry, kann ich nicht beanworten, da ich das noch nicht ausprobiert habe: ist nicht als Teil des Workflows vorgesehen.
Mir reicht es aus, wenn der Ersteller eines Datensatzes sich automatisch einen Kalendereintrag anlegt, damit er am Stichtag erinnert wird und per Mausklick zum damals angelegten Datensatz gelangen kann.
Harald
Hallo Peter,
Zitat von: bahasu am August 18, 2012, 10:15:26
Werde ich ausprobieren, ob das Öffnen von md_ vielleicht sogar permanent zuweisbar ist.
Das permanente Zuweisen funktioniert!
Ist schön :D und zugleich erschreckend :o, wie leicht das Sicherheitssystem zu umgehen ist.
Harald
Also.....
das hier:
Private Sub Application_Reminder(ByVal Item As Object)
If Item.Subject = "Test" Then
MsgBox ("Sie haben einen aktuelen Termineintrag zur Bearbeitung der Supernova!" & Chr(10) & Chr(13) & "Sie werden direkt zu dem zu bearbeitenden Datensatz geleitet!" & Chr(10) & Chr(13) & " Viele Grüße, Ihr bahasu")
Shell ("C:\Programme\Microsoft Office\Office11\MSACCESS.exe K:\DATENBANKEN\Krank.mdb")
End If
End Sub
In Microsoft Office Outlook Objekte, Diese OutlookSitzung
implementiert
Sorgt dafür, dass Du eine MDB öffnest, wenn der Reminder sich öffnet und im Betreff "Test" steht.
Hilft Dir das ?
Klar, jetzt musst Du noch irgendiwe die Verweise auf den Datensatz übergeben. Aber da ich nicht weiß, wo du die hast, konnte ich mir auf die Schnelle nichts dazu überlegen.
Außerdem fehlt natürlich auch noch jegliche Fehlerbehandlung......und die Lösung für die Verteilung des Codes......
Wobei ich mich grade frage, ob der Admin nicht serverseitig den Code den jeweiligen Postfächern hinzufügen könnte......Müsste ich unsere admins mal fragen...
Hi Bruno,
danke für den Hinweis mit "Application_Reminder". :) Werde damit Versuche machen, um mich in die outlook-VBA-Welt reinzutasten.
Den Aufruf in der Art "C:\Programme\Microsoft Office\Office11\MSACCESS.exe" habe ich nicht vorgesehen, auch wenn er Vorteile bei der Parameter-Übergabe hat.
Da verschiedene Verzeichnisse (u.a. wegen unterschiedlicher Installationen und wegen unterschiedlicher access-Versionen) in Frage kommen, habe ich keinen direkten access-Aufruf mit Übergabe des Frontends vorgesehen. Zusätzlich muss/soll auch überprüft werden, ob der Benutzer eine aktuelle Frontend-Version hat bzw. ob diese ggf. durch eine neue zu ersetzen ist. Diese Überprüfungen laufen extern ab.
Auch müsste noch gelöst werden, wie bei den obigen Zeilen die id vom aufzurufenden Datensatz eingebaut wird. Es müsste also einen dynamischen Aufruf geben, der auf eine aktualiserbare Variable zurückgreift.
@ all:
Danke für die Hinweise und Tipps.
Da der Ablauf mittlerweile wie geplant läuft, setze ich den Status auf grünen Haken. :D
Harald
Na ja, wenn Du den Eintrag in Outlook reinsetzt, dann kannst Du ja im Betreff oder im Body die ID mitgeben und später mit der left oder right funktion wieder auslesen.
Für das aktive Anklicken bin ich auf der Spur, kriege da gerade Nachhilfe...... ;D
Und hier -Tata-:
:o
Dim myOlApp As New Outlook.Application
Public WithEvents myOlInspectors As Outlook.Inspectors
Private Sub Application_Startup()
Set myOlInspectors = myOlApp.Inspectors
End Sub
Private Sub myOlInspectors_NewInspector(ByVal Inspector As Outlook.Inspector)
Set newitem = Inspector.CurrentItem
If newitem.Subject = "Test" Then
MsgBox "Jetzt geht es auch bei aktivem klicken auf den Termin!"
End If
End Sub
::)
Das in DieseOutlookSitzung, Makrosicherheit höchstens auf "mittel", nach dem (Neu-)Start Makros aktiviert und schon kann man VBA wurschteln, wenn man einen Termin mit Betreff "Test" anklickt.
Hi 96bruno,
danke.
Harald