AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Termineintrag aus Outlook auslesen

Offene Frage von "MrChey"
Ein Thema von Susanne · begonnen am 5. Aug 2004 · letzter Beitrag vom 19. Okt 2016
Antwort Antwort
Seite 1 von 3  1 23   
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#1

Termineintrag aus Outlook auslesen

  Alt 5. Aug 2004, 08:51
Hallo,

ich möchte von meinem Programm aus auf Outlook zugreifen und dort alle Termin für den heutigen Tag jeweils auslesen. An jedem Termineintrag ist eine Datei angehängt, an die müsste ich auch kommen.

Wie ich einen Eintrag in Outlook erzeugen kann weiss ich, aber wie kann ich ihn wieder auslesen?
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Domo Sokrat
Domo Sokrat

Registriert seit: 14. Mai 2003
Ort: Wehrheim / Ts.
235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Termineintrag aus Outlook auslesen

  Alt 5. Aug 2004, 12:14
Hallo Susanne,

ich bin mir nicht sicher, ob ich Dir bei den Sachen mit dem Anhang weiterhelfen kann, aber generell ist das Auslesen von FolderItems unter Outlook immer die gleichen Strickart. Ich hab' das Beispiel aus dem Swiss Delphi Center zum Thema "Outlook Kontakte auslesen" mal ein wenig umgestrickt. Ich hab's nicht testen können, da ich hier kein Outlook habe. Das mit dem Datum ist nur 'ne Vermutung, müsste aber stimmen:

Delphi-Quellcode:
uses ComObj;

procedure TForm1.Button1Click(Sender: TObject);
const
  olFolderCalendar = $00000009;
var
  outlook, NameSpace, Termine, Termin: OleVariant;
  i: Integer;
begin
  outlook := CreateOleObject('Outlook.Application');
  NameSpace := outlook.GetNameSpace('MAPI');

  Termine := NameSpace.GetDefaultFolder(olFolderCalendar);
  for i := 1 to Termine.Items.Count do
  begin
    Termin := Termine.Items.Item(i);
    // Titel des Termins und Startdatum mit Zeit auslesen:
    ShowMessage(Termin.Subject + '<Begin: ' + DateTimeToStr (Termin.Start) + ' >');
  end;

  Outlook := UnAssigned;
end;

{ gefundene Item-Properties:
  Subject                    (alphanumerisch)
  Body                      (alphanumerisch)
  Start                      (Datum/Uhrzeit)
  Duration                  (numerisch)
  End                        (Datum/Uhrzeit)
  Location                  (alphanumerisch)
  ReminderMinutesBeforeStart (Integer)
  ReminderSet                (boole'sch)
  Categories                (alphanumerisch)
  BusyStatus                (numerisch)
        (olFree        = frei),
        olTentative  = unter Vorbehalt),
        olBusy        = gebucht),
        olOutOfOffice = abwesend))
  Categories                (alphanumerisch)
  CreationTime              (alphanumerisch)
  ReminderPlaySound          (boole'sch)
}
Ich hoffe, das hilft Dir ein wenig weiter, auch wenn ich's nicht testen konnte...
Michael Seeger
Vergesst nicht: Es wird überall nur mit Wasser gekocht
ZEOSLib - Admin-Team
ZeosLib-Forum
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Termineintrag aus Outlook auslesen

  Alt 5. Aug 2004, 14:04
es hat geholfen, auf dem richtigen Weg war ich dann doch schon so langsam. Ich hab da noch etwa gefunden wie 'Filter setzen'

TerminItem:= Termine.Items.Restrict('[START] = ''05.08.2004''');

Aber irgendwie bekomme ich dann nur noch null ergebnisse und wenn ich das bisherige lasse, dann zeigt er mir jeden Eintrag an, auch die vom nächsten tag und ich möchte nur die vom heutigen Tag.
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Domo Sokrat
Domo Sokrat

Registriert seit: 14. Mai 2003
Ort: Wehrheim / Ts.
235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Termineintrag aus Outlook auslesen

  Alt 5. Aug 2004, 14:40
