Announcement

Collapse
No announcement yet.

Zugriff auf Outlook-"Datenbank"

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugriff auf Outlook-"Datenbank"

    HILFE !

    Jetzt hab so seinen tollen Philips Nino (Windows CE ohne Tasten), und der Datenaustausch funktioniert auch super einfach und sicher, aber: Ich schreibe natürlich keine Rechnungen mit Outlook oder Excel, deshalb habe ich meine Kundendaten und -informationen in Paradox-Tabellen. Ich habe auch ein Datenbanksystem (...) für CE, klappt auch supergut, auch mit dem Datenaustauch mit Acces-Datenbanken, aber jedesmal von Paradox relational nach Acces flach konvertieren, und anschließen wieder zurück ? viel zu viel Arbeit. Ich möchte einfach nur beim posten der Paradoxtabelle die outlook Adressdatei gleich mitaktualisieren, aber wo ist sie und welches Format hat die ß Helfen die neuen Office Komponenten von Delphi 5 hier weiter ? Vielen Dank für jeden Tip, Ansatz oder vage Wegbeschreibung.

  • #2
    Hallo,

    in der Tat helfen die neuen Servers-Komponenten von Delphi 5 weiter. Das folgende Beispiel trägt über <b>Automation</b> von Outlook (97) einen neuen Datensatz in die Adressdatei ein. Im Fall der Server-Komponenten von Delphi 5 ist folgendes notwendig: <br>
    1. <b>TOutlookApplication</b> im Formular plazieren - <b>AutoConnect</b> auf TRUE <br>
    2. <b>TContactItem</b> im Formular plazieren - <b>AutoConnect</b> auf FALSE<br>
    3. Erst zur Laufzeit (d.h. wenn TOutlookApplication bereits "lebt"), darf die TContactItem-Instanz aktiviert werden. Ich verwende im folgenden Beispiel dafür die Methode <b>ConnectTo</b>. <br>
    4. Über die TContactItem-Methode <b>Save</b> wird der neue Eintrag für die Outlook-Kontakte abgespeichert.

    <pre>
    unit D5Outlook97_Variante2Frm;
    interface
    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,OleServer, Outlook8, StdCtrls;

    type
    TForm1 = class(TForm)
    OutlookApplication1: TOutlookApplication;
    ButtonInsert: TButton;
    ContactItem1: TContactItem;
    procedure ButtonInsertClick(Sender: TObject);
    private
    { Private-Deklarationen }
    public
    { Public-Deklarationen }
    end;
    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    procedure TForm1.ButtonInsertClick(Sender: TObject);
    begin
    ContactItem1.ConnectTo(OutlookApplication1.CreateI tem(olContactItem) as _DContactItem);
    ContactItem1.FirstName := 'Manfred';
    ContactItem1.LastName := 'Mustermann';
    ContactItem1.BusinessTelephoneNumber := '12345';
    ContactItem1.HomeAddressCity := 'Irgendwo';
    ContactItem1.HomeAddressPostalCode := '12345';
    ContactItem1.BusinessTelephoneNumber := '(030) 12345';
    ContactItem1.Save;
    end;
    end.
    </pre&gt

    Comment


    • #3
      Toll, Andreas...
      aber gibts da nicht einen direkten Weg ohne D5 ? Schließlich muß ich noch etwas sparen auf das Große Update auf C/S... Kann man nicht direkt in die Outlook-Dateien schreiben ???

      Danke, M. Emmrich <[email protected]&gt

      Comment


      • #4
        Hallo,

        ein Zugriff über Automation auf Outlook ist mit jeder Delphi-Version (3-5; Standard-Enterprise) möglich. Da mit Delphi 3 oder 4 die neuen Servers-Komponenten nicht zur Verfügung stehen, muss man nur direkt auf die Interfaces von Outlook zugreifen. Beim folgenden Beispiel wird sogar auf das Importieren der Typbibliothek verzichtet:
        <pre>
        uses ComObj;

        const
        olFolderContacts = $0000000A;

        procedure TForm1.ButtonInsertViaDispInterfaceClick(Sender: TObject);
        var
        aOutlookApp : OleVariant;
        aNameSpace : OleVariant;
        aFolder : OleVariant;
        aContactItem : OleVariant;
        begin
        aOutlookApp := CreateOleObject('Outlook.Application');
        aNameSpace := aOutlookApp.GetNameSpace('MAPI');
        aFolder := aNameSpace.GetDefaultFolder(olFolderContacts);
        aContactItem := aFolder.Items.Add;
        aContactItem.FirstName := 'Andreas';
        aContactItem.LastName := 'Kosch';
        aContactItem.BusinessTelephoneNumber := '(030) 12345';
        aContactItem.Save;
        end;
        </pre>

        Ich glaube kaum, das es einen einfacheren (direkten) Weg zu Outlook gibt, als diese Handvoll Programmzeilen ;-)<br>
        Die Beschreibung, warum das so funktioniert und was es mit den Begriffen <b>MAPI</b> und <b>olFolderContacts</b> auf sich hat, findet sich in meinem Buch <i>COM/DCOM mit Delphi</i>.
        &#10

        Comment

        Working...
        X