Aus XBase Termine in Outlook anlegen

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Aus XBase Termine in Outlook anlegen

Beitrag von andreas »

Hi,

hat vielleicht schon jemand mit Outlook gearbeitet und aus dem XBase dort die Termine angelegt bzw. verwaltet?
Geht so was überhaupt?
Gibt es vielleicht eine Beschreibung der Befehle für Outlook-ActiveX?
Gruß,

Andreas
VIP der XUG Osnabrück
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Andreas,

hast du dir das Alaska-Beispiel unter source\samples\activex\olimport\
contactnavigator.prg mal angesehen. Dort gibt es auch eine outlook.ch.

Laut meinem Buch muss man einen Trick benutzten um Outlook sichtbar
zu machen, nach dem man das Outlookobjekt mit

oOutlook := CreateObject("Outlook.Application")

angelegt hat.

Wo man die Befehle bei Microsoft findet habe ich leider noch nicht heraus-
gefunden.

Da ich aus Sicherheitsgründen kein Outlook im Einsatz habe, kann ich
leider nichts testen.

Gruß
Alfred
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Beitrag von Wolfgang Ciriack »

Hallo Andreas,
ich habe bisher nur den Export der Kontakte nach Outlook implementiert, dazu habe ich den Com Assistant http://www.devcomponents.com/comassistant/ benutzt, um mir von Outlook eine HTML-Hilfedatei zu den Objekten, Methoden und Properties zu erstellen. Ansonsten gibt auch die VBAOL11.CHM eine gute Übersicht über diese Infos.
Viele Grüße
Wolfgang
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Andreas,

vielleicht hilft dir dieser Artikel weiter:

http://support.microsoft.com/kb/506618/de

Gruß
Alfred
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hallo,

hierzu eine Frage. Was ist bei Outlook Express ?

Funkt. dieser aufruf dann auch ??
oOutlook := CreateObject("Outlook.Application")
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

OE hat kein ActiveX. Wenn das überhaupt geht muß der Weg dort ein anderer sein.

Jan
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Wolfgang Ciriack hat geschrieben:Hallo Andreas,
ich habe bisher nur den Export der Kontakte nach Outlook implementiert, dazu habe ich den Com Assistant http://www.devcomponents.com/comassistant/ benutzt, um mir von Outlook eine HTML-Hilfedatei zu den Objekten, Methoden und Properties zu erstellen. Ansonsten gibt auch die VBAOL11.CHM eine gute Übersicht über diese Infos.
Hallo Wolfgang,

danke für den Hinweis auf die CHM-Datei. Ich wusste garnicht, dass da so was vorhanden und sogar noch auf deutsch ist.
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Jan hat geschrieben:OE hat kein ActiveX. Wenn das überhaupt geht muß der Weg dort ein anderer sein.

Jan
Dafür gibts es Mapi-Klasse, die frei verfügbar ist. Wenn ich mich nicht teusche, kommt diese von Phil.
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Beitrag von Muecke »

Hallo Andreas,

ich bin dran an einem Terminkalender zu Programmieren. Warum?

Es ist mir zu viel, wenn jedes Mal Microsoft mit neuer Version kommt und nichts ist mehr kompatibel ist. zuerst 2000,2003 und jetzt 2007.
Das gleiche ist ja auch ein Thema mit Excel.

Vielleicht kann ich dir Helfen?

Gruss Thomas
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Muecke hat geschrieben:Hallo Andreas,

ich bin dran an einem Terminkalender zu Programmieren. Warum?

Es ist mir zu viel, wenn jedes Mal Microsoft mit neuer Version kommt und nichts ist mehr kompatibel ist. zuerst 2000,2003 und jetzt 2007.
Das gleiche ist ja auch ein Thema mit Excel.

Vielleicht kann ich dir Helfen?

Gruss Thomas
Hallo Thomas,

ich möchte die Termine, die in meinem Programm eingetragen werden, in vorhandenes Outlook für die Erinnerung eintragen, ohne ein neues Rad zu erfinden. Es ist sicher interessant, so ein Kalender in XBase zu sehen, da aber bei uns demnächst immer mit Outlook gearbeitet werden soll und da sowieso alle Termine gepflegt werden, wäre es besser, dass alle Erinnerungen von einem Programm kommen.
Kommst zu DevCon? Es wäre Interessant deine Lösung zu sehen.
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Beitrag von Muecke »