Also: In VB machen die das wie folgt (hab's mal nach Object Pascal umgesetzt - ähnelt Deinem Ansatz):

Delphi-Quellcode:
// benötigte zusätzliche Variable (Resultset für die
// Filterung
Var GefilterteTermine: OleVariant;

   // Filter setzen: ergibt [Start] = '05.08.2004'
   // (Suchstring haben die in einfache Hochkommas
   // gesetzt...)
   sFilter := '[Start] = ''05.08.2004''';

   // und dann die Filterfunktion auf das zu filternde
   // Termin-Resultset anwenden (hast Du ja entsprechend
   // umgesetzt - müsste laufen)
   GefilterteTermine := Termine.Items.Restrict(sFilter);

   // Anschließend müssten in GefilterteTermine die
   // gewünschten Dates drin stehen:
   Termin := GefilterteTermine.Items.Item(i);
Mit dem Datumsformat bin ich mir nicht so ganz sicher. Lass Dir doch zum Test mal einen Propertywert von "Start" anzeigen, um zu sehen, wie das Datum angegeben werden muss. Auf jeden Fall aber würd' ich den Filterwert mal in einfach Hochkommas setzen.

Wie schon vorher: Konnte leider nichts Testen. Ich verlass mich da mal blind auf die VB-Cracks ...
Michael Seeger
Vergesst nicht: Es wird überall nur mit Wasser gekocht
ZEOSLib - Admin-Team
ZeosLib-Forum
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Termineintrag aus Outlook auslesen

  Alt 5. Aug 2004, 15:17
nee, funktioniert nicht, an folgender Stelle bekomme ich dann eine Fehlermeldung, dass das Automatisierungsobject die Funktion Items nciht unterstützt.

Zitat:
Termin := GefilterteTermine.Items.Item(i);
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Domo Sokrat
Domo Sokrat

Registriert seit: 14. Mai 2003
Ort: Wehrheim / Ts.
235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Termineintrag aus Outlook auslesen

  Alt 6. Aug 2004, 08:19
Guten Morgen!

Ich hab's mir nochmal angesehen. Vielleicht ist hier das "Items" zu viel und es müsste statt

Termin := GefilterteTermine.Items.Item(i); so heißen:

Termin := GefilterteTermine.Item(i); weil das Ergebnis von "Restrict()" ein Items-Objekt zurückgibt ??? *mutmaß* GefilterteTermine ist ja ein OLEVariant und man bekommt nicht direkt mit, welcher Objekttyp "drinsteckt".

Probier's bitte mal aus. Ansonsten muss ich mir wirklich mal ein System mit Outlook vornehmen und die Sache mal ausprobieren (kann aber etwas dauern). Das Ganze Interessiert mich jetzt nämlich selber und ich hasse Trockenschwimmen!
Michael Seeger
Vergesst nicht: Es wird überall nur mit Wasser gekocht
ZEOSLib - Admin-Team
ZeosLib-Forum
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#7

Re: Termineintrag aus Outlook auslesen

  Alt 6. Aug 2004, 09:56
stimmt, das items war zu viel!

jetzt versuche ich immernoch, an den blöden Anhang des Termins zu kommen. ich habe jetzt einfach nur mal versucht, herauszubekommen, wieviel Anhänge er denn findet:
Am Ende möchte ich dann den Pfad mit Dateinamen haben, ich hatte es auch schon versucht mit SaveToFile, aber da sagte er dann, dass die MEthode nicht unterstützt wird.

Code:
for i := 1 to gefilterteTermine.Count do
            begin
               Termin := GefilterteTermine.Item(i);
               //Titel des Termins und Startdatum mit Zeit auslesen:
               ShowMessage(Termin.Subject + ' '+ DateToStr(Termin.Start) );
               //Anhang extrahieren oder den Pfad + Datei
               x := Termin.Attachments;
            end;
Fehlermeldung: eVariantTypeCastError: Variante des Typs Dispatch konnte nicht in Typ Integer konvertiert werden.

Was muss ich denn nun machen?
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Domo Sokrat
Domo Sokrat

Registriert seit: 14. Mai 2003
Ort: Wehrheim / Ts.
235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Termineintrag aus Outlook auslesen

  Alt 6. Aug 2004, 11:00
Hallo mal wieder...

Du müsstest eigentlich für ein Attachment-Objekt wieder eine Variable vom Typ OLEVariant deklarieren und dann, so wie Du schon richtig vermutet hast, diesem das gewünschte Attachment zuweisen. Das würde dan so aussehen (Portiert aus VB):

Var Anhang: OLEVariant; Der Zugriff auf das erste Attachment über die Angabe eines Index(!) -> gibt bestimmt Probleme, wenn der Termin keine Attachments hat, also vielleicht vorher über Termin.Attachments.Count erst die Anzahl prüfen...

Anhang := Termin.Attachments(1); Jetzt müssten in Anhang die Daten des ersten Attachments stehen und Du müsstest so auf den FileName zugreifen können. Einen Pfadnamen gibt's hier denke ich nicht.

sFileName := Anhang.FileName; Speichern kannst Du den Anhang (z. B. in "C:\Temp") wie folgt:

Delphi-Quellcode:
sFileName := 'C:\Temp\' + sFileName;
Anhang.SaveAsFile (sFileName);
Ich hab' noch eine wunderbare Modelldoku (von MS) gefunden:
Microsoft Outlook Objects

Hier noch ein Link (ist zwar alles VB/VBA aber die Umsetzung dürfte nicht sooo schwer sein ):
Outlook 2000 VBA Programmers Reference

Auf dieser Seite kannst Du auch 'mal stöbern:
www.outlookcode.com

Ich hoffe, das Alles hilft Dir weiter ...
Michael Seeger
Vergesst nicht: Es wird überall nur mit Wasser gekocht
ZEOSLib - Admin-Team
ZeosLib-Forum
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#9

Re: Termineintrag aus Outlook auslesen

  Alt 6. Aug 2004, 11:40
Zitat:
Anhang := Termin.Attachments(1);
hier bekomme ich schon EoleSysError
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Domo Sokrat
Domo Sokrat

Registriert seit: 14. Mai 2003
Ort: Wehrheim / Ts.
235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Termineintrag aus Outlook auslesen

  Alt 6. Aug 2004, 12:06
Hi!

Probier das mal:

Anhang := Termin.Attachments.Item(1); Wenn's klappt bin ich zufrieden . Ansonsten muss ich hier meine Waffen strecken. Sorry.
Michael Seeger
Vergesst nicht: Es wird überall nur mit Wasser gekocht
ZEOSLib - Admin-Team
ZeosLib-Forum
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf