Lotus Notes con Delphi

Abre la base de datos de Lotus Notes  names.nsf y muestra su libro de direcciones.


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Domino_TLB, Menus, ComCtrls;
const
PASSWD = 'ur70';
type
TForm2 = class(TForm)
   TV_INFO: TTreeView;
   MainMenu1: TMainMenu;
   File1: TMenuItem;
   Create1: TMenuItem;
   Init1: TMenuItem;
   AddressBook1: TMenuItem;
   Scan1: TMenuItem;
   procedure Create1Click(Sender: TObject);
   procedure Init1Click(Sender: TObject);
   procedure Scan1Click(Sender: TObject);
private
   { Private declarations }
public
   { Public declarations }
end;

var
Form2: TForm2;
Session: TNotesSession;
implementation

{$R *.dfm}

procedure TForm2.Create1Click(Sender: TObject);
begin
Session := TNotesSession.Create(nil);
end;

procedure TForm2.Init1Click(Sender: TObject);
begin
Session.Initialize(PASSWD);
end;


Abre la base de datos names.nsf y muestra el libro de direcciones

procedure TForm2.Scan1Click(Sender: TObject);
var
NotesDb: NotesDatabase;
addrBook: NotesDatabase;
People, People2: NotesView;
Person, Person2: NotesDocument;
View: NotesView;
Item: NotesItem;
AddrBooks: OleVariant;
Views: OleVariant;
Items: OleVariant;
x, y, z: integer;
view_name: string;
tn, tc: TTreeNode;
begin
NotesDb := Session.GetDatabase('', 'names.nsf', False);
AddrBooks := Session.AddressBooks;
for x := 0 to VarArrayHighBound(AddrBooks, 1) -
   VarArrayLowBound(AddrBooks, 1) do
begin
   addrBook := NotesDatabase(IUnknown(AddrBooks[x]));
   if (addrBook.IsPrivateAddressBook) then
   begin
     addrBook.Open;
   end
   else
     addrBook := nil;
   if (addrBook <> nil) then
   begin
     Views := addrBook.Views;
     for y := 0 to VarArrayHighBound(Views, 1) -
       VarArrayLowBound(Views, 1) do
     begin
       View := NotesView(IUnknown(Views[y]));
       view_name := View.Name;
       tn := tv_info.Items.AddNode(nil, nil, view_name, nil, naAdd);

       if copy(view_name, 1, 1) = '$' then
         view_name := copy(view_name, 2, length(view_name) - 1);
       people := addrBook.GetView(view_name);
       person := people.GetFirstDocument;
       if Person <> nil then
       begin
         Items := Person.Items;
         for z := 0 to VarArrayHighBound(Items, 1) -
           VarArrayLowBound(Items, 1) do
         begin
           Item := NotesItem(IUnknown(Items[z]));
           tc := tv_info.Items.AddChild(tn, Item.Name);

           people := addrBook.GetView(view_name);
           person := people.GetFirstDocument;

           while (Person <> nil) do
           begin
             try
               try
                 tv_info.Items.AddChild(tc, Person.GetFirstItem(Item.Name).Text
                   {Item.Text});
               except
               end;
             finally
               Person := People.GetNextDocument(Person);
             end;
           end;
         end;
       end;
     end;

   end;
end;
end;

end.

No hay comentarios:

Publicar un comentario