Ja bin bei DevCon dabei.

Gruss Thomas
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

Hallo Andreas,

auch ich habe jetzt das Problem, Termine über die Xbase++ Anwendung in Outlook eintragen zu müssen.
Wenn Du es gelöst hast, könntest Du mir ein paar Tips geben ?

Klaus
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Koverhage hat geschrieben:Hallo Andreas,

auch ich habe jetzt das Problem, Termine über die Xbase++ Anwendung in Outlook eintragen zu müssen.
Wenn Du es gelöst hast, könntest Du mir ein paar Tips geben ?

Klaus
Hallo Klaus,

hier ist mein Testcode:

Code: Alles auswählen

**********************************************
** Klasse für die Arbeit mit Microsoft Outlook
**********************************************
** Erstellt: Andreas Engler
** Datum: 26.09.2007
**********************************************

#include "Gra.ch"
#include "Xbp.ch"
#include "Common.ch"
#include "Appevent.ch"
#include "Font.ch"
#include "ODBCDBE.ch"
#include "SQLCMD.ch"
**#INCLUDE "bilder.CH"
#include "Appbrow.ch"
#include "Service.ch"
#include "Fileio.ch"
#include "asinet.ch"
#include "Thread.ch"

#INCLUDE "Outlook.CH"

#pragma library( "ascom10.lib" )

#DEFINE CRLF	CHR(13)+CHR(10)

**Konstanten von Outlook

*Item-Type
*#DEFINE olAppointmentItem  1
*#DEFINE olContactItem  2
*#DEFINE olDistributionListItem  7
*#DEFINE olJournalItem  4
*#DEFINE olMailItem  0
*#DEFINE olNoteItem  5
*#DEFINE olPostItem  6
*#DEFINE olTaskItem  3



CLASS Outlook
	EXPORTED:
	METHOD Init
	METHOD Destroy

	METHOD SetTermin                             //einen neuen Termin im aktuellen Kalender anlegen
	METHOD GetMsgTermine                         //Liste der Termine als Messagebox ausgeben

	Var oOutlook                                 //Outlook-Objekt
	Var lVerbunden                               //Steht die Verbindung zu Outlook

ENDCLASS



METHOD Outlook:Init()

	::lVerbunden := .f.

	::oOutlook := CreateObject( "Outlook.Application" )

	IF NIL == ::oOutlook
		// Outlook.Application kann nicht erzeugt werden.
		msgbox( "Fehler: "+alltrim(var2char(ComLastError()))+CRLF;
			+"Beschreibung:"+CRLF;
			+alltrim(var2char(ComLastMessage())),"Fehler")
	else
		::lVerbunden := .t.
	ENDIF

RETURN self


METHOD Outlook:Destroy()

	IF ::lVerbunden
		::oOutlook:destroy()
	ENDIF

	::oOutlook := NIL
	::lVerbunden := NIL

RETURN self


**einen neuen Termin im aktuellen Kalender anlegen
**Parameter:
**cBetreff - Betreff
**cNotiz - Notizen
**cOrt - Ort
**dDatum - Termindatum
**cZeit - Terminzeit (hh:mm:ss)
**nDauer - Dauer des Termines in Minuten
**nErinZeit - Erinnerung vor dem Termin in Minuten
METHOD SetTermin( cBetreff, cNotiz, cOrt, dDatum, cZeit, nDauer, nErinZeit )
	local oTermin
	local lOk := .f.

	Default cBetreff to "Termin", cNotiz to "", dDatum to date(),;
		cZeit to time(), cOrt to "", nDauer to 0,;
		nErinZeit to 60

	IF ::lVerbunden

		oTermin := ::oOutlook:CreateItem( olAppointmentItem )
		oTermin:Subject := cBetreff               //Betreff
		oTermin:Location := cOrt                  //Ort einstellen
		oTermin:Start := alltrim(str(year(dDatum)))+"-"+strzero(month(dDatum),2)+"-"+strzero(day(dDatum),2)+" "+cZeit //Startdatum und Zeit einstellen
		oTermin:Duration := nDauer                //Dauer des Termins einstellen
		oTermin:ReminderSet := .t.                //Errinerung aktivieren
		oTermin:ReminderMinutesBeforeStart = nErinZeit //Erinnerung vor dem Termin in Minuten
		*oTermin:ReminderTime := dDatum           //Datum und Zeit, zu denen die Erinnerung erfolgen soll
		oTermin:Body := cNotiz
		oTermin:save()                            //Termin speichern
		*oTermin:Display()                        //Termin am Display anzeigen

		lOk := .t.

	ENDIF

RETURN lOk

**Liste der Termine als Messagebox ausgeben
METHOD GetMsgTermine()
	local nCount := 0
	local cMsg := ""
	local i := 0

	IF ::lVerbunden

		nCount := ::oOutlook:Reminders:Count

		IF nCount > 0

			FOR i := 1 TO nCount
				cMsg += ::oOutlook:Reminders:Item(i):Caption  + CRLF // + " Termin: " + alltrim(var2char(::oOutlook:Reminders:Item(i):OriginalReminderDate))
			NEXT

			msgbox("Anzahl der Termine: "+var2char(nCount)+CRLF;
				+cMsg,"Info")

		else
			msgbox("Keine Termine vorhanden!","Info")
		ENDIF

	ENDIF


RETURN self
und die passende Main zum Testen:

Code: Alles auswählen

PROCEDURE Main()
	local oOutlook

	? "Test der Outlook-Klasse"

	oOutlook := Outlook():New()
	IF oOutlook:lVerbunden
	  ? "Verbunden mit Outlook"

	  *? var2char(oOutlook)

	  *oOutlook:GetMsgTermine()
	  oOutlook:SetTermin( "Test1", "Test der Termine", "Ort", date()+1, "13:10:00", 15 )
	  oOutlook:GetMsgTermine()
	ENDIF
	oOutlook:destroy()
	wait
	quit

RETURN
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

Hallo Andreas,

danke werde das mal probieren.

Klaus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Aus XBase Termine in Outlook anlegen

Beitrag von AUGE_OHR »

hi,

ich sehe beim "stöbern" gerade diesen Thread und ich denke, wenn es noch interessant ist,
das es noch eine "elegantere" Lösung gibt : Codejock Calender activeX.

dabei geht es nicht um den Calender selbst, der ja 1:1 Outlook entspricht, sondern um die MAPI
"Verbindung". Daten die man in Outlook einträgt werden "sofort" im Codejock Calender angezeigt
um umgekehrt ebenfalls.

Nun "füttere" ich den Codejock Calender aus einer DBF und umgekehrt "könnte" man Outlook
auch "auslesen" und in eine DBF schreiben.

"könnte" weil die MAPI "Erkenntnisse" eigentlich ein "Nebenprodukt" bei der Entwicklung von
XCodejock / HX_Class war und nicht weiter verfolgt wurde ... aber der Code existiert.

für Express++ User bitte an Roger wenden und nach der XCodejock Calender MAPI von Chriss
fragen (Demo1 oder Demo2), die HX_Demo könnt ihr von mir haben.

... ich bin mir nicht sicher, aber ich "denke" ich hätte sogar die "Kontakte" über die MAPI
"Verbindung" bekommen können ...
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Aus XBase Termine in Outlook anlegen

Beitrag von AUGE_OHR »

hi,

ich habe mich doch mal daran gemacht es mit Xbase++ und MAPI zu versuchen. Hier nun das (Teil) Ergebniss.
OLCAL.ZIP
benötigt v1.9.355 SL1 !!!
Ownerdraw MultiCell MAPI / DBF Calender
(362.11 KiB) 384-mal heruntergeladen
leider benötigt die activeX Schnittstelle pro "Call" ca. 0.0191 Sec. was sich am Aufbau bemerkbar macht.

Wenn man nun die Outlook Calendar Daten per MAPI "ausliest" in eine DBF
OL2DBF.zip
konvertiert Outlook 2003/2007/2010 Calender Daten per MAPI nach FOXCDX (COMIX)
(50.62 KiB) 397-mal heruntergeladen
und OlCal.EXE mit der Option DBF startet sieht die Sache schon ganz anders aus.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Aus XBase Termine in Outlook anlegen

Beitrag von AUGE_OHR »

da ja doch einige Interesse haben hier nun die "beta" 0.51
OLCAL051.ZIP
(1.14 MiB) 367-mal heruntergeladen
man kann in der Demo bei "DBF" keine Änderungen vornehmen ( Save ) ... es gibt noch keine Method dafür ;)

was aber nun funktioniert ist die Day / Week / Month Umschaltung sowie die 24Std/12Std bei Day / Week.
bei einer 12Std Anzeige wird eine "doppelte" Höhe verwendet die "Scrollbar" ist.

die 1st Zeile enthält immer SUBJECT
wenn weiter Zeilen zur Verfügung stehen kommt in der 2nd Zeile LOCATION
ab Zeile 3 kommt dann das Memo BODY ( nur in der DBF Version )

bei einer 12Std Anzeige wird innerhalb einer Cell 2 Zeilen angezeigt.

Das Synchronisieren der DBF kann man nun auch aus der Anwendung
( das alte Tool OL2DBF.EXE http://www.xbaseforum.de/viewtopic.php? ... 6&start=15 funktioniert auch noch )

zur Steigerung der Geschwindigkeit bei MAPI habe ich ein Array-Cache eingebaut ;)

Kommentare und Rückmeldungen erwünscht.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Aus XBase Termine in Outlook anlegen

Beitrag von AUGE_OHR »

moin,

so nun hier die v0.83 mit DragDrop in Days/Week Ansicht

der "Save" Button arbeitet nun in dieser Version wobei Outlook "Pflicht" (!!!) ist
da in der DBF Version auch ein Update per MAPI an Outlook geschickt wird ! ( Neu & Edit )

die Zeitskala ist auf 30min Abstände festgelegt, aber es wird noch nicht überall "validiert". bitte aufpassen ! ( Eingabe Maske )

so nun zum DragDrop :

bei der 24Std Anzeige war es kein Problem, aber bei der 12Std Anzeige muss ich ja evtl. noch scrollen bevor ich das Ziel finde.

wenn man nun also auf einen (vorhandenen) Termin klickt und man die Maustaste ca. 0.5sec ( GetDoubleClickTime() ) "festhält" wandelt sich der Cursor.
An der Spitze des Cursor wird nun in einem Bitmap der Inhalt ( 1st. Zeile = Startzeit ) der "Cell" angezeigt was man nun "Drag(en)" kann.

für das "Drop" muss ich nun "nochmals" auf die gewünschte Ziel Position klicken ! die Cursor Spitze ist dabei entscheidend, nicht das Bitmap !
dies ist notwendig wenn in der 12Std Anzeige das Ziel nicht "sichtbar" ist und man erst "scrollen" muss.

das ganze kann man natürlich hierbei mit ESC abbrechen ;)

!!! Es wird nur eine Msgbox() ausgegeben und nichts verändert !!!
OL_DragDrop.JPG
OL_DragDrop.JPG (7.15 KiB) 11138 mal betrachtet
Im ZIP File findet ihr nun auch eine DLL ... es gibt also auch eine LIB die ich veröffentlichen kann bei Interesse.

todo :
endgültiges "moven" ausführen
Layout Auflösung z.Z. nur auf 1024x768 und 1280x1024 optimiert
Layout Farben "ini"
"suchen" Button ...
"Allday" vorhanden, aber "Geburtstage" kann man in der DBF Version noch nicht aktivieren ( RecurrenceState )
"Reminder" ... noch keine Aktion

weitere Ideen und Vorschläge willkommen

Nachtrag : leider habe ich die MAPI Version mit der DLL nicht geprüft und bekomme wieder die RPC Fehler ... :banghead:
ok hier auf die "schnelle" ein Update v0.83a
Olcal083.zip
v0.83a RPC Probelm bei MAPI Version
(1.26 MiB) 371-mal heruntergeladen
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Aus XBase Termine in Outlook anlegen

Beitrag von AUGE_OHR »

hi,

ich habe einen neuen Thread unter http://www.xbaseforum.de/viewtopic.php?f=41&t=5128 angelegt.
Es handelt sich nun um einen vollständigen Kalender mit MAPI Schnittstelle.
gruss by OHR
Jimmy
Antworten