Você está na página 1de 152

1 CONCEITOS GERAIS

Workflow: software para controlar os passos necessrios para completar toda uma
atividade.
Workgroup: grupo de pessoas que compartilham arquivos, dados e possivelmente
aplicaes. Os softwares de workgroup so projetados para permitir
interaes colaborativas.
Groupware: software baseado em tecnologia Client/Server, permitindo vrios usurios
compartilharem uma rea comum de informaes.
Exemplos de ferramentas groupware:
Lotus Notes LOTUS
Exchange MCROSOFT
Group Wise NOVELL
1.1 - LOTUS NOTES
um ambiente de computao para grupo de trabalho que ajuda as pessoas a
trabalharem em conjunto de uma maneira mais eficiente. Com ele, as pessoas podem
trabalhar juntas, independente da plataforma ou dos limites geogrficos, tcnicos ou
organizacionais. As informaes baseadas no Notes podem ser compartilhadas a qualquer
distncia e a qualquer momento. O Notes uma ferramenta de comunicao, para suprir a
necessidade de automatizar o ambiente de trabalho fazendo com que os documentos fluam
normalmente, seguindo um fluxo lgico de acompanhamento a eles.
O!O INTELIGENTE !E SE COUNICAR" COO#ERAR E COOR!ENAR
1.$ - SER%I!ORES !O NOTES E ESTA&'ES !E TRA(AL)O
O Notes consiste em dois programas principais: Servidor e Estao de Trabalho.
O Ser*+,or ,o No-e.: Um computador que executa o OS/2, Windows/NT ou UNX -
fornece servios a usurios da estao de trabalho do Notes e
a outros servidores do Notes, inclusive armazenamento de
bancos de dados compartilhados e transferncia de mensagens.
A E.-a/0o ,e Tra1al2o ,o No-e.: Um computador que executa o software do sistema
Windows/NT, OS/2, Macintosh ou UNX - comunica-
se com os servidores do Notes, de modo que voc
possa usar os bancos de dados compartilhados e ler
e enviar mensagens.
1.3 USU4RIOS NOTES
A,5+6+.-ra,ore.: Gerenciam os usurios, as redes e os bancos de dados do Notes para
assegurar que todos estejam acessando corretamente os bancos de
dados.
!e.+g6er.: Criam e modificam os bancos de dados (aplicativos) para que os usurios
possam compartilhar informaes de maneira eficaz.
U.u7r+o.: Criam, editam e compartilham documentos com outros usurios do Notes.

CA#8TULO 1 LOTUS SCRI#T (4SICO
Lo-u.S9r+p- (7.+9o
LotusScript uma linguagem de programao que estende as capacidades de
desenvolvimento de aplicaes da Lotus, particularmente, Lotus Notes. LotusScript se
assemelha a Visual Basic (VB) e se voc est familiarizado com VB, ento aprender
LotusScript fcil.
S+6-a:e u.a,a 6o LotusScript
Variveis do LotusScript, tipos de dados, estrutura de dados estrutura, operadores,
funes e subs, laos e condicionais, cadeia de caracteres, funes de data/hora,
arquivos,... so cobertos.
Neste captulo voc ir aprender sobre o LotusScript, a linguagem de programao
usada nos produtos da Lotus. O captulo abrange LotusScript bsico e sua sintaxe e
estrutura. O que voc aprender neste captulo pode ser usado em qualquer produto Lotus
que use o LotusScript.
Este Captulo j assume que voc no leigo em programao e que j tenha
alguma experincia com linguagens como Visual Basic e outras.
1 O ;u< = Lo-u.S9r+p- >
LotusScript uma linguagem de script bsica. Ela primeiramente apareceu no
Lotus Improv, um produto inovador que foi desenvolvido para Windows em 1992.
Gradualmente, mais produtos Lotus incorporaram o LotusScript, incluindo Formulrios
Notes e Lotus Notes Vip ( que foi vendido posteriormente para Revelation ).
Neste Captulo, ns investigaremos os elementos da Linguagem LotusScript de
uma forma prtica. Sero usados exemplos para facilitar o aprendizado. Ns comearemos
com " Como adicionar comentrios ao seu cdigo.
$ A,+9+o6a6,o Co5e6-7r+o. ao .eu C?,+go
O primeiro e mais importante assunto para aprender em uma linguagem de
programao a maneira de acrescentar comentrios ao seu cdigo.
As linhas de comentrios iniciam com apstrofo. De fato, qualquer coisa aps um
apstrofo considerado como um comentrio e voc pode facilmente adicionar comentrios
no final da linha. Voc tambm pode usar %REM and %END REM para blocos de linhas de
comentrios como mostra o exemplo:
Uma linha simples de comentrio . . .
. . . e outra
%REM
A primeira linha de um comentrio com mltiplas linhas
A ltima linha de um comentrio com mltiplas linhas
%END REM

DCA
importante que voc use comentrios em suas linhas de programao para facilitar a
manuteno do programa por voc e tambm por uma outra pessoa que venha a
assumir suas tarefas.
3 Entendendo as Variveis do LotusScript
No LotusScript, como em qualquer linguagem de programao, as variveis so
usadas para armazenar e manipular dados. Existem algumas regras que devem ser
seguidas quando da nomeao das variveis no LotusScript:
O primeiro caracter deve ser uma letra;
Os demais caracteres podem ser letras, nmeros,...;
Os nomes das variveis podem ter no mximo 40 caracteres;
No existe distino entre nomes maisculos e minsculos.
Estas regras bsicas so aplicadas tambm a nome de constantes, tipos,
classes, funes, procedimentos, subrotinas e propriedades.
4 Constantes no LotusScript
Muitas constantes so criadas para tornar seu programa mais fcil. A tabela
1.0 abaixo mostra estas constantes.
Tabela 1.1 Constantes do LotusScript
Constante
s
Descrio
FALSE O valor boleano falso. Representada por 0
TRUE O valor boleano verdadeiro. Representado por -1.
NULL Para variveis do tipo variante, indica que a varivel no tem valor
NOTHNG Para variveis que podem se referenciar a um objeto, indica que a
varivel no est se referenciando a um objeto
P
Do termo matemtico =~ 3,14
Algumas constantes programadas so definidas em arquivos especiais que voc
pode incluir em seus scripts. Estes arquivos so conhecidos como "include files e tm a
extenso .LSS que significa "LotusScript Source file ". Use a diretiva %NCLUDE na sesso
de declarao para incluir o arquivo .LSS. Veja o exemplo abaixo:
%INCLUDE " LSCONST.LSS "

Estas constantes tornam seu programa mais legvel. Por exemplo, MB_OK e
MB_OKCANCEL podem ser usados na funo MsgBox.
DCA
Quando o Notes instalado na forma padro, todos os arquivos .LSS so
armazenados no diretrio de programas do Notes. Para saber mais sobre estes
arquivos e suas constantes, veja-os em um editor de texto como o Bloco de Notas.
Voc pode definir suas prprias constantes usando a declarao de constantes.
uma maneira para tornar seu cdigo mais legvel. Por exemplo, para definir constantes que
definam tamanhos de produtos, voc pode definir o fragmento de cdigo seguinte:
Const SIZE_SMALL = 1
Const SIZE_MEDIUM = 2
Const SIZE_LARGE = 3
Por converso, todos os nome de constantes so capitalizados.
5 Entendendo Tipos de Dados
Todas as variveis no LotusScript tm um tipo associado a elas. Este tipo define,
basicamente, duas coisas:
Quanto de espao deve ser reservado para os dados que esto armazenados
nas variveis;
Que tipo de expresses podem usar as variveis.
Para esclarecer melhor, uma vez declarada a varivel do tipo inteira, o LotusScript
reserva dois bytes para o seu valor ser armazenado na varivel e verifica que a varivel s
pode ser usada em expresses para valores inteiros.
LotusScript suporta os tipos de dados na tabela 2.0 abaixo:
Table 1.2 Tipos de Dados do LotusScript
Tipo de Dado Nmero de Bytes Armazenados Sufixos
nteger 1 %
Long 4 &
Single 4 !
Double 8 #
Currency 8 @
String 2 por caracter $
Variant 16 Nenhum
@. !e9lara6,o %ar+7*e+.

No necessrio declarar uma varivel porque na primeira vez que voc usa uma
nova varivel, LotusScript declara ela para voc automaticamente como uma varivel do
tipo Variant.
!ICA
Sempre declare as variveis na sesso de declarao geral. Isto fora a declarao
de todas as variveis que voc usa e ajuda voc quando da depurao do programa
Voc declara as variveis usando a expresso Dim. Por exemplo, o fragmento de
cdigo seguinte declara trs variveis: iCont como inteiro, strName como string e curPrice
como currency:
Dim iCount As Integer
Dim strName As String
Dim curPrice As Currency
Voc pode adiciona qualquer dos sufixos mostrados na tabela 2.0 para declarar as
variveis. Veja o exemplo abaixo:
Dim sRatio!
Dim dLimit#
!ICA
No bom usar sufixos quando declara variveis. Isto torna seu cdigo mais difcil
de entender por algum que no sabe que, por exemplo, ! quer dizer uma varivel single.
Se no explicitado o tipo da varivel, atribudo a ela o tipo Variant. As duas linhas
abaixo declaram variveis com Variant:
Dim varFontTipe As Variant
Dim varFontName
!ICA
bom que o programador pratique todos os tipos de variveis quando possvel. Isto
tira qualquer dvida sobre o tipo de varivel que voc deve usar e faz seu cdigo mais fcil
de sofrer manuteno.
Veja que o prefixo que adotamos faz parte do nome da varivel. Apesar dele no ser
necessrio, ele ajuda a voc checar que voc est usando a varivel correta na expresso.
Por exemplo, s em olhar o nome das variveis no seu cdigo, voc estar constatando se
as variveis usadas na expresso so do mesmo tipo.
Os prefixos so variados entre os diversos programadores. A tabela 1.3 mostra
exemplos de prefixos.
Tabela 1.3 Sugestes de Prefixos para Nomes de Variveis

Data Type Prefix Example
nteger DocsDeleted
Long L LFilesLength
Single S SWeightCoefficient
Double D DAcceleration
Currence Cur CurSalaryncrease
String Str StrDocTitle
Variant Var VarName
A Co6*er-e6,o T+po. ,e !a,o.
Em muitos casos, quando voc atribui dado de um tipo para uma varivel de um tipo
diferente, LotusScript automaticamente converte o dado para voc. LotusScript converte
dados de tipos diferentes usando a sequncia de tipos seguintes: Integer, Long, Single,
Double e Currency.
Se voc usar variveis do tipo long e do tipo single em uma mesma expresso,
LotusScript converte o valor long em um valor single antes de prosseguir na expresso.
LotusScript possui um conjunto de funes que convertem variveis em diferentes
tipos. As funes so listadas na tabela 1.4 e permite a voc:
Converter dados de um tipo para outro;
Converter nmeros em cadeias;
Converter cadeias em nmeros;
Checar o tipo de dado de uma varivel.
Tabela 1.4 Funes de Converses de Dados
Funes Descrio
Bin$ Converte o nmero fornecido em uma String que representa seu valor
binrio
Ccur Converte o valor fornecido em Currency
CDat Converte o valor fornecido em Variant do tipo data
CDbl Converte o valor fornecido em Double
Cnt Converte o valor fornecido em Integer
CLng Converte o valor fornecido em Long
CSng Converte o valor fornecido em Single
CStr Converte o valor fornecido em String
DataType Retorna um valor Integer que representa o tipo de dado do valor fornecido
Hex$ Converte o nmero em uma String que representa seu valor hexadecimal
Oct$ Converte o nmero em uma String que representa seu valor octal.
Str$ Converte um nmero em uma String.
TypeName Retorna uma String que representa o tipo de dado do valor fornecido
Val Converte a String fornecida em um nmero do tipo Double.
A.1 Co6*er-e6,o !a,o. ,e u5 T+po para Ou-ro
Use CCur, CDat, CDbl, CInt, CLng, CSng e CStr para converter dados de um tipo
para outro. Geralmente, voc faz converses de tipos para Ter certeza que o resultado de

um clculo de um certo tipo. Por exemplo, o fragmento de cdigo seguinte mostra como
ter certeza que o preo calculado retorna um valor do tipo Currency:
Dim iQuantidade As Integer
Dim curPreco As Currency
Dim curTotal As Currency
CurTotal=CCur(iQuantidade + curPreco)
A.$ Co6*er-e6,o u5 NB5ero e5 u5a Ca,e+a ,e Cara9-ere.
O LotusScript tem funes que convertem nmeros em cadeias. Str$ converte o
valor numrico dado em cadeia, acrescentando um espao no incio se o nmero for
positivo. Se voc no quer espaos, use a funo CStr O exemplo seguinte imprime " 143:
Print Str$(143)
As funes Bin$, Hex$ e Oct$ convertem os nmeros fornecidos em cadeias que
contm a representao binria, hexadecimal e octal de cada um respectivamente. O
exemplo seguinte imprimi "101:
Print Bin$(5)
A.3 Co6*er-e6,o Ca,e+a ,e Cara9-ere. e5 NB5ero
Use a funo Val para converter uma cadeia em um nmero. A funo Val retorna
um valor Double contendo a representao numrica da cadeia.
A.C C2e9a6,o o T+po ,e !a,o ,e u5a %ar+7*el
Existem duas funes que checam o tipo de dado de uma varivel: DataType e
TypeName. DataType retorna um integer representando o tipo de dado da varivel ou
expresso sendo checada. O arquivo LSCONST.LSS contem um conjunto de constantes
pr-declaradas que voc pode usar para interpretar o valor retornado por DataType.
TypeName semelhante a DataType exceto que ao invs de retornar um inteiro, ele retorna
uma String descrevendo o tipo de dados. Veja o exemplo seguinte:
Dim strNome As String
Print TypeName(StrNome)
D E.-ru-ura ,e !a,o. ,o Lo-u.S9r+p-
LotusScript suporta estrutura de dados comuns de arrays e listas. Ele tambm
suporta estruturas de dados orientadas a objeto; por exemplo, voc pode criar suas classes,
mtodos e propriedades. Voc tambm pode usar LotusScript para trabalhar com objetos
OLE e ActiveX.
D.1 ArraE.

No LotusScript, voc pode declarar dois tipos de arrays, estticas e dinmicas.
Uma array esttica uma array de tamanho fixo, contento um nmero fixo de elementos.
Voc pode criar e deletar elementos. Uma array dinmica pode ser redimensionada a
qualquer hora; voc pode torn-la maior e menor adicionando e removendo elementos. Veja
a tabela 1.5 com as funes que voc pode usar para trabalhar com arrays.
Tabela 1.5 Funes de Arrays
Comandos ou Funes Descrio
Dim Declara uma array esttica e inicializa seus elementos
Erase nicializa cada elemento de uma array fixa. Para arrays
dinmicas, deleta todos seus elementos
sArray Dado uma varivel ou expresso, Retorna verdadeiro se uma
expresso for uma array
Lbound Retorna o menor ndice de uma array
ReDim Declara uma array dinmica e aloca espao para seus
elementos ou modifica o tamanho de uma array dinmica
existente
Ubound Retorna o maior ndice de uma array
Voc declara uma array esttica usando o comando Dim. Voc especifica o
seguinte:
O nmero de dimenso para array;
O limite ( dimenso ) da array;
O tipo de dado a ser armazenado.
Dim aloca espao para a array e automaticamente inicializa cada elemento com um
valor padro. At que voc especifique outro, o primeiro elemento de uma array tem o
ndice 0. Se preciso, voc pode mudar seu padro para 1, usando a expresso "Ooption
base 1. As declaraes abaixo declaram variveis estticas:
Dim strNome(9) As String Declara 10 elementos com ndices de 0 a 9
Dim iMatriz(9,9) As Integer Declara 100 elementos
Dim iVetor(1 to 50) As Integer Declara 50 elementos com ndices de 1 a 50
Voc tambm pode usar Dim para declarar arrays dinmicas. Porm, quando voc
declarar uma array dinmica usando Dim, especifique apenas o tipo. Voc no especifica o
nmero de elementos da array e no alocado espao para a array. Antes de usar uma
array dinmica, voc tem que usar o comando ReDim para alocar algum espao para seus
elementos. Por exemplo, o cdigo abaixo mostra como declarar uma array dinmica e
alocar agum espao para ela:
Dim iElemento As Integer Declara o nmero de elementos a ser usado
Dim strVetor() As String Declara a array dinmica
IElemento = 25

ReDim strVetor(iElemento) Aloca para este nmero de elementos
Voc pode tambm declarar e inicializar uma array usando ReDim. Por exemplo,
para declarar uma array contento seis elementos do tipo Integer e inicializar cada elemento
com 0, use o seguinte cdigo:
Option Base 1 Especifica que o primeiro elemento de qualquer array tem o ndice 1
ReDim var Peso(6) As Integer Declara uma array dinmica com elementos cujos
ndices vo de 1 a 6.
Voc pode usar ReDim para redimensionar uma array dinmica com a opo de
preservar o contedo da array ou reinicializando seus elementos. Por exemplo, se voc tem
uma array dinmica, iVetor, contendo 50 elementos e voc precisa aumentar seu tamanho
para 100 elementos preservando seu contedo corrente, use o seguinte cdigo:
ReDim Preserve iVetor(99)
Se voc precisa achar o tamanho de uma array dinmica em tempo de execuo,
voc pode usar as funes LBound e UBound. Use essas funes com o nome de uma
array e opcionalmente com seu tamanho. LBound retorna o menor ndice da array e
UBound o maior. Por exemplo, aps redimensionar iVetor, Lbound(iVetor) 0 e
UnBound(iVetor) 99.
Voc pode usar o comando Erase para deletar todos os elementos de uma array
dinmica e liberar o espao usado pela array. Em uma array esttica, voc pode usar Erase
para reinicializar cada elemento.
Voc pode atribuir uma array a uma varivel do tipo Variant. Consequentemente,
voc pode checar se uma varivel contem uma array usando a funo IsArray. Se a varivel
ou expresso fornecida uma array, a funo retorna verdadeiro. Por exemplo:
Dim var Icons As Variant
Dim lIconsIDs(255) As Long
Print IsArray(varIcons) False
VarIcons = lIconIDs
Print IsArray(varIcons) True
D.$ L+.-a.
Uma lista similar a uma array e contm um conjunto de elementos. Ela diferencia
de uma array quando da identificao e uso de seus elementos. Com arrays, voc identifica
seus elementos usando ndices. Com lista, voc identifica elementos usando uma string.
Veja a tabela 1.6 que exibe as funes usas com listas:
Tabela 1.6 Funes de Lista

Comandos e
Funes
Descrio
Dim Declara a lista
Erase Para a lista, remove todos os seus elementos. Para elementos da
lista, remove o elemento da lista
ForAll Lao entre os elementos da lista
sElement Dado o nome da lista e a string, retorna verdadeiro se a string
um elemento da lista
sList Verifica se a varivel uma lista
LisTag Pode ser apenas usada dentro de um bloco ForAll e retorna o
nome do elemento da lista
Use Dim para declarar uma lista vazia como se segue:
Dim curAmountOutstanding List As String
Quando voc declara uma lista, ela no possui elemento e no alocado espao
para ela. Voc adiciona elementos a lista adicionando novas strings. Por exemplo, voc
pode criar dois elementos na lista, cujas strings so ABC e XYZ, usando o cdigo abaixo:
CurAmountOutstanding("ABC") = 12.99
CurAmountOutstdanding("XYZ") = 52.00
Voc usa a string para se referenciar a um elemento da lista da mesma forma que
voc usa um ndice para ser referenciar a um elemento de uma array. Por exemplo, para
somar esses dois elementos que acabamos de criar, veja o cdigo abaixo:
Dim curTotal as Currency
CurTotal = CurAmountOutstanding("ABC") + CurAmountOutstanding("XYZ")
Use Erase para deletar elementos especficos de uma lista, ou todos os elementos.
Por exemplo:
Erase CurAmountOutstanding("ABC") Remove o elemento da lista
Erase CurAmountOutstanding Remove todos os elementos da lista
Caso voc queira checar se foi adicionado um elemento a uma lista, usando a
funo IsElement. Fornea a string do elemento procurado e a funo retorna verdadeiro se
o elemento fizer parte da lista. For example:
IsElement(curAmountOutstanding("XYZ"))
Voc tambm pode checar se uma varivel uma lista. Por exemplo:
IsList(curAmountOutstanding)
Para percorrer os elementos de uma array, voc tipicamente usa um loop para
percorrer todos os ndices da array. No caso de uma lista, voc usa um ForAll loop junto
com a funo ListTag. Por exemplo:

ForAll varElement In curAmountOutstanding

Print ListaTag(varElement) ; " owes " ; varElement
End ForAll
H pontos importantes que devem ser anotados quando se uma ForAll. No exemplo
acima, a varivel "varElement um tipo especial de varivel usada pelo LotusScript
quando executando loops ForAll. No corpo do loop, cada elemento da lista atribuido a
varivel de referncia. Voc nunca tem que declarar uma varivel de referncia;
LotusScript declara todas as variveis de referncia como variant por voc . Se voc tentar
declarar uma varivel de referncia, aparecer erro de compilao.
Dentro de um loop ForAll, voc pode usar funo ListTag para achar a string
correspondente ao elemento corrente. Esta funo s usada dentro de um loop ForAll.
CUI!A!O
LotusScript suporta somente arrays e listas com um tamanho mxio de 64k. Tome
cuidado com esse limite quando alocar arrays e listas grandes.
D.3 T+po. !ef+6+,o. pelo U.u7r+o
Voc pode definir suas prprias estruturas de dados usando a expresso type. Basta
fornecer o novo nome do tipo e definir uma ou mais variveis membro para o tipo.
NOTA
O termo varivel membro usado para referenciar qualquer varivel includa em
uma definio de tipo de usurio.
Por exemplo, para declarar um novo tipo com trs variveis membros, voc poderia
usar a declarao de tipo seguinte:
Type Custumer
LCustID As Long
StrCusFirstName As String
StrCusSurname As String
CurBalance As Currency
End Type
Voc pode ento declarar novas variveis deste tipo; por exemplo:
Dim custNew As Customer
Dim custMailing As List Customer
Dim custMostFrequentBuyers(99) As Customer

Voc se referencia a uma varivel membro usando a forma VarNome.MembroNome
onde VarNome o nome da varivel do tipo definido pelo usurio e MembroNome o nome
da varivel membro.
CustNew.lCustID = 14829
CustNew.strCustFirstName = " Chris "
CustNew.curBalance = 100.00
D.C Cla..e. e O1Fe-o. !ef+6+,o. pelo U.u7r+o
Voc pode definir suas prprias classes e objetos com LotusScript. A declarao de
classe semelhante a declarao de tipo, exceto que alm de variveis membros voc
pode definir tambm procedimentos membros. Voc pode definir dois procedimentos
especiais com classes: New e Delete. New usado para definir variveis membros para um
objeto de uma classe. Delete definido se voc precisa fazer qualquer processo especial
quando um objeto de uma classe deletada. O exemplo seguinte mostra uma classe
simples com 4 variveis membro e quatro procedimentos membros:
Class custObject
LcustID As Long varivel membro
StrCustFirstName As String
StrCustSurName As String
CurBalance as Currency
Sub New(Lid As Long, strFirstName As String, strSurname As String,
curBal As Currency) Define o construtor
lCustID = lID
strCustFirstName = strFirstName
strCustSurName = strSurName
curBalance = curBal
End Sub
Sub Delete Define o destrutor
Print " Customer " ; strCustfirstName ; " " ; strCustSurName ; " deleted. "

End Sub
Sub SetBalance(curBal As Currency)
CurBalance = curBal
End Sub

Function curQueryBalance As Currecy
CurQueryBalance = curBalance
End Function
End Class
Voc usa Dim para declarar variveis objeto. Quando voc usa Dim com um nome
de uma classe, voc est declarando uma referncia a um objeto. Ento, use New para criar
um novo objeto e Set para atribuir o objeto varivel referenciada. Por exemplo:
Dim custNew As custObject
Set custNew = New custObject(14829, " Chris ", " Edwards ", 100.00)
Por default, a varivel membro criada privada para a classe enquanto a funo
membro pblica. sto , voc no pode se referenciar diretamente a uma varivel membro,
mas a uma funo voc pode. Por exemplo:
CustNew.SetBalance(50.00) Certo
CustNew.curBalance = 50.00 Errado
CurCurrentBalance = custNew.curQueryblance Certo
CurCurrentBalance = custNew.curBalance Errado
O comando With permite um meio diferente de acessar procedimentos pblicos e
variveis membros de um objeto. Por Exemplo:
With custNew
Call .SetBAlance(50.00)
CurCurrentBalance = .curQueryBalance
End With
Voc pode deletar um objeto usando a funo Delete como mostrado:
Delete custNew
Se voc tem definido uma subrotina Delete na sua classe, ela executada antes do
objeto ser excludo.
Por exemplo, quando voc exclui o objeto no seu exemplo, a subrotina Delete
mostra " Customer Chris Edwards deleted ". Veja a tabela 1.7 que exibe comandos e
funes que so usadas com classes e objetos.
Tabela 1.7 Funes e Comandos de Classes e Objetos

Comandos e Funes Descrio
Class Usado para declarar uma classe de objeto definido pelo usurio
Delete Executa a subrotina Delete para objetos definidos pelo usurio
sObject Retorna verdadeiro se a expresso fornecida for um objeto
New Usado para criar um novo objeto definido pelo usurio
Set Associa um objeto a uma varivel
With Usado para acessar procedimentos pblicos e variveis de objeto
D.G O1Fe-o. OLE e A9-+*eH
Voc pode acessar as classes, mtodos, e propriedades de objetos OLE e ActiveX
usando LotusScript e Notes. sto quer dizer que voc pode usar Notes para transferir
dados de aplicativos como Microsoft Excel and Lotus WordPro, ento trabalhar com os
dados usando classes de objetos da aplicao. Voc tambm pode programar objetos
ActiveX como Lotus Components diretamente do LotusScript. A tabela 1.8 exibe comandos
e funes para objetos OLE e ActiveX.
Tabela 1.8 Funes e comandos de objetos OLE e ActiveX
Comandos e Funes Descrio
CreateObject Dado o nome de uma classe de objeto OLE, Cria um objeto OLE
GetObject Dado o caminho de uma arquivo e o nome de uma classe OLE,
abre um objeto OLE a partir de um arquivo
sObject Retorna verdadeiro se a expresso fornecida for um objeto
Set Associa um objeto a uma varivel
Voc pode criar um novo objeto OLE ou ActiveX usando a funo CreatObject. Basta
fornecer o nome da classe do objeto que voc quer criar e o LotusScript cria o objeto. Se
necessrio, LotusScript iniciar a aplicao requerida para criar o objeto. O exemplo
seguinte mostra como criar um nove documento WordPro e salv-lo:
Dim objDoc As Variant
Set objDoc = CreateObject( " WordPro.Application")
ObjDoc.NewDocument " ", " ", "C:\Docs\EBS.MWP", " " " " " "
Atualizando o documento aqui . . .
objDoc.SaveAs "C:\Docs\REPORT.LWP", " ", " ", False, True, False
Call objDoc.Close(False)
Para abrir um objeto existente, use GetObject. Voc fornece o caminho do arquivo
contento o objeto e opcionalmente o nome da classe. LotusScript acha e abre o objeto. O
exemplo seguinte mostra como abrir um objeto WordPro:
Dim objDoc As Variant
Abre um documento WordPro
Set objDoc = GetObject("C:\DOCS\REPORT.LWP")

I E6-e6,e6,o Opera,ore. Lo-u.S9r+p-
No LotusScript, os operadores so usados para realizar os seguintes tipos de
funes:
Aritmtico;
Lgico;
Comparao;
Concatenao.
Tabela 1.9 Operadores Aritmticos
Operador Descrio Exemplo Resultado
- Nmero negativo -34 -34
- Subtrai dois nmeros 7 5 2
+ Adiciona dois nmeros 5 + 9 14
* Multiplica dois nmeros 7 * 6 42
/ Divide dois nmeros 16 / 5 3.5
\ Diviso de inteiros 16 \ 5 3
Mod Resto de uma diviso inteira 16 Mod 5 1
^ Potncia de um nmero 5 ^ 2 25
Tabela 1.10 Operadores de Comparao
Operador Descrio Exemplo Re.ul-a,o
= Retorna verdadeiro se dois valores so iguais 5 = 6 False
<> >< Retorna verdadeiro se dois valores no so iguais 5 <> 6 True
< Retorna verdadeiro se um valor menor que o
outro
7 < 9 True
> Retorna verdadeiro se um valor maior que o outro 7 > 9 False
>= => Retorna verdadeiro se um valor maior ou igual a
outro
8 >=8 True
<= =< Retorna verdadeiro se um valor menor ou igual a
outro
8 <= 8 True
s Retorna verdadeiro se dois objetos referenciam-se
para o mesmo objeto
ObjA s
ObjB
True/False
Tabela 1.11 Operadores Lgicos
Operador Descrio Exemplo Resultado
Not Negao lgica Not B Verdadeiro se B falso; Falso do contrrio
And And lgico A And B Verdadeiro se A e B verdadeiros; Falso do
contrrio
Or Or lgico A Or B Verdadeiro se A ou B verdadeiros; Falso do
contrrio
Xor Or exclusivo A Xor B Verdadeiro se apenas um verdadeiro; Falso

se A e B falsos ou verdadeiros
Eqv Equivalncia
lgica
A Eqv B Verdadeiro se A e B so falsos ou
verdadeiros; Falso do contrrio
mp mplicao lgica A mp B Verdadeiro se A falso ou ambos so
verdadeiros; Falso se A verdadeiro e B falso
Tabela 1.12 Operadores de Strings
Operador Descrio Exemplo Resultado
J Co69a-e6a ,ua. .-r+6g. KA(LMLC!L KA(C!L
M Co69a-e6a ,ua. .-r+6g. KA(LM KC!L KA(C!L
L+ke Re-o6ra *er,a,e+ro .e u5a .-r+6g
9o51+6a 9o5 ou-ra .-r+6g
for6e9+,a
KA(CL L+ke KANL True
1O U.a6,o Pu6/Qe. e Su1.
No LotusScript, voc pode definir funes e subs que sero chamadas para realizar
funes especficas. Por exemplo, voc pode definir uma funo que converte uma data
com dois dgitos de ano para uma data com quatro dgitos. A principal diferena entre uma
funo e uma sub que a primeira retorna um valor e a segunda no.
1O.1 !e9lara6,o fu6/Qe. e .u1.
Voc declara uma funo usando a palavra-chave function como se segue:
Function fIsWeekend(iDay As Integer) As Integer
Voc d um nome a funo, define a lista de argumentos que sero passados e
finalmente define o tipo de valor que ser retornado. Para retornar um valor, atribua este
valor ao nome da funo como mostrado no exemplo seguinte:
Function fIsWeekend(varDate As Variant) As Integer
If Weekday(varDate) = 1 Or Weekday(varDate) = 7 then
fIsWeekend = True
Else
fIsWeekend = false
End If
End Function
Para definir subs no preciso declarar um tipo de retorno. Uma declarao de sub
tpica mostrada abaixo:
Sub GoToBeach(strResort As String, iMilesToResort As nteger)

1O.$ C2a5a6,o fu6/Qe. e .u1.
Para chamar uma funo basta atribu-la a uma varivel. Por exemplo:
Dim fGoToWork As Integer
Dim varToday As Variant
VarToday = Today A funo " today " retorna a data de hoje
FGoToWork = fIsWeekend(varToday)
Para chamar uma sub voc pode usar um dos seguintes mtodos:
Call SubName(Arg1, Arg2, ...)
Call SubName Arg1, Arg2
SubName(Arg1, Arg2, ....)
Por exemplo:
If fISWeekend(varToday) then
Call GotoBeach(" Maui ", 4000)
End If
Quando voc passa valores a subs e funes, voc precisa saber das duas
seguintes maneiras que o LotusScript pode passar argumentos:
Por referncia: LotusScript passa uma referncia do argumento. A funo
trabalha com o argumento. Qualquer mudana feita no argumento reflete no
original;
Por valor: LotusScript passa uma copia do argumento para a funo. A funo
trabalha com a copia. Qualquer mudana na copia no afeta o original.
Alguns argumentos, como arrays, listas e objetos so sempre passados por
referncia. Se voc sempre quer um argumento passado por valor, use a palavra-chave
ByVal quando voc declara o argumento na declarao de uma funo ou sub. No exemplo
seguinte, o segundo argumento passado por valor:
Sub DeleteDocument(iDocNumber As Integer, ByVal strDocTitle As String)
11 Loop e (ra692
LotusScript proporciona uma variao de caminhos para controlar o fluxo de
execuo de um cdigo. Voc pode usar loops para executar repetidamente um conjunto de
expresses (comandos) a partir de uma certa condio. Voc pode usar branches para
executar partes diferentes de um cdigo baseado nos resultados de comparaes ou no
valor de variveis.

11.1 For...Next Loops
Voc usa For...Next loop para executar um conjunto de expresses um certo nmero
de vezes. Voc especifica:
Uma varivel de controle do loop;
Um valor inicial para a varivel;
Um valor final para a varivel;
Um valor de passo que ser adicionado a varivel depois de cada execuo do
loop. Se no especificado, o padro 1.
A primeira vez que o loop executado, a varivel de controle tem o valor inicial.
Depois de cada execuo, a varivel de controle atualizada adicionando o valor de
passosa varivel. Se voc usa um valor de passo positivo, o loop acaba quando a varivel
de controle maior ou igual ao valor final. Por exemplo:
Dim iCount As Integer
For iCount = 1 To 10 Step 2
Faz alguma coisa
Next
Neste exemplo, o loop executado 5 vezes com iCount tendo os valores 1, 3, 5, 7 e
9.
11.2 ForAll Loops
Ns j tivemos um primeiro contato com este tipo de loop quando falamos do uso de
listas no LotusScript. Porm, voc no usa ForAll loops apenas com listas. Por exemplo,
voc pode us-lo para percorrer todas as vises de um banco de dados Notes:
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
ForAll varView In db.Views
Faz alguma coisa
End ForAll
11.3 Do...Wile Loops
Use este tipo de loop para executar um bloco de expresses repetidamente
enquanto uma condio especial verdadeira. Antes do loop ser executado, a condio
testada. Se for verdadeira, o bloco executado ento. Se a condio for falsa, o loop no

ser executado e o controle passado para a prxima expresso ou comando depois do
loop. Por exemplo, o loop seguinte executado trs vezes e mostra 17, 18 e 19:
Dim iCount As Integer
Dim iMax As Integer
iMax = 20
iCount = 17
Do While iCOunt < iMax
Print iCount
iCount = iCount + 1
Loop
Uma alternativa para o loop acima testar a condio depois do loop ser executado.
Aqui, o loop executado pelo menos uma vez. Por exemplo:
Dim iCount As Integer
Dim iMax As Integer
iMax = 20
iCount = 17
Do
Print iCount
iCount = iCount + 1
Loop While iCOunt < iMax
11.! Do..."#til Loops
Com este tipo de loop, o conjunto de expresses dentro dele executado at que
sua condio seja verdadeira. Veja o exemplo:
Dim iCount As Integer
Dim iMax As Integer
iMax = 20
iCount = 17
Do Until iCount < iMax
Print iCount

iCount = iCount + 1
Loop
Neste exemplo o loop nunca ser executado porque a condio verdadeira antes
de entrar no loop. A condio pode ser executada depois do loop ser executado. Aqui, o
loop tambm executado pelo menos uma vez. Por exemplo:
Dim iCount As Integer
Dim iMax As Integer
iMax = 20
iCount = 17
Do
Print iCount
iCount = iCount + 1
Loop Until iCount < iMax
11.5 I$...%e#...&lse 1ra692e.
Voc pode usar If...Then...Else para selecionar qual expresso ou comando que
executado a partir de uma condio especfica. Se a condio for verdadeira, um conjunto
de expresses executada; se a condio for falsa, um conjunto diferente executado. Por
exemplo:
If iCount > iMax Then
Print " Muitos itens "
Else
Print iCount; " iten(s) "
End If
Voc pode omitir a parte Else da expresso se voc quer somente 6executar um
conjunto de expresses quando uma condio verdadeira. Por exemplo:
If iDaysOverdue > 14
Print " Tempo de comprar mais peas "
End If
11.6 Select...'ase 1ra692e.
Esta expresso deixa voc selecionar um bloco de expresses para executar
baseado no valor de uma expresso. Por exemplo:

Select Case iBoxesOrdered
Case Is <= 0 : Call ProcessInvalidOrder(iBoxesOrdered)
Case 1 : ProcessSmallOrder(iBoxesOrdered)
Case 2 to 15 : Call ProcessMediumOrder(iBoxesOrdered)
Case 16 to 31 : Call ProcessLargeOrder(iBoxesOrdered)
Case Else : Call ProcessHugeOrder(iBoxesOrdered)
End Select

11.7 (oSu) a6, *#...(oSu)
Com uma sub ou uma funo, voc pode usar GoSub and On...GoSub para desviar
para uma label especfica no procedimento. Uma label simplismente uma maneira de
identificar um lugar no seu cdigo. O cdigo na label pode executar um comando de retorno
para a expresso seguinte ao GoSub. Por exemplo, o cdigo seguinte desvia para label
lblLogError se a quantidade do pedio for negativa:
Sub ProcessInvalidOrder(iOrderQuantity As Integer)
If iOrderQuantity < 0 Then
GoSub lblLOgError
End If
Exit Sub
lblLogError:
Call LogError
Return
End Sub
Voc pode usar On...GoSub para desviar para uma label de um conjunto de labels a
partir de um valor fornecido. Veja o exemplo:
On iErrorNumber GoSub lblA, lblB, lblC
Se iErrorNumber 1, o programa desvia para lblA; se iErrorNumber 2, o programa
desvia para lblB; se iErrorNumber 3, o programa desvia para lblC. Se iErrorNumber 0 ou
maior que 3, a expresso On...GoSub ignorada.
A desvantagem de usar o comando GoTo(On...GoTo) ao invs de
GoSub(On...GoSub) que naquele no podemos usar o comando return.
1$ Tra1al2a6,o 9o5 S-r+6g.

LotusSript tem uma grande quantidade de funes que voc pode usar para
manipular string. Nesta sesso ns veremos:
Criao de SubStrings;
Formatando Strings;
Achando e comparando Strings.
A tabela 1.13 exibe uma lista de comandos e funes que voc pode usar.
Tabela 1.13 Funes e Comandos para String
Pu6/Qe. e
Co5a6,o.
!e.9r+/0o
Asc Dado uma string, retorna o cdigo de caracter da string
Chr Dado um cdigo de caracter, retorna o caracter correspondente ao cdigo
Format Formata uma string de acordo com o tipo de formato especificado
nStr Dado duas strings, retorna a posio do caracter(nStr) onde uma string
ocorre primeiro em outra.
Lcase Converte os caracteres de uma string em minsculos
Left Dado uma string e um nmero n, retorna n caracteres mais a esquerda da
string
Len Retorna o nmero de caracteres de uma string
Lset Adiciona uma string A a outra B onde A truncada se for maior que B ou
preenchido com espaos a direita quando A menor que B.
Ltrim Remove os espaos excedentes a esquerda de uma string
Mid Retorna uma substring de uma string dado o incio e o fim da substring
Right Dado uma string e um nmero n, retorna n caracteres mais a direita da
string
Rset Adiciona uma string em uma outra alinhada a direita. Se a primeira for
maior que a Segunda, colocado espaos adicionais no seu lado
esquerdo. Do contrrio, s os elementos mais a esquerda da substring
permanecem na string
Rtrim Remove os espaos em brancos a direita de uma string
Space Adiciona n espaos a um string
StrCompare Compara duas strings de acordo com o mtodo de comparao
Trim Remove espaos a direta e a esquerda de uma string
Ucase Converte os caracteres de uma string em maisculos
Uchr Retorna o caracter correspondente a um nmero no cdigo Unicode
Uni Dado uma string, retorna o cdigo de caracter Unicode, para o primeiro
caracter na string
Ustring Dado uma dimenso e tambm um cdigo, Unicode ou um caracter,
retorna uma string dos caracteres especificados do tamanho fornecido
1$.1 Cr+a6,o .-r+6g.
Voc usa Dim para declarar variveis do tipo string. O tamanho de uma string pode
ser fixo ou variado. Veja o exemplo:
Dim strVariableLength As String
Dim strFixedLength As String * 20

Como declarado, strFixedLength contem 20 caracteres. Se voc quer alterar uma
string para um tamanho particular aps ela ser declarada, voc pode usar a funo Space$
para atribuir a string um nmero especfico de espaos. Por exemplo:
Dim strName As String
StrName = Space$(32)
De forma alternativa, voc pode usar a funo String$ para atribuir a string qualquer
nmero de um caracter especfico, cdigo ASC e UniCode.
Strname = String$(32, " x " )
NOTA
A funo Asc retorna o cdigo de caracter ASCII correspondente ao caracter
fornecido. Da mesma forma, a funo Uni retorna o cdigo de caracter Unicode de um
caracter. Se voc realmente sabe o cdigo apropriado, voc pode usar o caracter
correspondente usando Chr para ASCII e Uchr para cdigo Unicode.
1$.$ Cr+a6,o .u1.-r+6g.
A partir de uma string voc pode usar tipos diferentes de funes para criar
substrings. Com as funes Left e Left$, voc pode substrings consistindo de um nmero
especfico de caracteres iniciando a esquerda da string. O exemplo seguinte mostra como:
Dim strName As String
Dim strFirstName As String
StrName = " John G Testar "
StrFirstname = Left$(strName, 4) O strFirstName passa a ser John
Da mesma forma, voc pode usar as funes Right e Right$ para extrair caracters
do lado direito da string. Por exemplo:
StrSurname = Right$(strName, 6) O strSurName passa a ser Testar
Use as funes Mid e Mid$ para extrair caracteres de qualquer parte da string. Voc
fornece a posio inicial e o nmero de caracteres como mostrado:
StrMiddlenitial = Mid$(strName, 6, 1) ' O strMiddlenitial passa a ser G
Para achar o tamanho de uma string, voc pode usar a funo Len. Por exemplo:
Dim iLength As Integer
ILength = Len(strName) A varivel recebe o valor 13
NOTA

Muitas funes LotusScript tm duas verses, uma que termina com $ e outra que
no termina com $. Se voc usa a primeira verso, o tipo de dado de retorno String. Se
voc usa a segunda verso, o tipo de dado de retorno Variant.
Voc pode remover espaos em branco de uma string usando Trim, LTrim, e RTrim.
Como seus nomes sugerem, Trim remove espaos a esqueda e direita de uma string, LTrim
remove espaos a esquerda da string e RTrim remove espaos a direita da string.
CUI!A!O
Muitas funes de string tem uma verso que trabalha com caracteres, tal como Left,
e outra que trabalha com bytes, tal como LeftB. Isto bom quando um caracter
armazenado em um byte. Porm, por causa do mtodo de codificao UniCode usado
pelo LotusScript representar cada caracter por dois bytes de cdigo de caracter, voc
dever estar precavido ao usar as funes de string orientadas a bytes como LeftB, LenB,
MidB e RightB. Elas podem dar resultados inesperados com strings Unicode. Use Left, Mid
e Right ao invs delas.
1$.3 Por5a-a6,o .-r+6g.
Voc pode mudar os caracteres de uma string para minsculo usando a funo
Lcase ou para maisculo usando a funo Ucase. Para formatos mais avanados use a
funo Format. Voc pode usar esta funo para formatar string, data/tempo ou nmeros de
acordo com uma string. Se voc quer ter certeza que strings esto corretamente alinhadas,
use as funes LSet ( alinhamento a esquerda ) e RSet ( alinhamento a direita ). Por
Exemplo:
Dim strLabel As String
StrLabel = Space$(8)
LSet strLabel = "ABC" Atribui a strLabel "ABC " porque o tamanho corrente da
varivel 8.
RSet strLabel = "XYZ" Atribui XYZ a varivel
StrLabel = "ABC"
1$.C E69o6-ra6,o e 9o5para6,o .-r+6g.
Se voc precisa encontrar uma string dentro de outra string, voc pode usar a funo
Instr para achar a posio do primeiro caracter da string procurada, fornecendo o seguinte:
A posio inicial onde ser feito a busca na string. O padro o incio da string;
A string a ser verificada;
A string a ser procurada;
Um nmero para indicar se a procura faz distino entre caracteres maisculos
e minsculos ou no.

Voc pode comparar duas strings usando a funo strCompare. Para usu-la basta
fornecer o seguinte:
As duas strings a serem comparadas;
Um nmero para identificar o tipo de comparao.
A funo retorna:
-1 se a primeira string menor que a segunda;
0 se as strings so iguais;
1 se a primeira string for maior que a Segunda.
13 a6+pula/0o ,e !a-a. e )ora.
As funes LotusScript que voc pode usar para manipular datas e horas so
mostradas na tabela 1.14
Tabela 1.14 Funes de manipulao de datas e horas
Co5a6,o. e
Pu6/Qe.
!e.9r+/0o
Date Retorna a data e hora corrente do sistema ou altera a mesma
DateNumber Dado um ano, ms e dia do ms, retorma o valor data/hora
correspondente
DateValue Dado uma string representando uma data, retorna um um valor data/hora
correspondente
Day Dado um valor data/hora, retorna o dia do ms
Hour Dado um valor data/hora, retorna a hora
sDate Retorna verdadeiro se uma expresso dada representa uma data
Minute Dado um valor data/hora, renorta os minutos
Month Dado um valor data/hora, renorta o ms
Now Retorna a data corrente do sistema como um valor data/hora
Second Dado um valor data/hora, renorta os segundos
Time Retorna o hora de sistema corrente como um valor data/hora
TimeNumber Dado uma hora, minuto e segundo, retorna o valor data/hora
correspondente
Timer Retorna o nmero de segundos que tenham decorrido desde meia-noite
TimeValue Dado uma string representando uma hora, retorna o valor data/hora
correspondente
Today O mesmo da funo Date
Weekday Dado um valor data/hora, retorna um nmero representando um dia da
semana
Year Dado uma valor data/hora, retorna o ano.
Veja os exemplos:
Print DateNumber(1992, 5, 29) Exibe 5/29/92

Print DateValue("May 29, 1992") Exibe 5/29/1992
Print DateNumber(1992-2,5-3,29-12) Exibe 2/17/90
Print TimeNumber(20,40,3) Exibe 8:40:3 PM
PrintTimeValue("20:40") Exibe 8:40 PM
!ICA
Voc pode usar a Funo Timer para cronometrar partes de seu programa. Por
exemplo, para checar quanto tempo necessrio para ler um arquivo grande de um
servidor de arquivo, chame a funo Timer antes e depois de ler o arquivo e subtraia os
dois valores.
Uma vez tendo um valor data/hora, voc pode usar Year, Day, Hour, Minute e
Segundos para extrair suas partes. Voc usa a funo WeekDay para retornar um nmero
que representa o dia da semana.
1C Tra1al2a6,o 9o5 ArRu+*o.
H muitas maneiras de trabalhar com arquivos usando LotusScript. A tabela 1.15 mostra
as funes disponveis.
Tabela 1.15 Funes para arquivos
Co5a6,o. e
Pu6/Qe.
!e.9r+/0o
Close Fecha um ou mais arquivos abertos.
EOF ndica se chegou o fim do arquivo. A condio exata para determinar o fim
do arquivo depende do tipo de arquivo a ser lido.
FileAttr Dado um nmero de arquivo e um flag, retorna o tipo de acesso para um
arquivo, ou o ttulo de arquivo de sistema operacional para o arquivo.
FileCopy Copia um arquivo.
FileDateTime Dado um nome de arquivo, retorna uma string que contem a data e a hora
que o arquivo foi criado ou modificado
FileLen Dado um nome de arquivo, retorna seu tamanho em bytes
FreeFile Retorna um nmero de arquivo que pode ser usado para abr-lo
Get Usado para ler dados de um arquivo randmico ou binrio
GetFileAttr Dado um nome de arquivo ou diretrio, retorna seus atributos
nput # Dado um nmero de arquivo, l dados de um arquivo sequencial
nput Dado um nmero de arquivo, l um nmero especfico de caracteres de
um arquivo seqencial ou binrio
nputB Dado um nmero de arquivo, l um nmero especfico de bytes de um
arquivo sequencial ou binrio
Kill Deleta um arquivo
Line nput# Dado um nmero de arquivo, retorna uma linha de um arquivo sequencial
LOC Dado um nmero de arquivo, retorna a posio do arquivo de ponteiro no
arquivo
Lock Dado um nmero de arquivo, loca o arquivo, ou um registro ou uma
seqncia de bytes de um arquivo. Outro processo no pode atualiz-lo(s).
LOF Dado um nmero de arquivo, retorna o tamanho do arquivo

Name Renomeia um arquivo ou diretrio
Open Abre um arquivo
Print # mprime uma lista de variveis de um arquivo
Put Escreve dados em um arquivo randmico ou binrio
Reset Fecha todos os arquivos abertos
Seek Dado um nmero de arquivo, retorna a posio atual do arquivo de
ponteiro. Tambm, dado um nmero de arquivo e uma posio, posiciona
o ponteiro o ponteiro do arquivo de ponteiro
SetFileAttr Altera os atributos de sistema de arquivo de um arquivo
Spc nsere um nmero especfico de espaos em um comando Print ou Print(#)
Tab Move a posio de impresso para uma coluna especfica
Width # Usado para especificar o tamanho da linha de um arquivo
Write # Escreve uma lista de variveis para um arquivo
Unlock Libera um arquivo locado pelo comando Lock.
LotusScript pode trabalhar com trs tipos de arquivos mostrados na tabela 1.16.
Tabela 1.16 Tipos de Arquivos
T+po ,e ArRu+*o !e.9r+/0o
Seqencial Um arquivo de texto
Randmico Um arquivo com registros formatados
Binrio Um arquivo com uma estrutura de definio de programa
1C.1 O1-e6,o +6for5a/Qe. ,e arRu+*o
Se voc tem o nome de um arquivo, voc pode usar os comandos GetFileAttr,
FileDateTime e FileLen para acessar informaes de arquivo. Use GetFileAttr para checar
os atributos de um arquivo. A funo FileDateTime retorna a data de ltima modificao do
arquivo e FileLen o tamanho do arquivo em bytes. Por exemplo, o cdigo seguinte checa se
um arquivo est ocultado, e se estiver, modifica seus atributos de ocultao:
%Incluce "LSCONST.LSS"
Dim iAttributes As Integer
IAttributes = GetFileAttr("C:\TEMP.TXT")
If (iAttributes And ATTR_HIDDEN) Then
Call SetFIleAttr("C:\TEMP.TXT", ATTR_READONLY)
End If
1C.$ Cr+a6,o e a1r+6,o arRu+*o.
Para abrir um arquivo seqencial, use os comandos FreeFile e Open. Use FreeFile
para alocar um novo nmero de arquivo para o arquivo. Por exemplo, para abrir um novo
arquivo seqencial para gravao:
Dim iFileNumber As Integer
IFileNumber = FreeFile

Open "C:\RESULTS.TXT" For Output As iFileNumber
Voc pode abrir um arquivo seqencial para leitura e gravao. Um vez o arquivo
aberto, voc usa o nmero de arquivo para se referenciar a ele.
Para abrir um arquivo randmico, voc usa os comandos FreeFile e Open, e
especifica as opes randmicas no comando Open. Por exemplo:
Dim iFileNumber As Integer
IFileNumber = FreeFile
Open "C:\RECORDS.DAT" For Random As iFileNumber Len = 80
A funo Len usada para indicar o nmero de bytes por registro no arquivo. Use a
opo Binary no comando Open para abrir um arquivo binrio. Por exemplo:
Dim iFileNumber As Integer
IFileNumber = FreeFile
Open "C:\RECORDS.DAT" For Binary As iFileNumber
Uma vez tendo aberto o arquivo, voc pode usar a funo LOF para checar o
nmero de bytes no arquivo.
1C.3 Le6,o arRu+*o.
Voc pode usar os comandos Line Input # e Input #, ou a funo Input, para ler
dados de um arquivo seqencial aberto. Line Input # l uma linha de dado de um arquivo.
Por exemplo:
Do Until EOF(iFileNumber)
Line Input #iFileNumber, strInputLine
Loop
A funo EOF retorna verdadeiro quando chega no fim do arquivo.
Use Input # para ler dados de uma linha em um arquivo e coloc-la em um conjunto
de variveis. Por exemplo, se seu arquivo tem linhas no formato:
14829, "Chris", "Edwards", 100.00
25674, "Marlene", "Metcalfe", 850.00
Voc pode usar o cdigo abaixo para ler a linha de um arquivo:
Dim lID As Long
Dim strFirstName As String
Dim strSurname As String

Dim curBalance As Currency
. . . Abre um arquivo como no exemplo anterior
Input #iFileNumber, lID, strFirstName, strSurName, curBalance
A funo Input outra opo para ler dados de um arquivo sequencial. Com Input,
voc fornece o nmero de caracteres a ler. Por exemplo, voc poderia ler o nmero de D
do incio de uma linha no arquivo usando o cdigo seguinte:
StrID = Input$(5,iFileNumber)
Quando voc est trabalhando com arquivos binrios ou randmicos, use os
comandos Seek e Get para achar e ler registros de um arquivo.
1C.C E.9re*e6,o e5 arRu+*o.
Voc pode usar Write # para escrever os contedos de um conjunto de variveis
para um arquivo seqencial. Por exemplo, para escrever uma linha em um arquivo aberto:
Dim strFirstName As String
Dim strSurname As String
Dim curBalance As Currency
. . . Abre o arquivo para gravao como no exemplo anterior
. . . Adiciona valores para as variveis
Write #iFileNumber, lID, strFirstName, strSurname, curBalance
Write # automaticamente adiciona caracteres formatados para a linha de gravao
onde os valores estaro separados por vrgulas. Voc tambm pode usar o comando Print #
para escrever dados em um arquivo sequencial. Porm, quando voc usa Print #, voc deve
adicionar seus prprios caracteres formatados. H poucas funes que voc pode usar com
Print # para ajudar a formatar a linha. Use Spc para adicionar um nmero especfico de
espaos na linha e Tab para mover a posio de impresso para uma posio especfica na
linha. Por exemplo:
StrFirstName = "Pat"
StrSurname = "Green"
Print #iFileNumber, "*"; Tab(4); strFirstname; Spc(2); strSuname;"*"
Grava Pat Green
Use Put para escrever dados em arquivos binrios ou randmicos.
Em alguns casos voc pode querer bloquear acesso a um arquivo at seu programa
terminar de us-lo. LotusScript proporciona os comandos Lock e UnLock para voc fazer
isso.
1C.G Pe92a6,o arRu+*o.

Ao terminar de usar um arquivo, voc pode fech-lo usando o comando Close. Se
voc quer fechar todos os arquivos que esto abertos, voc pode usar o comando Reset.
1C.@ E:9lu+6,o arRu+*o.
Para deletar um arquivo use o comando Kill. Use o comando com o nome do arquivo
como se segue:
Kill "C:\TEMP.TXT"
1G Le+-uraSGra*a/0o
Quando voc est usando LotusScript com Notes, voc muitas vezes usa
formulrios Notes para obter informaes de usurios e exibir os resultados. Mas, algumas
vezes, voc precisa usar mtodos diferentes para se comunicar com o usurio. As funes
mostradas na tabela 1.17 oferece a voc algumas alternativas:
Tabela 1.17 Funes de Leitura/Gravao
Co5a6,o. e
Pu6/Qe.
!e.9r+/0o
Beep Alarma
nputBox Mostra uma caixa de dilogo onde o usurio pode entrar com um
valor
MessageBox Mostra uma caixa de mensagem ao usurio
Print Escreve algum texto na barra de status do Notes
Use InputBox para mostrar uma caixa de dilogo com um campo de entrada. O
usurio pode entrar com uma string no campo e clicar OK. Voc pode acessar a string
digitada como se segue:
StrName = InputBox$(" Por favor, entre com su nome ")
Se voc quiser, voc pode espesificar um ttulo para a caixa de dilogo. Por
exemplo:
IOrderQuantity = Cint(InputBox$(Entre com a quantidade requisitada", " Quantidade
requisitada", "10")
Voc pode mostrar valores de seu cdigo usando tanto a funo MessageBox como
Print. Use MessageBox para exibir uma caixa de dilogo contento uma mensagem de sua
escolha. Por exemplo, se voc quer mostrar uma mensagem para confirmar o pedido, voc
pode usar:
MessageBox( "Voc est para confirmar um pedido " & & CStr(iOrderQuantity) & "
Est correto?", MB_YESNO, " Confirmar pedido ")
A constante MB_YESNO uma entre muitas constantes relativas a funo
MessageBox, definida no arquivo LSCONST.LSS. Constantes adicionais esto disponveis

e voc pode usar para adicionar cones e botes a caixa de dilogo. Veja a 'MsgBox
parameters' no arquivo LSCONST.LSS para mais detalhes.
A funo Print exibe uma linha de texto na barra de status do Notes. sto pode ser
bastante interessante se voc est escrevendo um agente LotusScript que pode levar
algum tempo para executar, porque isto pode lhe dar uma forma para manter o usurio
informado sobre o progresso do agente. Por exemplo, em um agente que processa
documentos em um banco de dados, voc pode usar:
Print " Documento processando " & CStr(iCurDoc) & " de "& CStr(iTotalDocs) &
" . . .
O cdigo fica dentro do loop de processamento principal mostrando uma constante
atualizao da mensagem contida na barra de status.
1@ Pu6/Qe. 7-e57-+9a.
As funes matemticas do LotusScript so mostradas na tabela 1.18
Tabela 1.18 funes matemticas
Co5a6,o. e
Pu6/Qe.
!e.9r+/0o
Abs Retorna o valor absoluto de um nmero
Acos Dado um nmero entre 1 e 1, retorna seu arco coseno em
radianos
Asin Dado um nmero entre 1 e 1, retorna seu arco seno em radianos
Atn Dado um nmero, retorna sua arco tangente em radianos
Atn2 Dado as coordenadas de um ponto no plano cartesiano, retorna o
ngulo em radianos
Cos Dado um ngulo em radianos, retorna seu coseno
Exp Dado um nmero, retorna o exponencial de um nmero
Fix Retorna a parte inteira de um nmero
Fraction Retorna a parte fracional de um nmero
nt Retorna o nmero inteiro que menor ou igual ao fornecido
Log Retorna o logartmo natural de um nmero
Round Arredonda um nmero
Sgn Retorna 1, 0 ou 1 se o nmero for negativo, zero ou positivo
Sin Dado um nmero em radianos, retorna seu seno
Sqr Retorna a raiz quadrada de um nmero
Tan Dado um ngulo em radianos, retorna sua tangente
1@.1 O9ul-a6,o Erro. e5 Te5po ,e E:e9u/0o
LotusScript detecta dois tipos de erros:
Erros de compilao;
Erros em tempo de execuo.
Erros de compilao so devido erros em seu cdigo de LotusScript. Voc no pode
executar seu cdigo at consertar todos os erros de compilao detectados. Ns olharemos
o Ambiente de Desenvolvilmento ntegrado do Notes (DE) no prximo captulo e verificar

algumas das caractersticas que ajudam a reduzir o nmero de erros de compilao que
voc deve consertar.
Erros em tempo de execuo so erros que ocorrem quando o cdigo est em
execuo. Por exemplo, erro ocorre quando o script tenta abrir um arquivo que foi deletado.
LotusScript identifica muitos erros em tempo de execuo e atribui a cada um um nmero
e uma mensagem de erro descrevendo o erro. Voc pode adicionar cdigo aos seus
programas para proporcionar ocultao especial para todos os erros. Voc pode definir seus
prprios erros se quiser e atribuir um nmero de erro e uma mensagem. A tabela 1.19
mostra as funes que esto relacionadas com ocultao de erros.
Tabela 1.19 Funes de ocultao de erros
Co5a6,o. e
Pu6/Qe.
!e.9r+/0o
Erl Retorna o nmero da linha do erro mais recente
Err Retorna o nmero do erro dependendo como ele ocorra
Error Retorna uma mensagem do erro dependendo como ele ocorra
On Error Desvia a execuo do cdigo para uma funo quando ocorre um erro
Resume Determina onde o programa recomea a execuo de pois de um erro
Alm de detectar um erro em tempo de execuo, o LotusScript armazena as
seguintes informaes:
O nmero da linha onde ocorreu o erro;
O nmero do erro;
A mensagem de erro.
Voc pode usar a funo Erl para obter o nmero da linha onde ocorreu o erro mais recente.
A funo Err retorna o nmero de erro mais recente e Err$ a mensagem de erro associada.
Uma vez o LotusScript tendo armazenado estas informaes, ele procura por um
comando On Error, no procedimento corrente, que possa ocultar o erro. Se ele no ach-lo,
o LotusScript mostra sua prpria mensagem de erro associada ao erro que parou a
execuo do script. Se um comando On Error for achada, LotusScript transfere o controle
para ele.
O comando On Error pode tambm fazer o seguinte:
gnorar o erro. Se voc especificar On Error Resume Next, ignorado a linha
onde ocorreu o erro e executada a linha logo depois;
Especifica uma Label para executar seu cdigo. Se voc especificar On Error
Go To seguido do nome de uma label, o LotusScript transfere o controle para o
cdigo na label. O cdigo deve ocultar o erro. Use o comando Resume para
reiniciar o script.
O exemplo seguinte mostra como definir seu prprio erro e criar um cdigo que
oculte o erro. O exemplo Sub define um erro com nmero 600 e inicializa a rotina de
ocultao do erro que mostra o nmero do erro e o nmero da linha onde ocorreu o erro. O
controle ento retornado para a linha seguinte a que ocorreu o erro forado:
Sub ErrorTest

Const ERR_MY_ERROR = 600 Define um erro
On Error ERR_MY_ERROR GoTo lblHandleError Define o comando que vai
detectar este erro
Error ERR_MY_ERROR Fora o erro
Print "Finished" Retorna a execuo para este ponto
Exit Sub
LblHandleError:
Print " Nmero do erro "; Err; " ocorreu na linha " ; Erl
Resume Next
End Sub.

CA#8TULO $ - USAN!O O LOTUS SCRI#T NO LOTUS NOTES
Apre6,a 9o5o u.ar o A51+e6-e ,e !e.e6*ol*+5e6-o I6-egra,o ,o No-e.
para u.ar o Lo-u.S9r+p-.
Voc usa o Ambiente de Desenvolvimento ntegrado para entrar, compilar e depurar
seus programas do LotusScript.
Apre6,a 9o5o u.ar o e,+-or S9r+p-.
O editor Script permite a voc entrar e atualizar scripts. Ele entende a sintaxe do
LotusScript e lhe ajuda formatando automaticamente seu cdigo e checando erros de
sintaxe medida que voc digita.
Apre6,a 9o5o u.ar o ,epura,or ,o Lo-u.S9r+p-.
O depurador do LotusScript uma poderosa ferramenta que voc pode usar para
examinar seus programas LotusScript que esto rodando. Voc pode percorrer seu cdigo
uma linha por vez, se necessrio, bem como checar e atualizar contedos de variveis a
qualquer momento.
%eFa a. -=96+9a. ,e ,epura/0o ,o Lo-u.S9r+p-.
Examinamos algumas tcnicas teis que voc pode utilizar quando est testando e
depurando programas LotusScript.
E6-e6,e6,o 9o5o a9e..ar 1+1l+o-e9a. ,e l+6k. ,+6T5+9o. 6o LotusScript
Voc pode extender o poder do LotusScript chamando as funes dentro de
bibliotecas de links dinmicos. Ns olharemos como fazer isto.
Apre6,a 9o5o +69lu+r e:-e6.Qe. Lo-u.S9r+p- e5 .eu. .9r+p-..
Extenses de LotusScript so adicionais as caractersticas bsicas do LotusScript.
Captulo 1, "LotusScript Bsico, introduziu voc ao LotusScript e explicou algumas
de suas caracterstica bsicas e sintaxe. Neste captulo voc usar estas caractersticas e
aprende como usar o LotusScript com o Notes.

O LotusScript estende a interface de programao do Notes alm de @functions e
@commands. Voc usa o LotusScript para escrever scripts para executar vrias funes e
tarefas no Notes. Voc adiciona scripts vrios objetos no Notes, dependendo do que voc
necessita alcanar. Por exemplo voc pode usar o LotusScript para criar um agente para
atualizar documentos de forma programada. O LotusScript proporciona algumas
capacidades que as frmulas do Notes no tm, como a habilidade de manipular bancos de
dados ACL do Notes, e a habilidade de imprimir uma lista de todos os bancos de dados que
residem em um servidor ou disco rgido local. Voc entra com o cdigo LotusScript dentro
do Notes usando o Ambiente de Desenvolvimento ntegrado do Notes(DE). O Notes
contm um compilador LotusScript integral que traduz seu cdigo em um LotusScript
executvel. Neste captulo voc ir:
Aprender como usar o Ambiente de Desenvolvimento ntegrado do Notes para
usar o LotusScript;
Aprender como usar o editor Script;
Aprender como usar o depurador do LotusScript;
Ver algumas tcnicas de depurao do LotusScript;
Entender como acessar Bibliotecas de Links Dinmicos (DLL) a partir do
LotusScript.
Aprender como incluir extenses de LotusScript no seu script
1 A51+e6-e ,e !e.e6*ol*+5e6-o I6-egra,o ,o No-e.
O Ambiente de Desenvolvimento ntegrado no Notes (DE) permite voc criar
formulrios, vises e agentes de maneira consistente. No entanto, para cada formulrio,
viso ou agente que voc crie, voc utilizar um diferente DE. Apesar de cada DE ser
diferente, eles compartilham muitas caractersticas comuns, tais como o Editor Script e
caractersticas do Depurador. Descreveremos o DE para Formulrios, mas o Editor Script
e o Depurador trabalham de forma similar nos outros DE's. Os DE's de Formulrios so
mostrados conforme a Figura 2.1.
Figura 2.1

Aqui est um exemplo de Formulrios IDE.
A tela est dividida em trs reas ou janelas.
1.1 4rea ,e LaEou- ,o Por5ul7r+o
A janela no lado esquerdo superior da tela a Janela de Layout do Formulrio (Form
Layout Pane). Voc usa esta rea para criar o layout de seu formulrio.
1.$ #a+6el ,e A/0o
O painel no lado direito superior da tela a Janela de Ao (Action Pane). Voc
pode usar esta janela para definir as aes que esto associadas ao formulrio. Por
default, a Janela de Ao no visvel quando voc abre o DE pela primeira vez. Para
mostrar a Janela de Ao, selecione menu Exibir/Painel de Ao utilizando a barra de menu
do Notes, ou arraste a barra vertical da borda direita da tela para a esquerda at que a
janela de Ao esteja do tamanho que voc deseja. Finalmente, se voc um f do
"Smartcon voc pode clicar as janelas Exibir /Mostrar/Hide Action usando o Smartcon.
Para esconder a janela de Ao, voc pode tanto selecionar as janelas Exibir/Painel
de Ao novamente para desabilitar o menu de opes como arrastar a barra vertical para o
lado direito da tela ou pode clicar no boto Exibir/Mostrar/Ocultar Painel de Ao usando o
Smartcon.

1.3 #a+6el ,e E.-ru-ura
O Painel de Estrutura o painel mostrada na parte inferior da tela. nesta rea que
voc digita seu cdigo do LotusScript. Por default, o Painel de Estrutura visvel. Se voc
deseja ocult-la, selecione as janelas Exibir/Painel de Estrutura utilizando a barra de menu
do Notes ou arraste a barra horizontal (aquela que separa o Painel de Estrutura do restante
da janela) para baixo da parte inferior da tela.
O Painel de Estrutura consiste de um nmero de componentes que voc usa para
digitar o seu cdigo do LotusScript. Vamos ver cada um por vez.
1.3.1 Ca+:a ,e !e.e62o
A Caixa de Desenho, mostrada na figura 2.2, uma caixa "drop-down que voc usa
para selecionar o objeto ou a ao que voc deseja programar.
Figura 2.2
A Caixa de Definio mostra o nome do objeto ou ao que voc est programando.
Por exemplo, a Figura 2.2 mostra que o objeto formulrio est constantemente
sendo programado para exibir uma mensagem no seu ttulo. Voc pode usar a Caixa de
Definio para escolher rapidamente outro objeto ou ao. Para programar um objeto
diferente, clique a seta da Caixa de Definio. Ser exibido uma lista de aes ou objetos
que voc pode programar como mostrado na Figura 2.3. Ento, selecione o objeto ou ao
que voc deseja programar.
Figura 2.3

Usando a Caixa de Definio para selecionar um objeto para programar.
1.3.$ Ca+:a ,e E*e6-o.
O Painel de Estrutura contm uma segunda caixa "drop-down, a Caixa de Evento,
como mostrado na Figura 2.4.
Fig. 2.4
A Caixa de Eventos mostra o nome do evento que voc est programando.
A Caixa de Evento mostra tudo dos eventos que esto associados com o objeto ou
ao correntemente selecionados. A Caixa de Evento mostra o evento correntemente sendo
programado. Por exemplo, na Figura 2.4, o evento que est sendo programado o evento
"Ttulo da Janela no formulrio. Para programar um evento diferente, simplesmente
selecione-o da lista contida na Caixa de Evento.
Note que se o objeto ou ao selecionados no possuam eventos associados com
eles, tais como uma das aes de formulrios padres, a Caixa de Eventos no mostrada.
A Figura 2.5 mostra a aparncia do Painel de Estrututa quando a ao do documento de
edio padro selecionada.
Figura 2.5

Este a aparncia do Painel de Estrututa quando uma ao de formulrio padro
selecionada.
NOTA
Se voc adicionar suas prprias funes e "subs" LotusScript um formulrio, eles
sero mostrados na Caixa de Evento quando voc selecionar os objetos Globais para o
formulrio.
1.3.3 Ru6 Ra,+o (u--o6
Dependendo do tipo do objeto que voc selecionou na Caixa de Definio, voc
pode usar o "Run Radio Button(Figura 2.6) para selecionar o tipo de programao para o
objeto (veja Figura 2.6). Voc possui trs escolhas:
Ao(es) Simple(s)
Frmula
Script
Figura 2.6

O Run Radio buttons deixa-o selecionar LotusScript como uma opo de
programao
1.3.C O S9r+p- (row.er
Depois que voc selecionar o boto "Script radio voc poder mostrar o Script
Browser atravs da caixa de visualizao do Browser (Show Browser Check Box). O Script
Browser mostrado na Figura 2.7.
Figura 2.7
Este o Script Browser.
O browser permite-lhe mostrar o seguinte:
Uma lista de funes e caractersticas disponveis no LotusScript.
Todas as classes do Notes e seus mtodos, propriedades e eventos associados
(falaremos de todos esses assuntos no prximo captulo).
Todas as classes "OLE2 e "ActuveX que esto disponveis para voc.
Voc seleciona o que voc deseja mostrar usando "browser combo box. Voc pode
selecionar o seguinte:
Linguagem LotusScript
Classes do Notes
Constantes do Notes
Funes e subs do Notes

Variveis do Notes
Classes OLE2
Por exemplo, se voc deseja ver quais as funes que o LotusScript tem disponveis
para tratar erros, siga os seguintes passos:
1. Se a opo ainda no estiver selecionada, selecione Linguagem LotusScript no
browser combo box. Uma lista de categorias de funes ser mostrada;
2. Clique na seta prximo Tratamento de Erros (Error Handling). Os nomes e
sintaxe das funes de Tratamento de Erros do LotusScript sero mostradas
(veja Figura 2.8).
Fig. 2.8
As funes de Tratamento de Erros (Error-handling functions) do LotusScript
mostradas no Script Browser.
Se voc deseja adicionar um item do browser ao cdigo, (tal como um nome de
funo), siga os seguintes passos:
1. Posicione o cursor no cdigo do LotusScript aonde voc deseja inserir o item;
2. No Script Browser, clique duas vezes no item que deseja inserir. O item
inserido dentro do cdigo aonde voc colocou o cursor.
O browser pode ser muito til quando voc deseja fazer o seguinte:
Checar a disponibilidade de uma funo especfica;

Checar parmetros para uma funo;
Checar as propriedades, mtodos e eventos de uma classe Notes, OLE2 ou
ActiveX.
1.3.G O E,+-or S9r+p-
Voc vai digitar seu cdigo de LotusScript na rea de Painel de Estrutura chamada
o Editor Script. O Editor Script entende a sintaxe do LotusScript e lhe ajuda revisando o
script assim que voc digita. O Editor Script:
Checa erros de sintaxe assim que voc entra no Script;
Automaticamente torna maisculas palavras chaves do LotusScript;
Formata o script indentando automaticamente blocos do cdigo;
Completa certos tipos de "statements, do tipo "f...Then e "For...Next loops;
Fornece cores para mostrar diferentes tipos de expresses no seu script.
Veremos mais detalhadamente como usar o Editor Script posteriormente neste
captulo.
1.3.@ Ca+:a ,e Erro.
A Caixa de Erros (Error combo box) usada para mostrar erros de sintaxe e
compilao. Por exemplo, Figura 2.9 mostra como um simples erro de sintaxe detectado e
apresentado.
Fig. 2.9

Como um erro de sintaxe mostrado.
$ U.a6,o o E,+-or S9r+p-
Se voc pode usar um editor de texto, voc pode usar o Editor Script! Ele trabalha
exatamente igual maioria dos editores de texto e contm as combinaes familiares de
teclas para mover o cursor e para cortar, copiar e colar textos. Por exemplo:
"Home move o cursor para o incio da linha corrente.
"End move o cursor para o fim da linha corrente.
"Ctrl+C copia o texto selecionado
"Ctrl+V cola o texto selecionado
CUI!A!O
O Editor Script no tem a funo "Undo", ento tenha cuidado quando
estiver editando algo.
$.1 Co6f+gura6,o o E,+-or S9r+p-
Novo para o Editor Script apartir da verso 4.5 do Notes sua habilidade para
escolher a fonte usada pelo mesmo e para mostrar diferentes tipos de "statements em
cores diferentes. Voc pode escolher a cor para:
dentificadores;

Palavras chave;
Comentrios;
Diretivas;
Erros.
Para definir fontes e cores, siga os seguintes passos:
1. "Right-click no Editor Script. Um menu "Pop-up ser mostrado.
2. Selecione propriedades na janela de Desenho. As propriedades da janela de
Desenho so mostradas nas propriedades "nfoBox, como mostrado na Figura
2.10.
Fig. 2.10
Voc usa as Propriedades "InfoBox" da Painel de Estrutura para configurar o Editor
Script.
1. Selecione o "Script radio buttom.
2. Selecione o tipo e tamanho da fonte que voc deseja usar.
3. Escolha uma cor para cada tipo de expresso.
$.$ !a6,o e6-ra,a e5 u5 9?,+go

Siga os seguintes passos para dar entrada em um cdigo:
1. Selecione o objeto ou ao com os quais voc deseja trabalhar;
2. Selecione o evento ao qual o cdigo ser anexado;
3. Digite o cdigo no Editor Script.
Voc pode selecionar o objeto ou a ao para serem programados de diferentes
formas. Por exemplo, para selecionar um objeto voc pode escolher uma das seguintes
opes:
Selecione o nome do objeto utilizando a "drop-down list na caixa de definio;
Clique no objeto na Janela de Layout de formulrio.
Para selecionar uma ao para programar voc pode escolher uma das seguintes
opes:
Selecione o nome da ao utilizando a "drop-down list na caixa de definio;
Clique na ao na Janela de ao.
O Editor Script checa automaticamente a sintaxe de seus cdigos assim que voc
entra com eles. Por exemplo, na hora que voc comete um erro de digitao, o Editor Script
lhe d conhecimento mostrando o erro na caixa de erros. Se voc tiver configurado as cores
para o Editor Script, o erro sublinhado na cor que voc escolheu para erros. Palavras-
chave, identificadores, comentrios e diretivas tambm sero sublinhados na cor escolhida.
O cdigo que voc d entrada utilizando o Editor Script armazenado no mdulo do
LotusScript. O Notes armazena um mdulo separado para cada formulrio, viso e agente
que voc cria. Alguns dos nomes listados na Caixa de Definio referem-se mais a partes
do mdulo LotusScript que a objetos e aes. As partes do que voc usa so:
A parte (Options) da seo (Globals);
A parte (Declaration) da seo (Globals).
Voc usa parte Options para definir opes que afetam o cdigo LotusScript que
voc est digitando. Por exemplo, se voc deseja usar a expresso Option Declare para
assegurar que todos os nomes variveis esto declarados, voc os adiciona na parte

Options da seo Globals. A seo Declarations onde voc define os tipos de dados e
variveis usados pelo seu mdulo.
O Editor Script tenta completar blocos de cdigos e os move para a posio correta.
Por exemplo, se voc comea uma definio de tipo em uma nova linha do seu Script
escrevendo TEpe ETEpeNa5e e pressionando Enter, o Editor Script automaticamente o
move para a parte Declaration e adiciona a expresso End Type. O Editor Script
automaticamente move os blocos de cdigos seguintes ao local correto.
Type Entre com TU#E seguido do nome e pressione Enter. O Editor Script
cria um bloco Type...End Type vazio e o adiciona ao final da seo Declarations;
Dim Se voc digitar uma expresso Dim em qualquer lugar fora de um sub ou
funo, o Editor Scritpt move a expresso Dim para o fim da seo Declaration;
Function Digite Pu69-+o6 seguido do nome da funo e pressione Enter. O
Editor Script cria um bloco Function...End Function vazio e adiciona o nome da
funo Caixa de Evento;
Sub Digite Su1 seguido do nome do Sub e pressione Enter. O Editor Script
cria um bloco Sub...End Sub vazio e adiciona o nome do Sub Caixa de Evento;
Option Digite uma das expresses Option do LotusScript, tais como Option
Declare ou Option Base e o Editor Script move a expresso para o fim da seo
Options;
Class - Se voc comea uma definio de classe digitando Class seguido por
um nome de classe e pressionando Enter, o Editor Script move a definio para
a seo Declaration e adiciona um End Class statement para voc;
Property Tanto para Property Set como para Property Get, o Editor Script
automaticamente cria um novo bloco de propriedades e adiciona o seu nome
para a Caixa de Evento.
O Editor Scritpt tambm completa os seguintes blocos de cdigos para voc:
For loop. Digite na primeira linha de um "loop e pressione Enter. A
terminao "Next automaticamente adicionada para voc;
Forall loop. A terminao End Forall adicionada quando voc pressiona
Enter aps a digitao da primeira linha;
E:pre..Qe. f O End If adicionado para voc;

E:pre..Qe. Select - O End Select automaticamente adicionado.
Do While loop. A terminao "Loop statement adicionada;
S-a-5e6-. While A terminao Wend adicionada.
$.3 Co5p+la6,o u5 S9r+p-
O Editor Script automaticamente compila seu LotusScript. Ele o faz nos seguintes
momentos:
Assim que voc d entrada no Script, o Editor Script parcialmente compila o
script. assim que ele detecta erros e sabe quando completar blocos de
cdigos;
Quando voc salva o script ou quando voc clica fora do Editor Script, o Editor
Script compila o mdulo inteiro do LotusScript. Ele encontra aqueles erros que
no pode detectar durante compilaes parciais. Por exemplo, este o
momento que pode ser detectada uma chamada para uma funo ou sub no
existente.
Voc no pode salvar um script que contm erros de compilao, voc deve corrigir
todos antes de salvar o script.
!ICA
Se voc quer salvar um script contendo erros voc pode colocar diretivas
"%REM" e "%END REM" em volta da parte do script que contm erros. Este
comentrio oculta o erro e permite-lhe salvar o script.
3 U.a6,o o Lo-u.S9r+p- 9o5 o No-e.
O Notes usa um modelo de programao orientado a objeto e a evento. A nterface
entre o LotusScript e o Notes atravs de um conjunto de classes de objeto, as classes de
objetos Notes. Objetos de cada classe geram e respondem a diferentes eventos. Por
exemplo, o objeto boto pode responder ao ser pressionado, ou o objeto campo pode
responder com o cursor sendo posicionado no mesmo. Quando voc programa usando o
LotusScript no Notes, voc cria um LotusScript que responde a esses eventos.
Voc pode anexar o LotusScript a eventos nos seguintes tipos de objetos:

Botes;
Aes;
Pontos de Acesso;
Campos;
Formulrios;
Vises e Pastas;
Banco de Dados;
Agentes.
Para cada objeto, voc precisa conhecer os eventos aos quais ele (objeto)
responde.
3.1 (o-Qe." A/Qe. e K#o6-o. ,e A9e..oL
Botes, aes e Pontos de Acesso respondem aos eventos mostrados na tabela 2.1.
O evento Click o que voc vai usar com maior freqncia. Ele gerado sempre que boto,
ao ou ponto de acesso so clicados. O evento ObjectExecute criado para que uma
aplicao de servidor OLE2 possa usar o NotesFlow para executar aes do Notes.
Tabela 2.1 Eventos Boto, Ao e Ponto de Acesso
E*e6-o Tr+gger
Click Quando selecionado boto, ao ou ponto de acesso
ObjectExecute Quando a ao ativada por um servidor OLE2 que usa
FX/NotesFlow para executar aes.

O exemplo seguinte mostra como adicionar um boto e escrever LotusScript para
tratar o evento "Click.
1. Crie um novo banco de dados vazio;

2. Crie um novo formulrio no banco de dados. A estrutura do formulrio
mostrada;
3. Selecione "Criar - Ponto de Acesso - Boto. Um boto adicionado ao
formulrio e a caixa de informao com suas propriedades so mostradas;
4. D um ttulo ao boto digitando "Ola turma no campo "Rtulo do boto;
5. Clique na janela do editor de Script;
6. Selecione o "Script radio buttom. Pelo padro (default), a posio frmula
selecionada para um novo boto;
7. Adicione o seguinte cdigo ao evento "Click.
Messagebox "Ol Turma !", 0, "Boto de teste".
8. Selecione a opo "Estrututa Visualizar no Notes. Voc solicitado a entrar
com o nome para o novo formulrio;
9. Entre com "Te.-L como o nome do formulrio e clique OK. O novo formulrio
salvo e mostrado.
10. Clique o boto "Ol Turma. Sua caixa de mensagem "Ol Turma mostrada.
3.$ Ca5po.
Voc pode anexar o LotusScript aos eventos de campos mostrados na tabela 2.2.
Tabela 2.2 Eventos de campos
E*e6-o Tr+gger
Entering Quando um usurio coloca o curso no campo.
Exiting Quando o cursor movido para fora do campo.

O evento Entering til para responder ao usurio colocando o cursor no campo.
Por exemplo, assim que um usurio coloca o cursor em um campo, voc pode colocar
alguns dados dentro do campo ou limpar seu contedo. Voc pode usar o evento Exiting
para ver se um campo foi corretamente preenchido assim que o usurio move o cursor para
fora do campo, ao invs de esperar at que o documento seja salvo. Os exemplos seguintes
mostram como usar o Existing para ajudar a validar o campo:
1. Crie um novo banco de dados vazio;
2. Crie um novo formulrio no banco de dados. A estrutura do formulrio
mostrado;
3. Selecione "Create, "Field. Um campo adicionado ao formulrio e sua caixa de
propriedades mostradas;
4. Use a caixa para dar ao campo o nome "ProductD.;
5. Clique na janela do Editor Script;
6. Na caixa de Eventos, selecione o evento "Exiting;
7. D entrada no seguinte script.
Sub Exiting (Source as Field)
Dim uiWorkspace As New NotesUIWorkspace (cria uma +rea ,e tra)alo)
Dim uiDoc As NotesUIDocument (cria um o)-eto ,o tipo ,ocume#to atual)
Dim strProductId As String (cria um campo)
Set uiDoc = uiWorkspace. CurrentDocument (atri)ui o ,ocume#to atual ao o)-eto)
StrProductId = uiDoc.FieldGetText ("ProductID") (atri)ui o valor ,o campo ,o
o)-eto a vari+vel)
If Len(strProductID) <> 5 Then

Messagebox "Please enter a five character product ID", 0, "Re-enter Product
ID"
Call uiDoc.GotoField ("ProductID") (coloca o cursor #o campo .ro,uctID)
End If
Call uiDoc.FieldSetText ("ProductID", strProductID) (atri)ui o valor ,a vari+vel
ao campo)
End Sub
8. Salve e teste o formulrio. Coloque o cursor no campo "ProductD and pressione
"tabpara mover para o campo "ProductName.
3.3 Por5ul7r+o.
O objeto formulrio (NotesUDocument) responde aos eventos listados na tabela
2.3. O evento QueryOpen ocorre quando uma solicitao foi feita para abrir um documento.
Voc pode us-lo para estabelecer valores padres (default) no documento, por exemplo,
procurando um conjunto de valores de um banco de dados externo. Voc pode tambm
usar QueryOpen para ver se voc deve permitir que um documento seja aberto. Por
exemplo, voc pode ver quem est tentando abrir o documento ou seu status atual antes de
permitir que ele seja aberto. mediatamente aps a abertura do documento o evento
PostOpen ocorre. PostOpen conserva um histrico de quem leu o documento adicionando o
nome das pessoas uma lista cada vez que um evento PostOpen ocorre.
Tabela 2.3 Eventos de Formulrios
E*e6-o Tr+gger
PostModeChange Aps o formulrio ser alterado para ou a partir do modo de edio.
PostOpen Aps o formulrio ser aberto.
PostRecalc Aps o formulrio ter sido atualizado.
QueryClose Antes do formulrio ser fechado.
QueryModeChange Antes do formulrio ser alterado para ou a partir do modo de
edio.
QueryOpen Antes do formulrio ser aberto.
QuerySave Antes do formulrio ser salvo.

Quando um documento aberto, os eventos QueryModeChange e
PostModeChange permitem-lhe responder ao documento que est sendo mudado para e a
partir do modo de edio. QueryModeChange ocorre imediatamente antes do documento
alterar de um modo para outro (tanto de edio para leitura como de leitura para edio).
PostModeChange ocorre imediatamente aps. Voc pode usar QueryModeChange para
decidir se um usurio deve editar um documento. Por exemplo, se um documento em um
sistema "Workflow foi marcado como um documento aprovado, QueryModeChange pode
suspender sua edio.
O evento PostRecalc ocorre aps todas as frmulas em um documento terem sido
recalculadas. QueryClose e QuerySave permite-lhe responder a uma requisio de usurio
para fechar ou salvar um documento. Por exemplo, voc pode usar QuerySave para checar
que todos os campos em um documento foram preenchidos corretamente.
O exemplo seguinte mostra como usar o evento PostOpen para manter uma lista das
pessoas que editaram um documento:
1. Crie um novo banco de dados vazio;
2. Crie um novo formulrio no banco de dados. A estrutura do formulrio
mostrada;
3. Selecione "Criar Campo. Um campo adicionado ao formulrio e sua caixa de
propriedade mostrada;
4. Use a caixa para dar ao campo o nome DocEditors;
5. Clique na janela do editor de script;
6. Na caixa de Definio, selecione "Sem Ttulo (Formulrio), ento selecione
Postmodechange na caixa de eventos;
7. D entrada os seguintes cdigos:
Sub Postmodechange (Source As Notesuidocument)
Dim s As New NotesSession*
If Source. EditMode Then ( Veri$ica se o ,ocume#to est+ em mo,o ,e e,i/0o)
Call Source.FieldAppendText ("DocEditors", s.CommonUserName & Chr(10))
(A,icio#a o #ome comum ,o usu+rio corre#te ao campo Doc&,itors. )

End If
End Sub
*Representa o ambiente do script corrente, proporcionando acesso a variveis de
ambiente, "address books", informaes a respeito do usurio corrente e sobre a
plataforma Notes corrente e a sua verso.
8. Salve o formulrio;
9. Crie um documento usando o formulrio e salve-o;
10. Edite o documento. Seu nome automaticamente adicionado ao campo
"DocEditors cada vez que voc edita o documento.
3.C %+.Qe. e Pol,er.
O objeto viso e pasta (veja a classe NotesUView no Captulo 3) novo e surgiu na
verso 4.5. do Notes. Este objeto responde aos eventos listados na tabela 2.4. O
QueryOpen ocorre imediatamente antes de uma viso ser aberta. O PostOpen ocorre
imediatamente aps uma viso ter sido aberta. Quando um usurio tenta abrir um
documento mostrado na viso, o evento QueryOpenDocument ocorre. Voc pode usar este
evento para ver se um documento deve ser aberto, ou para solicitar ao usurio que d
entrada em algumas informaes antes que ele possa ver o documento.
Tabela 2.4 Evento Viso e Folder
E*e6-o Tr+gger
PostDragDrop Aps uma operao "arrastar e soltar (somente vises de calendrio).
PostOpen Aps a viso ter sido aberta.
PostPaste Aps um documento ter sido colado dentro de uma viso.
QueryAddToFolder Antes de um documento ser adicionado a um pasta.
QueryClose Antes da viso ser fechada.
QueryDragDrop Antes de uma operao "arrastar e soltar (somente vises de
calendrio).
QueryOpen Antes da viso ser aberta.
QueryOpenDocument Antes de um documento ser aberto a partir da viso.
QueryPaste Antes de um documento ser colado dentro de uma viso.
QueryRecalc Antes da viso ser recalculada.

RegionDoubleClick Aps uma regio ter recebido um duplo-clique
Existem dois eventos que voc pode usar para processar documentos que so
colados em uma viso. QueryPaste ocorre imediatamente antes de um documento ou
conjunto de documentos serem colados dentro de uma viso; PostPaste ocorre
imediatamente aps. Voc pode usar PostPaste para disparar processamento especfico de
documentos que tenham sido colados na viso. Por exemplo, voc pode armazenar a data
e a hora que os documentos foram colados na viso. O evento QueryAddToFolder ocorre
imediatamente antes de um documento ser copiado para uma pasta. Voc pode us-lo para
checar se o documento pode ser adicionado a uma pasta ou para solicitar ao usurio que
entre com algumas informaes sobre o documento. QueryRecalc ocorre imediatamente
antes de uma viso ser recalculada e lhe d a oportunidade de parar o reclculo. O evento
QueryClose ocorre imediatamente antes da viso ser fechada.
Existem trs eventos que so designados para uso com viso do tipo calendrio.
QueryDragDrop e PostDragDrop ocorre imediatamente antes e imediatamente aps a uma
operao "arrastar e soltar. Voc pode us-los para decidir se permite que a operao
"arrastar e soltar continue ou para realizar algum processamento aps a operao ter sido
completada. RegionDoubleClick ocorre quando um usurio d um duplo-clique em uma
regio de dados em uma viso de calendrio.
Os passos seguintes mostram como usar o evento PostPaste para armazenar a data
e a hora que o documento colado dentro de um folder:
1. Crie um novo banco de dados de discusso a partir do modelo "Discussion (R4);
2. Selecione "Estrutura Pasta e abra a pasta "Meus Favoritos no modo estrutura;
3. Selecione o evento PostPaste na caixa de evento;
4. D entrada no cdigo seguinte:
Sub Postpaste (Source As Notesuiview) (source represe#ta a vis0o corre#te)
Dim iDoc As Integer
Dim doc As NotesDocument (classe 1ue represe#ta um ,ocume#to #o BD)
For iDoc = 1 To Source.Documents.Count (percorre os ,ocume#tos ,a cole/0o)
Set doc = Source.Documents.GetNthDocument (iDoc) (retor#a um ,ocume#to #a
posi/0o 2i,oc3)

Doc.Data = Now
Call doc.Save(True, True) (salva mu,a#/as $eitas em um ,ocume#to)
Next
End Sub
5. Salve a pasta;
6. Crie um novo documento Tpico Principal e salve-o;
7. Selecione-o e copie-o para a rea de transferncia;
8. Mude para a pasta "Minhas Favoritas e cole o documento.
9. Cheque as propriedades para o documento. A data e a hora que voc colou o
documento so armazenadas em um novo campo chamado "Data.
3.G (a69o. ,e !a,o.
Bancos de Dados (veja a classe NotesUIDatabase no Captulo 3) respondem a seis
eventos mostrados na tabela 2.5. O evento PostOpen ocorre depois do banco de dados ser
aberto.
NOTA
O evento PostOpen para banco de dados ocorre aps os eventos QueryOpen e
PostOpen para abertura de viso.
Tabela 2.5 Evento Banco de Dados
E*e6-o O e*e6-o = ,+.para,o...
PostDocumentDelete Aps um documento ter sido excludo do banco de dados usando
"Cortar ou "Limpar.
PostOpen Aps o banco de dados ter sido aberta.
QueryClose Antes do Banco de Dados ser fechado.
QueryDocumentDelete Antes de um documento ou grupo de documentos ser excludo do

banco de dados.
QueryDocumentUndelete Antes de um documento ou grupo de documentos ser recuperado .
O evento QueryDocumentDelete ocorre imediatamente antes de um ou mais
documentos serem excludos do banco de dados. PostDocumentDelete ocorre
imediatamente aps os documentos terem sido excludos. O evento
QueryDocumentUndelete ocorre quando um documento ou conjunto de documentos (que
tenham sido marcados para excluso) so desmarcados. QueryClose ocorre
imediatamente antes do banco de dados ter sido fechado.
Os passos seguintes mostram como usar a mensagem PostDocumentDelete para
enviar correspondncia automaticamente para algum quando documentos so apagados
de um banco de dados:
1. Crie um novo banco de dados de discusso a partir do "Discussion (R4)
template;
2. Selecione "Estrutura - Outros" e abra o Script do Banco de Dados;
3. Selecione o evento PostDocumentDelete na caixa de evento;
4. D entrada no cdigo seguinte:

Sub Postdocumentdelete (Source As Notesuidatabase)
Dim db As NotesDatabase
Dim doc As NotesDocument
Set db = Source.Database
Set doc = New NotesDocument (db)
doc.SaveMessageOnSend = False (#0o salva a me#sa4em ,e e#vio)
doc.Form = "Memo"
doc.SendTo = "Marcio Nogueira"
doc.Subject = CStr(Source.Documents.Count) & " documents deleted at "

& CStr(Now) & ".
"Call doc.Send( True ) (e#via a me#sa4em)
End Sub
5. Salve o script;
6. Feche o banco de dados e reabra-o;
7. Crie um novo documento Tpico Principal e salve-o;
8. Mude para a viso "Todos os Documentos, selecione o documento que voc
acabou de criar e marque-o para excluso;
9. Feche o banco de dados e exclua o documento criado recentemente;
10. Uma mensagem de correio automaticamente criada e enviada;
3.G Age6-e.
Um agente um procedimento de usurio que voc pode usar para automatizar
muitas tarefas dentro do Notes, tais como o arquivamento de documentos antigos ou a
gerao automtica de cpias para enviar mensagens. Um agente pode ser disparado de
vrias maneiras, incluindo comando de menu, uma lista predefinida, a chegada de uma
correspondncia, ou documentos sendo colados. Voc pode criar programas LotusScript
para criar agentes, e voc pode tambm usar agentes "Notes-Supplied.
Os agentes executam em qualquer uma das seguintes localizaes:
Estao de trabalho do usurio, se os triggers de agentes tiverem sido definidos
para uma das seguintes opes: Manualmente pelo Menu de Aes,
Manualmente pela Lista de Agente, "se Documentos tiverem sido Criados ou
Modificados ou "se Documentos tiverem sido Colados;
servidor ou a estao de trabalho contendo o agente se os triggers dos agentes
tiverem sido definidos tanto "Se Nova Correspondncia tiver Chegado ou "Em
Fila.

3.@ I6+9+al+Var
Sempre que um agente executado, ele executa o cdigo anexado ao evento
Inicialize. Logo, este o local onde voc deve colocar seu cdigo de agente (veja Tabela
2.6).

Tabela 2.6 Evento Agente
E*e6-o Tr+gger
nitialize Quando o agente iniciado.
Terminate Quando o agente terminado.
C U.a6,o o !epura,or
O depurador lhe permite checar como um script executado, linha linha se voc
quiser. Voc pode iniciar e parar o script qualquer momento e checar os valores que
tenham sido atribudos s variveis ou propriedades especficas. sto pode ajud-lo a
encontrar, rapidamente, erros naqueles scripts que esto sendo conduzindos de forma
imprpria. O depurador abre sua prpria janela mostrando o script sendo executado. Uma
seta indica qual a linha do script que est para ser executada e medida que as linhas so
executadas a seta move-se para a prxima linha. Voc pode usar o depurador para o
seguinte:
Percorrer o script uma linha por vez;
Definir pontos de parada no script de forma que o script temporariamente pare de
executar em cada ponto de parada (breakpoint);
Examinar e modificar o valor das variveis e propriedades.
C.1 )a1+l+-a6,o o !epura,or
Quando voc deseja iniciar a depurao, voc o habilita selecionando "Arquivo
Ferramentas - Depurador LotusScript atravs da barra de menu do Notes como mostrado
na Figura 2.11.
Figura 2.11

Esta figura mostra como habilitar um depurador.
Para desabilitar o depurador simplesmente selecione "Arquivo Ferramentas -
Depurador LotusScript novamente.
Uma vez que o depurador habilitado, ele inicia automaticamente quando voc
executa qualquer LotusScript. Quando o depurador inicia, ele far o seguinte:
Mostra a janela de depurao (veja Figura 2.12);
Sublinha a primeira linha do script;
Pausa a Execuo do script na primeira linha.
A janela de depurao contm um nmero de reas que veremos uma de cada vez.
Figura 2.12

C.$ A 4rea ,e (o-0o
Voc pode controlar como o depurador salta um script usando os cinco botes no
topo da tela. Os botes trabalham da seguinte forma:
Co6-+6uar - Continua a execuo do script at voc encontrar o ponto de quebra
ou o fim do cdigo encontrado;
#r?:+5o #a..o - Executa o comando atual e para no prximo. Se o comando
atual uma chamada a um sub ou funo, para no primeiro comando executvel
no sub ou funo. Alm de clicar o boto, voc pode usar "Prximo Passo
selecionando "Depurar Prximo Passo ou pressionando F8;
Ra.-rear por (lo9o - Executa o comando atual. Se o comando atual uma
chamada a um sub ou funo, execute o sub ou funo e para no primeiro
comando imediatamente aps chamada. Se o comando no uma chamada
de sub ou funo, execute o comando e pare no prximo comando. Voc pode
clicar no boto "Rastrear por Bloco, selecionar "Depurar - Rastrear por Bloco ou
pressionar Shift+F8 para usar "Rastrear por Bloco;
Ra.-rear e Sa+r Continua a execuo do sub ou funo at que o final dos
mesmos seja alcanado, ento pare no comando imediatamente seguinte ao que

chamou o sub ou funo. Use "Rastrear e Sair clicando o boto "Rastrear e
Sair, selecionando "Depurar - Rastrear e Sair ou pressionando Ctrl+F8;
I6-erro5per Para de executar o script.
C.3 A Ca+:a O1Fe-o
A "Caixa Objeto mostra o nome do objeto contendo o script que est rodando. Por
exemplo, a Figura 2.12 mostra que o script corrente est anexado ao formulrio "Main
Topic. Se voc deseja ver o cdigo anexado a quaisquer outros objetos, selecione os
objetos especficos utilizando a caixa de combinao de objeto.
C.C A Ca+:a E*e6-o
A "Caixa Evento mostra o nome do evento ao qual o script est anexado. Similar
"Caixa de Objeto, voc pode usar a caixa de combinao de Evento para examinar o
cdigo anexado a quaisquer eventos com o objeto corrente. A Figura 2.12 mostra que o
cdigo exibido est anexado ao evento QueryOpen.
C.G A Wa6ela ,e !epura/0o
A "Janela de Depurao mostra o LotusScript que voc est depurando. Uma seta
aponta para a linha que est para ser executada.
C.@ A Ca+:a ,e Co51+6a/0o C2a5a,a.
A "Caixa de Combinao Chamadas permite-lhe rastrear a rota que o seu script
usou at a linha corrente. Toda vez que um sub ou funo chama outro sub ou funo, seu
nome adicionado "Caixa de Combinao Chamadas e construdo um histrico de
chamadas. O subprograma que est sendo executado mostrado no topo da lista.
C.A A #ale-a ,e #o6-o ,e I6-errup/0o
A "Paleta de Ponto de nterrupo mostra quaisquer pontos de parada que voc tem
que definir. Voc pode dar um duplo clique em um ponto de parada para que a linha seja
mostrada na janela de Depurao. Veremos pontos de parada com maiores detalhes
posteriormente.
C.D A #ale-a %ar+7*e+.

A Figura 2.13 mostra a "Paleta Variveis, uma das caractersticas mais teis do
depurador. Mostra as variveis definidas e permite-lhe examinar e mudar o valor atual. A
Paleta Variveis mostra o nome da varivel, seu valor atual e seu tipo. "Twisties so
mostrados prximos variveis que representam objetos ou complexas estruturas de
dados. Voc pode mudar o valor de uma varivel digitando um novo valor dentro do campo
"Novo valor.
Figura 18.13
Click na Paleta de Variveis para mostrar as variveis do LotusScript.
C.I A #ale-a ,e SaX,a
A Paleta de Sada usada para mostrar a sada de comandos de impresso de seu
script.
C.1O U.a6,o #o6-o. ,e #ara,a
Pontos de Parada so uma maneira de interromper a execuo do script em uma
linha especfica. Quando o Script for interrompido, voc poder examinar o valor corrente
das variveis e propriedades. Voc pode usar o depurador para fazer o seguinte:
!ef+6+r ou l+5par u5 po6-o ,e para,a .+5ple. para definir um ponto de
parada, d um duplo clique na janela de depurao na linha que voc deseja um
ponto de parada. Uma sinal vermelho de parada aparece do lado esquerdo da
linha para mostrar que aquele um ponto de parada e o novo ponto de parada
adicionado lista de pontos de parada mostrada na paleta "Ponto de
nterrupo;
L+5par -o,o. o. po6-o. ,e para,a Para limpar um ponto de parada, d um
duplo clique na linha que o contm;

)a1+l+-ar ou ,e.a1+l+-ar -e5porar+a5e6-e u5 po6-o ,e para,a .+5ple. Para
desabilitar temporariamente um ponto de parada, selecione-o na janela do
depurador e selecione "Depurar Desativar Ponto de nterrupo na barra de
menu do Notes. O sinal de parada muda para amarelo, indicando que o ponto de
parada est desabilitado. Para reabilit-lo selecione "Depurar - Ativar Ponto de
nterrupo;
)a1+l+-ar ou ,e.a1+l+-ar -e5porar+a5e6-e -o,o. o. po6-o. ,e para,a Para
desabilitar temporariamente todos os pontos de parada selecione "Depurar
Desativar Todos os Pontos de nterrupo na barra de menu do Notes. Para
reabilit-los selecione "Depurar Ativar Todos os Pontos de nterrupo.
NOTA
Voc pode tambm definir e limpar pontos de interrupo selecionando "Depurar -
Definir/Limpar Ponto de Interrupo" atravs da barra de menu do Notes ou pressionando a
tecla F9.
G T=96+9a. A,+9+o6a+. ,e !epura/0o
Voc pode usar uma variedade de tcnicas para testar seus scripts enquanto est
usando o depurador.
G.1 U.a6,o a 9a+:a ,e e6.age5
Voc pode testar seus scripts usando o comando de caixa de mensagem para
mostrar mensagens de depurao. Simplesmente defina um sub que use a caixa de
mensagem para mostrar textos que voc fornece para indicar o progresso e o status de seu
script que lhe informar o que est acontecendo. Ento chame o sub quando voc precisar
mostrar informaes do depurador. Um exemplo de sub de depurao mostrado abaixo:
Sub ShowDebugMsg(strMsg As String)
Messagebox strMsg, MB_OK, "Debug Message"
End Sub
G.$ U.a6,o a Pu6/0o #r+6-

Voc pode tambm usar a funo Print do LotusScript. Se voc est testando um
script que executa no cliente, Print escreve sua mensagem para a barra de status do Notes.
Se o script estiver executando em um servidor, as mensagens so escritas para o banco de
dados de log do servidor Notes. Quando voc est depurando seu script a sada dos
comandos Print como est mostrado na paleta de sada do depurador.
G.3 U.a6,o u5 Co6-rola,or ,e Erro.
Voc pode desejar definir uma rotina de controle de erros para captur-los, mostrar
alguns detalhes sobre eles e continuar executando o script, porque quando o depurador
detecta um erro, ele para de executar o script. nclua o controlador em todas as rotinas de
eventos de forma que todo erro seja detectado.
O LotusScript especifica um conjunto de erros padro e um nmero correspondente
de erros (como constantes), no arquivo LSERR.LSS, ento lembre de usar "%nclude para
incluir este arquivo no seu script se voc deseja usar as constantes.
O modelo de controlador de erros mostrado abaixo, mostra uma caixa de
mensagens para mostrar os detalhes do erro. Se um erro ocorrer em algum lugar no script o
cdigo aps o "lblShowError executado, ento o controle retorna para o comando
seguinte ao que gerou o erro. Voc pode facilmente modificar o cdigo para escrever os
detalhes do erro para um arquivo de log para uma gravao permanente de cada erro.
Sub Click(Source As Button)
Set up the error handler
On Error Goto lblShowError
Put your button code here ...
Exit Sub
lblShowError:
Messagebox "Line: " & CStr(Erl) & "- " & Error(Err), MB_OK,
"Error: " & CStr(Err)
Resume Next
End Sub

@.O U.a6,o !LL
Com o LotusScript, voc pode chamar funes e subrotinas em bibliotecas de
funes internas tais como DLL. Voc pode usar as caractersticas e funes do sistema de
operao disponvel voc atravs da sua interface de programao ou voc pode chamar
funes em suas prprias bibliotecas. Por exemplo, quando rodando no Windows 95 voc
pode usar o LotusScript para chamar funes externas de Linguagem C nas DLL's do
Windows 95. Voc pode chamar funes externas em todas as plataformas seguintes:
Windows 3.1;
Windows 95;
Windows NT;
OS/2;
UNX;
Macintosh
NOTA
As funes disponveis e as convenes de chamada que voc usa diferem de
plataforma para plataforma. Se voc deseja que o LotusScript rode em diferentes sistemas
de operao, use a diretiva "%IF" para checar o tipo de plataforma na qual seu script esta
rodando; ento chame a funo apropriada para aquela plataforma. Veja a documentao
do LotusScript em %IF para detalhes.
Para chamar uma funo em uma DLL externa, siga os passos seguintes:
1. Use o comando de declarao do LotusScript na seo de declarao do seu
script para declarar a referencia rotina como um sub ou como uma funo;

2. Quando a rotina tiver sido declarada, chame-a como se fosse um sub ou uma
funo LotusScript.
Por exemplo, o script a seguir lhe mostra como declarar e usar a funo externa
GetFreeSystemResources. Esta funo est disponvel somente no Windows 3.1 e retorna
a informao do sistema sobre como o Windows est administrando sua memria. Quando
voc roda o script em uma estao de trabalho Windows 3.1, ela mostra os recursos de
sistemas disponveis na barra de status do Notes.
Sub Click(Source As Button)
Declare Function GetFreeSystemResources
Lib "User" (ByVal iFlag As Integer)
Dim iSystemResources As integer
Dim iGDIResources As Integer
Const GFSR_SYSTEMRESOURCES = 0
Const GFSR_GDIRESOURCES = 1
Const GFSR_GDIRESOURCES = 2
Get the available Memory, GDI and User resources
iSystemResources = GetFreeSystemResources (GFSR_SYSTEMRESOURCES)
iGDIResources = GetFreeSystemResources (GFSR_GDIRESOURCES)
iUserResources = GetFreeSystemResources (GFSR_USERRESOURCES)
Display them on the Notes status bar
Print "System Resources=" & Str$ (iSystemResources)
Print "GDI Resources =" & Str$(iGDIResources)

Print "User Resources =" & Str$(iUserResources)
End Sub
!ICA
O LotusScript automaticamente converte para maisculo o nome da funo, em um
comando de declarao. No Windows 3.1 funciona muito bem; porm os nomes das
funes usadas pelo Windows 95 e pelo Windows NT fazem distino entre maisculo e
minsculo. Ento se voc chamar funes externas no Windows 95 e Windows NT, voc
deve sempre usar o "Alias" do comando de declarao para especificar o nome da funo
em maisculo ou minsculo, conforme desejar.
Pelo padro, argumentos so passados para funes externas por referncia. Voc
pode refazer isto para certos tipos de dados e ter o argumento passado por valor usando a
palavra chave "By Val. Por exemplo, as declaraes a seguir passam ambos os argumentos
por valor:
Declare Function iMax Lib "MYFUNCS Alias "iMax
"(ByVal iX As nteger, ByVal iY As nteger) as nteger
A U.a6,o &valuate e &xecute
As funes Evaluate e Execute do LotusScript permitem-lhe compilar e executar
funes do Notes e programas "on-the-fly do LotusScript. Use Evaluate para calcular uma
frmula @function. Voc fornece dois argumentos, a frmula @function e o objeto usado
para executar aquela formula. Por exemplo, voc pode rodar a @function mostrada no
prximo exemplo ao invs de um documento particular do Notes para mostrar o tamanho
total para todos os arquivos anexados:
Sub Click(Source As Button)
Const STR_FORMULA = "@if(@Attachments > 0; @Sum(@AttachmentLengths);0)"
Dim varTotalSize As Variant
Dim uiWorkspace As New Notes UIWorkspace

Dim uiDoc As NotesUIDocument
Dimdoc As NotesDocumet
Set uiDoc = uiWorkSpace.CurrentDocument
Set doc = uiDoc.Document
VarTotalSize = Evaluate(STR_FORMULA, doc)
Messagebox "Total size of all attached files is
" & CStr (varTotalSize(0)) & "bytes."
End Sub
NOTA
Voc deve definir a frmula para Evaluate quando o LotusScript compilado, ento
voc no pode usar a varivel para definir a formula. No entanto, depois que estudarmos a
funo Executar estudaremos uma maneira de driblar o LotusScript de forma que voc
possa definir uma frmula em tempo de execuo para usar com "Avaliar".
Usando a funo Execute, voc pode compilar e executar uma "string de texto como
um programa LotusScript. O LotusScript pega o contedo da "string, compila e executa
como um programa separado. Se voc quiser passar dados entre seu programa principal e
o programa criado pela funo Execute, voc pode declarar variveis como Pblicas. Desta
forma, ambos os programas tm acesso s variveis e podem us-las para passar dados
para trs e para frente entre eles. O exemplo seguinte usa um script separado para
adicionar o nmero um outro nmero.
Primeiro, na seo (Declaraes) do script, declare uma varivel Pblica para passar
o nmero para e a partir do script que est rodando pela funo Execute:
Public piTempNumber As Integer
!ICA
Como uma conveno, considere comear os nomes de variveis
Pblicas com a letra p de forma que fcil identificar que elas so pblicas.

Ento declare um sub para construir um mini-programa e chame Execute para
execut-lo e mostrar os resultados:
Sub Increment (iNumber As Integer)
Dim strScript As String
PiTempNumber = iNumber
strScript = | piTempNumber = piTempNumber + 1 | 5 mi#i pro4rama
Execute(strScript) 6 executa o mi#i pro4rama
Messagebox CStr(piTempNumber)
End Sub
Finalmente, crie um boto no formulrio para chamar o novo sub:
Sub Click(Source As Buttom)
Dim i As Integer
i = 3
Increment i
End Sub
Quando voc clicar no boto, o sub ncremente chamado e o mini-programa (o
qual adicionar "um para o nmero fornecido) compilado e executado.
Apesar deste ser um exemplo simples, ele demonstra como esta caracterstica
poderosa. Voc pode usar Execute para compilar e executar qualquer texto como um
programa LotusScript. Por exemplo, voc pode combinar Evaluate e &xecute para evitar o
problema de fornecer a frmula para Evaluate como uma constante. Voc precisar primeiro
declarar uma varivel Pblica para conseguir o resultado da frmula.

Public pvarResult As Variant
Ento crie um sub que cria e executa um mini-programa usando a string fornecida
como a frmula:
Sub ExecuteFormula(strFormula As String, varResult As Variant)
Dim strScript As String
Cria um mini-progama com a frmula fornecida e adiciona o resultado a um a
varivel pblica que o programa principal possa usu-la.
StrScript = | Const STR_FORMULA = " | & strFormula & | "
Dim uiWorkspace As New notesUIWorkspace
Dim uiDoc As NotesUIDocument
Dim doc As NotesDocument
Set uiDoc = uiWorkSpace.CurrentDocument
Set doc = uiDoc.Document
PvarResult = Evaluate (STR_FORMULA, doc)
Executa o mini-programa
Execute (strScript)
Salva o resultado retornado pela frmula
varResult = pvarResult
End Sub
Para chamar um novo sub, adicione um boto um formulrio e use o seguinte
script para passar a frmula para o novo sub:

Sub Click (Source As Button)
Dim strFormula As String
Dim varResult As Variant
StrFormula = Inputbox$ ("Entre com uma frmula Notes:")
On Error Goto lblExecutionError
Call Execute Formula(strFormula, varResult)
Messagebox "O resultado do clculo "&
StrFormula & "is "& CStr(varResult(0))
lblExit:
Exit Sub
lblExecutionError:
Messagebox "No possvel calcular a frmula para este documento."
Resume lblExit
End Sub
Para testar o novo sub, siga os seguintes passos:
1. Clique no boto;
2. Digite a frmula, do tipo Ya--a925e6-., dentro da caixa de entrada e clique OK;
3. A caixa de mensagem aparece.

D E:-e6.Qe. Lo-u.S9r+p-
Extenses LotusScript ou LSX's, so exatamente isto extenses para o
LotusScript. Um desenvolvedor de software ou um vendedor de ferramentas pode us-los
para adicionar classes extras ao Notes. Por exemplo, BM produziu um conjunto de
extenses LotusScript para Links de series MQ para Lotus Notes, que lhe permitem acessar
transaes e dados em outros sistemas. O Lotus tem usado LSX's para adicionar trs
classes ao Notes que voc pode usar para acessar fontes de dados ODBC.
NOTA
Para mais informaes sobre Links de series MQ para Lotus Notes leve o seu cliente
Web para ttp788999.urslev.i)m.com8m1series.
Para usar uma extenso LotusScript, inclua o comando "UseLSX na parte (Options)
da seo (Global) de um script. Por exemplo, para usar o ODBC LotusScript, adicione a
linha seguinte para a parte (Option):
UseLSX "*LSXOBC"
O comando carrega DLL que contm as trs classes que formam extenses ODBC
para o LotusScript.

CAPTULO 3 CLASSES E OBJETOS NOTES
A ,+fere6/a e6-re 9la..e. Kfro6--e6,Le K1a9k-e6,LZ
A. $G 9la..e. ,e o1Fe-o. Lo-u. No-e.Z
Co5o u.ar a. propr+e,a,e. e 5=-o,o. ,e 9a,a 9la..e e5 .eu.
progra5a. Lo-u.S9r+p-.
Em captulos anteriores, voc aprendeu o bsico sobre a linguagem Lotus Notes, as
ferramentas necessrias para comear a construir programas simples no LotusScript. Neste
captulo, veremos as classes de Objetos Lotus Notes e como voc pode us-los para
construir aplicaes Notes mais sofisticadas que exploram ao mximo o potencial tanto do
Notes como do LotusScript. A chave para construir essas aplicaes um bom
entendimento das classes de Objeto Lotus Notes.
Entendo as Classes de Objetos Lotus Notes
As classes de Objetos Lotus Notes permitem a voc usar o LotusScript para
acessar bancos de dados, vises, documentos e itens. Por exemplo, a partir de programas
LotusScript, voc pode usar as classes de objeto do Notes para criar, abrir ou excluir
bancos de dados e adicionar, modificar ou deletar documentos nesses bancos. Neste
captulo veremos detalhadamente cada uma dessas classes e veremos como cada uma
pode ser usada da melhor forma no LotusScript. Mas, antes disso, precisamos diferenciar
os tipos de classes.
Existem dois tipos de classes que permitem-lhe trabalhar com objetos Notes: front-
end ou interface do Usurio (U) e back-end.
NOTA
Os dois tipos de classes que veremos neste captulo no so as nicas classes
disponveis no LotusScript. Outros tipos de classes podem ser adicionadas como
extenses do LotusScript do tipo "Open Database Connectivity (ODBC)" , que veremos
ainda neste captulo.
As classes U permitem-lhe trabalhar com bancos de dados, vises e documentos
que so mostrados na janela ativa do Notes. Por exemplo, voc pode trabalhar com o
documento que est atualmente na tela usando a classe NotesUIDocument. Os mtodos e
propriedades das classes U permitem-lhe trabalhar com vises e documentos da mesma
maneira que o usurio pode. Voc pode digitar textos nos campos, mover o cursor, usar a
rea de transferncia e atualizar vises.
Existem 4 classes U que representam:
"Workspace do Notes

Documento corrente
A viso corrente
Banco de dados corrente
Abordaremos essas classes primeiro quando estudarmos classes em detalhes.
O segundo tipo de classe, as classes Back-End, representam as partes
componentes do Notes. Elas incluem alguns elementos bvios do tipo banco de dados,
vises, documentos, campos e mais alguns objetos abstratos do tipo sees e colees de
documentos.
Voc necessita entender a diferena entre os dois tipos de classes principalmente
porque elas so interligadas. Por exemplo, um documento mostrado na tela tem duas
representaes diferentes: O documento U e o documento back-end. Quando voc digita
dados no documento U, o documento back-end correspondente no atualizado at voc
salvar suas mudanas. Ao contrrio, se um agente atualizar a parte back-end de um
documento, o documento U no mostra as mudanas at que ele seja atualizado. Veremos
alguns mtodos que se pode usar para manter ambos os documentos atualizados.
O restante do captulo mostra cada classe em detalhes. Vamos comear pelo
espao de trabalho do Notes, vendo primeiramente a classe NotesUIWorkspace.
1 NotesUWorkspace
A 'lasse No-e.UIWork.pa9e represe#ta a -a#ela corre#te ,e espa/o ,e
tra)alo ,o Notes. &la permite:le usar o LotusScript para reali;ar al4umas ,as a/<es
1ue voc= #ormalme#te reali;a a partir ,o +rea ,e tra)alo ,o Notes> tais como a)rir
)a#cos ,e ,a,os ou criar e e,itar ,ocume#tos. Se um ,ocume#to -+ est+ se#,o
mostra,o em uma -a#ela ativa ou su)li#a,o em uma vis0o> voc= po,e usar esta
classe para tra)alar com o ,ocume#to.
A Classe tem somente uma propriedade, CurrentDocument, o qual voc usa para
chamar o documento corrente. De posse do documento, voc tipicamente usa as
propriedades e mtodos da classe NotesUIDocument para trabalhar com o mesmo. Por
exemplo, o script a seguir acha o documento corrente e mostra o valor de um campo
chamado title na caixa de mensagem:
Dim uiWorkspace As New NotesUIWorkspace
Dim uiDoc As NotesUIDocument
Set uiDoc = uiWorkspace.CurrentDocument
MessageBox(uiDoc.FieldGetText("Title"))
A classe NotesUIWorkspace possui dez mtodos que lhe permitem abrir bancos de
dados e URLs, criar e editar documentos, checar alarmes e atualizar vises. Voc adiciona
um banco de dados sua rea de trabalho usando o mtodo AddDatabase. Voc abastece
o servidor e o nome do arquivo para o banco de dados e isto adicionado para a paleta
corrente de rea de trabalho. Voc abre um banco de dados usando o mtodo
OpenDatabase, do LotusScript equivalente ao comando FileOpenDatabase. Se voc
comparar o mtodo OpenDatabase com o comando FileOpenDatabase, voc ver que seus
parmetros so muito similares. O mtodo FileOpenDatabase aceita at 6 parmetros. Os
primeiros dois parmetros especificam o servidor e o nome do arquivo do banco de dados a

ser aberto e os parmetros restantes para especificar como abrir o banco de dados. Voc
pode abrir o banco de dados de uma viso ou de um navegador especfico.
Por exemplo, voc pode fornecer o nome ou "alias de uma viso como o terceiro
parmetro para abrir o banco de dados naquela viso. Se a primeira coluna na viso
classificada, voc pode fornecer uma chave como quarto parmetros. Neste caso o banco
de dados aberto na viso que voc especificou e o primeiro documento correspondente
chave sublinhado. Voc pode tambm usar o terceiro e o quarto parmetros para abrir um
navegador. Voc fornece o nome do navegador como terceiro parmetro e "True ou "False
como quarto parmetro para indicar se o navegador deve ou no ser aberto na sua prpria
janela. O quinto parmetro especifica se a viso ou navegador esto abertos em uma
janela, mesmo que j exista uma janela aberta que contenha a viso ou navegador.
Especifique "True para ter uma nova janela aberta, ou "False para usar uma janela
existente. O ltimo parmetro usado para indicar se o banco de dados deve ser aberto
sem adicion-lo sua rea de trabalho. Especifique "True para abrir o banco de dados
temporariamente ou "False para adicionar o banco de dados sua rea de trabalho.
Ento abra um banco de dados usando um boto, use o LotusScript a seguir:
Sub Click(Source As Button)
Dim uiWorkspace As New NotesUIWorkspace
Call uiWorspace.OpenDatabase("Emerald", "Sales\Quota.nsf", "Weekly Totals",
"Northern", True, False)
End Sub
sto abre um banco de dados "QUOTA.NSF no diretrio VENDAS no servidor
Esmeralda na viso Totais Semanais e seleciona o documento totais de vendas da regio
Norte. Os dois ltimos parmetros asseguram que uma nova janela ser aberta para a viso
e que o banco de dados ser sempre adicionado rea de trabalho do usurio.
Voc pode tambm usar o mtodo FileOpenDatabase para abrir um navegador. Ao
invs do nome da viso voc fornece o nome do navegador e ao invs de uma chave voc
fornece "True ou "False para especificar se o navegador deve abrir sua prpria janela. Os
outros parmetros so os mesmos usados para abrir uma viso. Por exemplo, o script a
seguir abre um navegador chamado "Main Navigator (navegador principal) na sua prpria
janela.
Sub Click(Source As Button)
Dim uiWorkspace As New NotesUIWorkspace
Call uiWorspace.OpenDatabase("Emarald", "Sales\Quota.nsf", "Weekly Totals",
"Main Navigator", True, True, False)
End Sub
Aps ter selecionado um documento em uma viso, voc pode abr-lo usando o
mtodo EditDocument. Ento, para o boto abra o documento totais de vendas do Norte no
modo de edio, use o seguinte script atualizado:
Sub Click(Source As Button)

Dim uiWorkspace As New NotesUIWorkspace
Dim uiDoc As NotesUIDocument
Call uiWorspace.OpenDatabase("Emerald", "Sales\Quota.nsf", "Weekly Totals",
"Northern", True, True)
Set uiDoc = uiWorkspace.EditDocument(true)
End Sub
Para abrir o documento no modo de leitura, especifique "False como o parmetro
para o EditDocument.
Voc pode criar novos documentos em um banco de dados usando o mtodo de
ComposeDocument. Por exemplo, o script a seguir cria um documento de totais de vendas
para a regio Leste sempre que o boto clicado:
Sub Click(Source As Button)
Dim uiWorkspace As New NotesUIWorkspace
Dim uiDoc As NotesUIDocument
Set uiDoc = uiWorkspace.ComposeDocument( "Emerald", "Sales\Quota.nsf",
"Sales Totals")
Call uiDoc.FieldSetText("Region", "Eastern")
End Sub
Um novo mtodo que surgiu na verso 4.5 EditProfile. Voc pode us-lo para
criar ou editar um documento de perfil escondido no banco de dados corrente. Um
documento de profile permite-lhe armazenar e atualizar informaes especficas no banco
de dados. Voc abre uma pgina WWW (Word Wide Web) usando o mtodo URLOpen.
Voc pode especificar o URL juntamente com alguns parmetros que especificam se achar
a ltima cpia da pgina da Web. Como alternativa, se no fornecer nenhum parmetro, o
URLOpen mostra a caixa de dilogo URL Open para voc dar entrada no URL que deseja
abrir.
EnableAlarms e CheckAlarms permite-lhe usar a caracterstica de alarme do
calendrio que acompanha o Lotus Notes. EnableAlarms inicia o processo que monitora
alarmes. Ento aps este processo estar rodando , CheckAlarm permite-lhe checar se
algum alarme est na fila.
Voc pode usar o mtodo DialogBox para realmente incrementar suas interfaces de
usurios. Ela mostra o documento corrente em uma caixa de dilogo usando o formulrio
que voc especificar. sto realmente muito til quando o formulrio contm uma regio de
layout nico, porque neste caso o formulrio comporta-se justamente como uma caixa de
dilogo padro. Voc preenche os campos e pressiona "OK ou "Cancel quando terminar. A
melhor parte que se o formulrio que voc especificar tiver algum nome de campo em
comum com o documento corrente, o contedo daqueles campos so mostrados na caixa
de dilogo. Se o usurio mudar o contedo de qualquer um dos campos e clicar OK, o
campo correspondente no corrente documento ser atualizado.

Para ver um bom exemplo de como um formulrio mostrado em uma caixa de
dilogo, crie um novo "memo no Correio de seu banco de dados e clique no boto de
Opes de Entrega. O Formulrio Opes de Entrega mostrado na caixa de dilogo e
qualquer valor que voc der entrada ser atualizado no "Memoquando voc clicar OK.
O ltimo mtodo na classe NotesUIWorkspace ViewRefresh. Voc usa o
ViewRefresh para atualizar ou a viso que est sendo mostrada ou, se um documento est
sendo mostrado, a viso a partir da qual o documento foi selecionado. Atualizar um
documento que est sendo mostrado muito simples, simplesmente chame ViewRefresh e
o documento est atualizado. As coisas tornam-se um pouco mais complicadas quando
voc deseja atualizar uma viso de um documento recentemente criado porque voc
precisa primeiro atualizar a viso "back-end, usando o mtodo de Refresh da classe do
NotesView, de forma que o novo documento includo na viso. Ento voc precisa
atualizar a viso "front-end usando o mtodo NotesUIWorkspace ViewRefresh de forma
que a viso atualizada seja mostrada.
Tabela 3.1 mostra todas as propriedades do NotesUIWorkspace e a tabela 3.2 lista
os mtodos.

Tabela 3.1 Propriedades da classe NotesUWorkspace
#ropr+e,a,e !e.9r+/0o T+po ,e !a,o. U.o
CurrentDocument O documento que est sendo
mostrado
NotesUDocument Leitura
Tabela 3.2 Mtodo da classe NotesUIWorkspace
=-o,o !e.9r+/0o T+po ,e !a,o.
Re-or6a,o.
%alor
Re-or6a,o
AddDatabase Adicione um novo banco de dados rea
de trabalho
Nenhum Nenhum
CheckAlarms Checar novos alarmes no correio do banco
de dados
Nenhum Nenhum
Compose
Document
Crie um novo U Documente em um Banco
de Dados especfico usando um formulrio
especfico e mostrando-o no modo de
edio.
Notes Documento
U
O Novo U
Documento
DialogBox Mostre uma caixa de dilogo com botes
"OK e "Cancel que contm o documento
corrente exibido usando um formulrio que
voc especifica.
Boolean Verdadeiro se o
usurio
seleciona "OK
na caixa de
dilogo
EditDocument Verdadeiro para abrir o documento
corrente no modo de edio. Falso para
abr-lo no modo de leitura.
Documento U O documento
U
recentemente
aberto
EditProfile Crie um novo documento de perfil ou abra
uma perfil existente.
Nenhum Nenhum
EnableAlarms Defina com verdadeiro (True) para iniciar o
processo em background que checa
alarmes.
Boolean Verdadeiro se o
processo for
permitido
OpenDatabase Abra um Banco de Dados em uma viso
especfica e opcionalmente sublinhe um
documento especfico
Nenhum Nenhum
URLOpen Abra um URL Nenhum Nenhum

ViewRefresh Atualizar a viso de um documento Nenhum Nenhum
2 NotesUDocument
A classe NotesUIDocument permite-lhe trabalhar com o documento ativo, isto , o
documento que est aberto na sua rea de trabalho ou sublinhado em uma viso. Voc usa
esta classe para fazer o seguinte:
Atualizar o contedo dos campos em um documento;
Posicionar o cursor dentro de um documento;
Criar e manipular documentos;
Mudar a forma que um documento mostrado;
Enviar, passar para frente ou excluir um documento.
Veremos essas opes detalhadamente. A tabela 3.3 lista todas as propriedades da
classe NotesUDocument e a Tabela 3.4 lista os mtodos.
Tabela 3.3 Propriedades da classe NotesUDocument
#ropr+e,a,e !e.9r+/0o T+po ,e ,a,o. U.o
AutoReload Selecione Verdadeiro para atualizar
automaticamente o documento exibido para
refletir quaisquer mudanas que tenham
sido feitas para seu documento back-end
associado. Leia para checar as posies
atuais. Use-o no evento Postopen.
Boolean Leitura
Escrita
CurrentField O nome do campo aonde o cursor se
encontra
String Leitura
Document O documento back-end associado com o
documento U corrente
Documento
Notes
Leitura
EditMode Defina como Verdadeiro(true) para colocar o
documento U atual no modo de edio ou
leia para checar se o documento U atual
est no modo de edio
Boolean Leitura
Escrita
FieldHelp Defina como Verdadeiro(true), quando o
documento U estiver em modo de edio,
para mostrar o campo de ajuda. Leia para
checar se o campo de ajuda est sendo
exibido.
Boolean Leitura
Escrita
HiddenChars Defina como Verdadeiro(true), quando o
documento U estiver em modo de edio,
para mostrar os caracteres de formatao
ocultos. Leia para checar as posies atuais.
Boolean Leitura
Escrita
HorzScrollBar Defina com Verdadeiro(True) para mostrar a
barra de rolagem horizontal. Leia para
checar se a mesma est sendo mostrada.
Boolean Leitura
Escrita
nPreviewPane Verdadeiro(True) se o documento est Boolean Leitura

sendo mostrado na janela de
previsualizao
sNewDoc Verdadeiro(True) se o documento nunca
tiver sido salvo
Boolean Leitura
PreviewDocLinks Defina com Verdadeiro(True) para mostrar a
janela de previsualizao para um link. Leia
para checar se a mesma est sendo
exibida.
Boolean Leitura
Escrita
PreviewParent Defina Verdadeiro(True) para mostrar o "Pai
do documento U atual na janela de
previsualizao. Leia para checar se a
janela de previsualizao est sendo
mostrada.
Boolean Leitura
Escrita
Ruler Defina Verdadeiro(True) para mostrar a
rgua. Leia para checar se a mesma est
sendo exibida.
Boolean Leitura
Escrita
WindowTitle O ttulo da janela para o documento que
est sendo mostrado.
String Leitura
Tabela 3.4 Mtodos do NotesUDocument
=-o,o !e.9r+/0o T+po ,e !a,o.
Re-or6a,o.
%alor
Re-or6a,o
Categorize Coloca o documento dentro de uma
categoria
Nenhum Nenhum
Clear Somente no modo de edio, exclui texto,
grficos ou objetos que esto
selecionados.
Nenhum Nenhum
Close Fecha o documento U atual. Nenhum Nenhum
CollapsAll
Sections
Contrai todas as sees no atual
documento U aberto.
Nenhum Nenhum
Copy Copia texto, grficos ou objetos
selecionados para a rea de transferncia
Nenhum Nenhum
CreateObject Para um documento U no modo de edio
com o cursor em um campo de texto rico
cria um OLE ou um objeto ActiveX.
Variante UM "handle
para um objeto
criado
recentemente
Cut Somente no modo de edio, corta o texto,
grficos ou objeto selecionado no
documento e coloca-os na rea de
transferncia.
Nenhum Nenhum
DeleteDocument Somente no modo de leitura, marca o
documento para excluso e fecha-o
Nenhum Nenhum
DeselectAll "Deseleciona qualquer texto, grfico ou
objeto selecionados.
Nenhum Nenhum
ExpandAll
Sections
Expande todas as sees no documento
U aberto atualmente.
Nenhum Nenhum
FieldAppendText Adiciona o texto fornecido ao contedo de
um campo (ou o campo corrente se no for
fornecido nenhum nome)
Nenhum Nenhum

FieldClear Somente no modo de edio, limpa o
contedo de um campo (ou o campo
corrente se no for fornecido nenhum
nome)
Nenhum Nenhum
FieldContains Verdadeiro(True) se um campo (ou o
campo corrente se no for fornecido
nenhum nome) contm um texto
especfico.
Boolean Verdadeiro se o
campo com-
tm o texto que
voc
especificou
FieldGetText Pega o contedo de um campo (ou o
campo corrente se no for fornecido
nenhum nome). Converte o contedo em
uma string de texto.
String O contedo do
campo
convertido em
um texto
FieldSetText Somente no modo de edio, define o
contedo de um campo (ou o campo
corrente se no for fornecido nenhum
nome) para o valor fornecido. Converte
automaticamente o valor fornecido para o
tipo correto para o campo.
Nenhum Nenhum
FindFreeTime
Dialog
Mostra a caixa de dilogo "Tempo Livre Nenhum Nenhum
Foward Crie um correio Memo contendo o
documento U aberto atualmente
Nenhum Nenhum
GetObject Dando o nome de um OLE ou objeto
ActiveX, retorna um "Handle para um
objeto encontrado
Variante Um "handle
para o objeto
GoToBottom Somente no modo de edio, coloca o
cursor no ltimo campo editado
Nenhum Nenhum
GoToField Somente no modo de edio, coloca o
cursor no campo determinado
Nenhum Nenhum
GotoNextField Somente no modo de edio, coloca o
cursor no prximo campo editvel abaixo e
direita da posio atual do cursor.
Nenhum Nenhum
GoPrevField Somente no modo de edio, coloca o
cursor no prximo campo editvel acima e
esquerda da posio atual do cursor.
Nenhum Nenhum
GotoTop Somente no modo de edio, coloca o
cursor no primeiro campo editvel
Nenhum Nenhum
nsertText Somente no modo de edio, insera o
texto fornecido na posio onde o cursor
se encontra
Nenhum Nenhum
Paste Somente no modo de edio, cola o
contedo da rea de transferncia na
posio atual do cursor.
Nenhum Nenhum
Print mprime o documento atual.
Opcionalmente mostra a caixa de dilogo
"File Print
Nenhum Nenhum
Refresh Somente no modo de edio, computa
todas as frmulas para os campos
computados no documento
Nenhum Nenhum
RefreshHide
Formulas
Computa todas as frmulas ocultas em um
documento
Nenhum Nenhum
Reload No modo de edio, atualiza o documento Nenhum Nenhum

U com qualquer mudana que tenha sido
feita ao documento back-end associado
Save Somente no modo de edio, salva o
documento
Nenhum Nenhum
SaveNewVersion Somente no modo de edio, salva o
documento como uma nova verso (o
formulrio do documento fornecido tem
disponveis as opes de verses
apropriadas
Nenhum Nenhum
SelectAll Somente no modo de edio, seleciona o
contedo do campo atual. No modo de
leitura, seleciona o contedo do
documento inteiro
Nenhum Nenhum
Send Envia o documento Nenhum Nenhum
2.1 Atualizando campos
A classe do NotesUIDocument permite-lhe acessar os dados armazenados nos
campos com um documento. Dependendo do que voc deseja, existem dois grupos de
mtodos que voc pode usar, aqueles que comeam com Field e aqueles que comeam
com Goto. Os mtodos de Field so mais usveis quando voc precisa se referir um
campo pelo nome. Se voc sabe a posio do campo no documento ou se voc deseja
mover o cursor dentro do documento, use os mtodos de Goto.
Veremos os mtodos de Field primeiro. Existem cinco deles e cada um espera que
voc fornea um nome de campo como seu primeiro parmetro. Um ponto positivo que se
voc fornece um nome de campo vazio, o mtodo assume que voc est se referindo ao
campo atual. Voc pode achar o nome do campo atual perguntando a propriedade
CurrentField. Depois que voc tiver identificado um campo, voc pode pegar seu contedo
usando o mtodo FieldGetText. sto retorna o contedo do campo que voc especificar,
convertido em uma string de texto. Se voc deseja mudar o contedo de um campo use
FieldSetText, FieldAppendText ou FieldClear. FieldSetText altera o contedo atual do
campo com o texto que voc fornece. FieldAppendText similar, mas ele adiciona o novo
valor ao valor atual do campo. FieldClear exclui o contedo do campo. Se voc precisa
checar se um campo contm um determinado valor, use FieldContains. Voc fornece o
nome do campo e um valor e o mtodo informa Verdadeiro se o valor ocorrer em algum
lugar dentro do campo. Por exemplo, quando adicionado ao evento QuerySave de um
formulrio contendo dois campos de texto editveis, Texto e Prioridade, o script seguinte
checa se o campo Ttulo contm a palavra Urgente e se tiver coloca a prioridade do campo
para Alta:
Sub QuerySave(Source As Notessuidocument, Continue As Variant)
If source.FieldContains("Ttulo","Urgente") Then

Call source.FieldSetText("Prioridade", "Alta")
End If
End Sub
A outra maneira de trabalhar com campos mover o cursor para dentro de um
campo e trabalhar com seu contedo. Existem cinco mtodos que lhe permitem fazer isto.

Se voc sabe o nome do campo aonde voc deseja colocar o cursor, use o mtodo
GotoField. Voc fornece o nome do campo e o mtodo coloca o cursor naquele campo.
GotoTop move o cursor para o primeiro campo editvel no documento, GotoBottom coloca o
cursor no ltimo campo editvel. Se voc deseja navegar atravs dos campos de um
documento use GotoNextField e use GotoPrevField para mover o cursor de campo para
campo.
!ICA
O documento deve estar no modo de edio para que estes mtodos
funcionem.
Aps o cursor estar em um campo, voc pode usar quaisquer dos mtodos de Field
com um nome de campo vazio para trabalhar com o contedo do campo. Alternativamente,
voc pode usar InsertText ou uma combinao dos mtodos SelectAll e dos mtodos de
rea de transferncia Cut, Copy, Paste e Clear.
Use InsertText para adicionar algum texto dentro de um campo na posio atual do
cursor. Para copiar o contedo do campo corrente para a rea de transferncia, use
SelectAll para sublinhar o contedo do campo, ento use Cut ou Copy para copiar o
contedo para a rea de transferncia. Aps voc algum dado na rea de transferncia,
voc pode usar Paste para colar o dado da rea de transferncia dentro de um campo. Se
voc deseja deletar o contedo do campo, use o mtodo Clear.
O seguinte boto de script, quando executado em um formulrio contendo dois
campos, Ttulo e Histria, seleciona e copia o contedo do primeiro campo editvel, Ttulo,
para o campo Histria e ento anexe os dados atuais para o campo Histrico. Assegure-se
que voc d entrada em algum texto dentro do campo Ttulo, caso contrrio no haver
nada para selecionar e voc obter um erro.
Sub Click(Source As Button)
Dim uiWorkspace As New NotesUIWorkspace
Dim uiDoc As NotesUIDocument
Set uiDoc = uiWorkspace.CurrentDocument
Call uiDoc.GotoTop
Call uiDoc.SelectAll
Call uiDoc.Copy
Call uiDoc.GotoField( "Histria")
Call uiDoc.Paste
Call uiDoc.InsertText( " " & Date$)
End Sub

2.2 Trabalhando com Objetos
Uma poderosa caracterstica da classe NotesUIDocument sua capacidade para
trabalhar com objetos OLE. Quando um documento est no modo de edio com o cursor
em um campo de texto rico, voc pode usar o mtodo CreateObject para criar e inserir um
novo objeto OLE. Se voc no fornecer nenhum parmetro para o mtodo, o Notes mostra
uma caixa de dilogo "Create Object e voc pode escolher o tipo de objeto para criar a
partir da lista. Alternativamente, voc pode fornecer parmetros para definir o tipo de objeto
para criar. O primeiro parmetro o nome do novo objeto. Voc pode usar este nome mais
tarde para referir-se ao objeto dentro de um script. Ento, dependendo do tipo de objeto que
voc deseja criar, voc especifica o tipo do objeto ou o caminho para um arquivo que
contenha o objeto.
Por exemplo, para criar automaticamente um novo Componente do "Lotus Project
Scheduler sempre que um novo documento for criado, use o seguinte:
Sub PostOpen(source As NotesUIDocument)
Dim objNewSchedule As Variant
If source.IsNewDoc Then
Set objNewSchedule = source.CreateObject("Project Schedule",
"Lotus.Project.1")
End If
End Sub
sto automaticamente cria o novo componente de agenda no primeiro campo de
texto rico no documento.
Para criar um objeto "Excel Spreadsheet a partir de um arquivo existente, em um
campo de texto rico chamado "Sheet em um documento aberto, use o seguinte script de
boto:
Sub Click(Source As Button)
Dim uiWorkspace As New NotesUIWorkspace
Dim uiDoc As NotesUIDocument
Set uiDoc = uiWorkspace.CurrentDocument
Call uiDoc.GotoField("Sheet")
Call uiDoc.CreateObject("Expenses","", "C:\EXPENSES.XLS")
End Sub

NOTA
Com o "CreateObject", voc fornece o tipo de objeto ou o nome do arquivo e
no ambos.
Se um documento contm um objeto, voc pode pegar o "handle do OLE para o
objeto OLE usando o mtodo GetObject. Voc fornece o nome do objeto e o mtodo retorna
o Handle para ele ou "Nothing se no conseguir achar o objeto.
Por exemplo, para pegar o handle para o "Excel Spreadsheet criado no ltimo
exemplo, use o seguinte:
Dim uiWorkspace As New NotesUIWorkspace
Dim uiDoc As NotesUIDocument
Dim objSheet As Variant
Set uiDoc = uiWorspace.CurrentDocument
Set objSheet = uiDoc.GetObject( "Expenses")
2.3 Mudando a forma que o documento mostrado
Existe um nmero de propriedades que voc pode definir para mudar a forma como
o documento mostrado. Voc pode tornar o help de campo ativo ou no usando a
propriedade FieldHelp. Defina a propriedade Ruler para mostrar ou esconder a rgua e o
HorzScrollBar para adicionar ou remover a barra de rolagem na rea inferior do documento.
Quando voc precisar mostrar ou esconder a janela de pre-visualizao, voc pode usar o
PreviewDocLink ou o PreviewParentDoc, conforme seja apropriado. Voc pode checar se o
documento est sendo mostrado na janela de preview checando sua propriedade
InPreviewPane.
NOTA
A propriedade PreviewParent tem um comando(@Command) correspondente,
ShowHideParentPreview que permite-lhe mostrar e esconder a janela de preview.
Se voc precisar mudar o documento do modo de leitura para edio ou vice-versa,
defina a propriedade EditMode. Aps o documento estar no modo de edio, voc pode
usar a propriedade HiddenChars para que os campos mostrem seus caracteres formatados.
Voc pode tambm definir o ttulo que o Notes mostra para o documento que est
usando a propriedade WindowTitle.
Vrias propriedades e mtodos do NotesUIDocument esto de acordo com como e
quando o documento atualizado. A propriedade AutoReload usada para assegurar que o
documento mostrado ser atualizado sempre que seu documento back-end mudar. O
default para AutoReload verdadeiro, ento a menos que voc mude-o, seu documento
estar sempre atualizado de acordo com o seu back-end. Se voc definir AutoReload para
Falso, voc precisa usar o mtodo Reload para atualizar o documento mostrado para incluir
quaisquer mudanas que tenham sido feitas para o seu documento back-end.

NOTA
Reload no atualiza a aparncia de quaisquer itens de texto rico que foram mudados em
seu documento back-end at que voc feche e abra novamente o documento.
O mtodo Refresh recalcula todos os componentes dos campos computados,
exatamente como se voc tivesse pressionado F9. O mtodo RefreshHideFormulas
recalcula todas as frmulas ocultas para o corrente documento. Voc realmente usa
RefreshHideFormulas quando um valor mudou no documento de forma a afetar sua
apresentao. Por exemplo, voc pode desejar exibir ou ocultar uma seo dentro de
um documento dependendo do valor de um campo. Quando o valor daquele campo
muda, chame RefreshHideFormulas para assegurar que a seo est sendo exibida ou
ocultada, conforme desejar.
Enquanto estivermos no assunto de sees, voc pode mudar a maneira que todas
as sees dentro do documento atual so mostradas usando os mtodos
CollapseAllSections e ExpandAllSections.
2.4 Trabalhando com o Documento
Aps ter um documento aberto na sua frente, o voc pode fazer com ele? Para
comear, voc pode checar se um documento novo ou no usando a propriedade
IsNewDoc. A propriedade retorna verdadeiro(true) se o documento nunca tiver sido salvo
em disco. Voc pode imprimir o documento usando o mtodo Print. Voc pode levar o Notes
a mostrar a caixa de dilogo "FilePrint chamando o mtodo sem parmetros.
Alternativamente voc pode fornecer parmetros para o nmero de cpias a serem
impressas, as pginas de incio e fim e se para imprimir em modo rascunho. Se voc usar
esses parmetros, o Notes imprime seu documento sem mostrar a caixa de dilogo
"FilePrint.
Voc pode categorizar o documento usando Categorize. Voc fornece o nome de
uma categoria e o mtodo coloca o documento naquela categoria. Se o documento tem
permisso para ser enviado, isto , contm um campo "SendTo, voc pode usar Send para
envi-lo para a lista de destinatrios no campo "SendTo. Se o documento contm um
campo "CopyTo ou "BlindCopyTo, os nomes contidos nesses campos tambm recebero
uma cpia do documento. Voc pode passar adiante a cpia do documento usando o
mtodo Foward. Foward cria um novo memo de correio contendo o documento e voc
completa e envia o memo como voc faria com qualquer outro memo de correiro.
Aps voc concluir o documento, voc pode fech-lo chamando o mtodo Close. Se
voc tiver feito quaisquer mudanas no documento, o Notes pergunta se voc gostaria de
salvar suas mudanas. Se voc realmente concluiu o documento, certifique-se de que o
documento est no modo de leitura, voc pode exclu-lo usando o mtodo DeleteDocument.
Este mtodo fecha o documento e marca-o para excluso, da mesma maneira que voc
marca documentos para excluso em vises. O documento s excludo quando voc
atualiza a viso ou sai do banco de dados e escolhe para excluir documentos marcados.
2.5 Salvando Suas Mudanas
Aps terminar mudanas em um documento existem trs mtodos que permitem-lhe
salvar suas mudanas. Estes mtodos salvam o documento para um disco exatamente da
mesma maneira que escolhendo "File\ Save no menu. O mtodo SaveNewVersion salva

uma nova verso do documento. Para que ele funcione, o formulrio do documento deve ter
as seguintes especificaes:
Para salvar o formulrio com verses as especificaes devem ser as seguintes:
Novas verses tornam-se respostas
Verses anteriores tornam-se respostas
Novas verses tornam-se irms
As verses devem ser criadas manualmente, isto , a especificao Criar Verses
deve ser Manual-Arquivo, Nova verso.
Se ambas as condies se encontrarem, SaveNewVersion cria uma nova verso do
tipo apropriado.
3 NotesVie9
A classe NotesUIView representa a viso exibida atualmente. No existem mtodos
associados com a classe. Suas trs propriedades esto mostradas na tabela 3.5.
Tabela 3.5 Propriedades da classe NotesUView
#ropr+e,a,e !e.9r+/0o T+po ,e !a,o. U.o
CalendarDateTime Somente aplicvel em vises de
calendrio. A data e a hora da rea
selecionada.
String Leitura
Documents Uma coleo de todos os documentos na
viso atual.
NotesDocument
Collection
Leitura
View A viso back-end que corresponde
viso atual
NotesView Leitura
CalendarDateTime retorna uma string contendo a data e a hora associadas com a
rea que est selecionada atualmente na viso calendrio. A propriedade Documents
retorna um objeto NotesDocumentCollection que contm todos os documentos na viso.
Voc usa a propriedade View para acessar o objeto NotesView back-end que corresponde
viso com a qual voc est trabalhando.
4 NotesUIDatabase
A 9la..e Notes"IData)ase repre.e6-a o 1a69o ,e ,a,o. No-e. Rue e.-7 a1er-o
a-ual5e6-e. Sua. ,ua. propr+e,a,e. e u5 5=-o,o e.-0o 5o.-ra,o. 6a.
-a1ela. 3.@ e 3.A.
Tabela 3.6 Propriedades da classe NotesUIDatabase
#ropr+e,a,e !e.9r+/0o T+po ,e !a,o. U.o
Database O banco de dados back-end que
corresponde ao banco de dados atual
NotesDatabase Somente
leitura
Documents Uma coleo de todos os documentos no NotesDocument Somente

banco de dados. Collection leitura
Tabela 3.7 Mtodos da classe NotesUIDatabase
#ropr+e,a,e !e.9r+/0o T+po ,e !a,o ,e
re-or6o
%alor ,e
Re-or6a,o
OpenView Dado o nome de uma viso no banco de
dados atual, abre a viso
Nenhum Nenhum
A. propr+e,a,e. Docume#ts e DataBase per5+-e5-l2e a9e..ar algu6. ,o. o1Fe-o.
1a9k-e6, Rue 9orre.po6,e5 ao 1a69o ,e ,a,o. a-ual. *pe#Vie9 per5+-e-l2e
a1r+r u5a *+.0o 6o (a69o ,e !a,o..
5 NotesSesion
A 9la..e NotesSessio# = a pr+69+pal ,e -o,a. a. 9la..e. 1a9k-e6, e repre.e6-a o
a51+e6-e ,o .9r+p- a-ual.
%o9< po,e u.ar 9la..e NotesSessio# para re.po6,er a. Rue.-Qe. .egu+6-e. .o1re o
.9r+p- a-ual:
E5 Rue 1a69o ,e ,a,o. o .9r+p- e.-7 ro,a6,o>
O script est rodando em um servidor Notes ou em uma estao de trabalho?
Se rodando em um servidor, qual o nome do servidor?
Se rodando em uma estao de trabalho, quem o usurio atual?
Em qual verso do Notes o script est rodando?
Em que plataforma ele est rodando?
Para agentes, quando foi a ltima rodada do agente, o que aconteceu e algum
arquivo foi salvo?
A tabela 3.8 lista todas as propriedades da classe NotesSession e a Tabela 3.9
mostra seus mtodos. Voc pode usar mtodos NotesSession para fazer o seguinte:
Ler e escrever em variveis de ambiente no arquivo NOTES.N;
Abrir bancos de dados;
Criar outros objetos Notes do tipo NotesDataTime, NotesLog, NotesNewsletter e
NotesDBDirectory;
Marcar documentos como tendo sido processados por um agente.

Tabela 3.8 Propriedades da classe NotesSession
#ropr+e,a,e !e.9r+/0o T+po ,e !a,o. U.o
AddressBooks O livro de endereos que esto disponveis ao
script atual.
Array of Notes
Databases
Leitura
CommonUserName A parte do nome comum da pessoa ou
servidor rodando o script
String Leitura
CurrentAgent O agente, se existir, que est rodando
atualmente
NotesAgent Leitura
Current Database O banco de dados no qual o script est
localizado.
Notes Database Leitura
DocumentContext Para agentes que tenham sido iniciados via
Notes AP e tenha criado um documento, esta
propriedade retorna o documento back-end
criado recentemente.
Notes Document Leitura
EffectiveUserName Se em uma Estao de Trabalho, o nome
completo da pessoa que est rodando o
script. Se em um servidor, o nome completo
da pessoa que editou por ltimo o script.
String Leitura
nternational As especificaes internacionais da mquina
na qual o script est rodando.
Notesnternational Leitura
sOnServer Verdadeiro se o script est rodando em um
servidor. Falso, se o script est rodando em
uma estao de trabalho.
Boolean Leitura
LastExitStatus O cdigo de status de sada retornado pelo
gerenciador de agentes na sua ltima
execuo
nteger Leitura
LastRun Somente para agentes script. A data quando
o agente rodou pela ltima vez.
Variante do tipo
DATA
Leitura
NotesVersion A verso do Notes na qual o script est
rodando
String Leitura
Platform O tipo de sistema de operao no qual o
script est rodando
String Leitura
SavedData Somente para agentes script. Um documento
Notes guardado dentro do Banco de Dados
que pode ser usado para armazenar dados
entre execues do agente.
Documento Notes Leitura
UserName Se em uma Estao de Trabalho, o nome
comum da pessoa que est rodando o script,
Se em um Servidor, o nome comum da
pessoa que editou o script por ltimo.
String Leitura
Tabela 3.9 Mtodos da classe NotesSession
#ropr+e,a,e !e.9r+/0o T+po ,e !a,o
,e re-or6o
%alor ,e Re-or6a,o
CreateDate Cria um novo objeto NotesDateRange Notes
DataRange
O objeto NotesData
Range criado
recentemente
Close Fecha a seo atual Nenhum Nenhum
CreateDataTime Dada uma string representando data e NotesDataTime O objeto Notes

hora vlidas, cria um novo objeto
NotesDateTime
DataTime criado
recentemente
CreateLog Dada uma string usada para dar nome
ao Log, cria um novo objeto NotesLog
NotesLog O objeto Notes Log
criado recentemente
CreateNews
Letter
Dado um objeto NotesDocument
Collection, cria um novo objeto
NotesNewsletter
NotesNewsletter O objeto Notes
Newsletter criado
recentemente
CreateTimer Cria um novo objeto NotesTimer NotesTimer O objeto Notes Timer
criado recentemente
FreeTime
Search
Procura tempos livres para fazer
calendrios e listas
Array de
NotesDateRange
Uma variedade de
objetos
NotesDataRange
representando vagas
(slots) disponveis
GetDatabase Dado o servidor e nome de arquivo
para um banco de dados, cria um novo
objeto NotesDatabase que pode ser
usado para acessar o banco de dados
e, se possvel, abr-lo
NotesDatebase O objeto
NotesDatabase criado
recentemente
GetDbDirectory Dado o nome servidor, cria um novo
objeto NotesDbDirectory que pode ser
usado para listar os bancos de dados
num servidor
NotesDb
Directory
O objeto Notes
DbDirectory criado
recentemente
GetEnvironment
String
Dado um nome de uma varivel de
ambiente string, pega seu valor.
Quando rodando em um servidor,
pega o valor NOTES.N do servidor.
Quando rodando em uma Estao de
Trabalho usa o NOTES.N do usurio
atual
Variant O valor da varivel do
ambiente
GetEnvironment
Value
Como em GetEnvironmentString mas
para uma varivel de ambiente
numrica
Variant O valor da varivel de
ambiente
SetEnvironment
Var
Dado o nome de uma varivel de
ambiente e valor novo, armazena o
novo valor no arquivo NOTES.N
apropriado. Quando rodando em um
servidor usa o NOTES.N do servidor.
Quando rodando em uma estao de
trabalho, usa o NOTES.N do usurio
corrente
Nenhum Nenhum
Update
ProcessedDoc
Somente para agentes script, marca
um documento como tendo sido
processado por um agente
Nenhum Nenhum
5.1 Achando o Banco de Dados Atual
Um dos usos mais comuns da classe NotesSession pegar o nome do banco de
dados atual, isto , aquele no qual o script est rodando. A propriedade CurrentDatabase
retorna um objeto NotesDatabase representando o banco de dados no qual o script est
rodando.

O exemplo a seguir mostra o nome de um banco de dados no qual o script est
rodando:
Dim s As New NotesSession
Dim db As NotesDatabase
Set db = s.CurrentDatabase
MessageBox("O script est executando no banco de dados" &
db.CurrentDatabase)
Usar CurrentDatabase uma tcnica til porque significa que voc no tem que
saber o nome do banco de dados dentro do seu script.
5.2 Achando Aonde o Script est Rodando
Use a propriedade IsOnServer da classe NotesSession quando precisar saber se
seu script est rodando em um servidor ou estao de trabalho. Se seu script est rodando
em um servidor, sOnServer retorna verdadeiro(true).
Por exemplo, se um agente deve ser rodado em um servidor, o cdigo seguinte
mostra uma mensagem apropriada caso voc tente execut-lo em uma estao de trabalho:
Dim s As New NotesSession
Dim db As NotesDatabase
f not s.sOnServer Then
MessageBox("Este cdigo deve ser usado no servidor")
End f
5.3 Checando Quem Est Rodando o Script
A classe NotesSession lhe fornece trs maneiras diferentes de achar o nome da
pessoa ou servidor que est rodando o script.
A propriedade UserName retorna o nome completo do usurio atual. Para scripts
rodando em uma estao de trabalho, o usurio atual a pessoa atualmente logada ao
Notes na estao de trabalho. Para scripts executando em um servidor, o usurio atual
sempre o servidor. Use esta propriedade quando for importante que voc saiba o nome
completo do usurio corrente.
Por exemplo, quando eu executar um agente script manualmente atravs do menu
agente na minha estao de trabalho, UserName retorna meu NOME/EBS. Se eu mudar o
script de forma que seja desencadeado na fila a cada uma hora e depois rodar no servidor,
UserName retorna SERVDOR/EBS.
Quando voc precisa somente a parte comum do nome de um usurio, use a
propriedade CommonUserName. Como seu nome sugere, esta propriedade retorna
exatamente a parte comum do nome do usurio atual. Quando eu executo um agente
manualmente atravs do menu agente na minha estao de trabalho, CommonUserName
retorna meu NOME; quando eu rodo o mesmo agente em um servidor, ela retorna
SERVDOR.

A terceira propriedade que lhe d o nome do usurio a propriedade
EffectiveUserName. Para scripts rodando em servidores esta propriedade retorna
exatamente o mesmo que a propriedade UserName. A diferena ocorre para scripts
rodando em servidores onde EffectiveUserName retorna o nome completo do ltimo usurio
a editar o script.
G.C C2e9a6,o Co5o o No-e. = ,ef+6+,o [Se--Up\
Voc pode achar tanto o tipo de sistema de operao como a verso do Notes na
qual seu script est executando. A propriedade Plataform permite-lhe achar o tipo de
sistema de operacionalb. Da mesma forma que muitas outras propriedades do
NotesSession, Plataform lhe d uma resposta diferente dependendo de onde o script est
rodando. Para scripts rodando em uma estao de trabalho, Plataform retorna o tipo de
sistema de operacional da estao. Para scripts rodando em um servidor, o tipo de sistema
de operacional do servidor retornado.
NOTA
"Plataform" no retorna detalhes completos do sistema de operao. Por
exemplo, retorna UNIX para AIX, Sun, HP-UX and SCO.
Use a propriedade NotesVersion do NotesSession para achar em qual verso do
Notes o script est executando.
Dim s As New NotesSession
Dim strVersion As String
StrVersion = s.NotesVersion
Messsagebox(strVersion)
End Sub
Voc pode usar a propriedade nternacional para checar as definies internacionais
atuais, do tipo smbolo atual e o formato data/hora.
5.5 Lendo e Escrevendo para Variveis de Ambiente
A classe NotesSession contm trs mtodos para lhe dar acesso s variveis de
ambiente Notes armazenadas no NOTES.N ou arquivos preferenciais. Se seu script est
executando em um servidor, o NOTES.N do servidor usado; caso contrrio o NOTES.N
do usurio usado.
Voc pega uma varivel de ambiente usando tanto GetEnvironmentString ou
GetEnvironmnetValue. Use GetEnvironmentString para retornar uma varivel de ambiente
string e use GetEnvironmentValue para pegar uma varivel de ambiente numrica. Com
cada mtodo, voc fornece o nome e o tipo da varivel de ambiente e o mtodo retorna o
valor. Existem dois tipos de variveis de ambiente: varivel de usurio e variveis de
sistema. Nomes de variveis de usurio comeam com o smbolo dollar, nomes de variveis
de sistema no.

Use SetEnvironmentVar para criar uma nova varivel de ambiente ou mudar o valor
de uma j existente. Voc fornece o nome da varivel e seu novo valor. O qual deve ser
uma string, um inteiro, ou uma data. O mtodo converte o valor fornecido em uma string de
texto e escreve-a para o NOTES.N com o nome que voc forneceu.
5.6 Abrindo o Banco de Dados
Use o mtodo GetDatabase com o nome do servidor e do arquivo para abrir um
banco de dados existente. Se o banco de dados fornecido existe no servidor especfico com
nome de arquivo correto, um novo objeto NotesDatabase criado e aberto. Se, por alguma
razo, o banco de dados no for encontrado, o mtodo retorna um objeto NotesDatabase
fechado. O mtodo GetDbDirectory til quando voc precisa processar um conjunto de
bancos de dados no diretrio de dados. Quando fornecido com o nome de um servidor, o
mtodo retorna um objeto NotesDbDirectory, o qual aponta para o diretrio de dados do
Notes naquele servidor. Voc pode ento usar mtodos nas classes NotesDbDirectory e
NotesDatabase para processar os bancos de dados no diretrio.
5.7 Trabalhando com Agentes
Uma das caractersticas realmente teis da classe NotesSession sua capacidade
para armazenar informaes da hora que um agente executou por ltimo. Desta maneira,
voc pode construir uma histria do que um agente tem feito.
Existem trs propriedades que voc pode usar a partir do agente LotusScript para
pegar informaes sobre hora que um agente executou por ltimo.
A propriedade LastRun retorna a data que o agente foi executado por ltimo ou
11/30/1999 se o agente nunca tiver sido executado antes. O seguinte script checa se um
agente j foi executado anteriormente:
Sub Initialize
Dim s As New NotesSession
Dim datLastRun As Variant
DatLastRun = s.LastRun
If datLastrun = Cdat("11/30/1999") then
Messagebox("Este agente no foi executado antes")
Else
Messagebox("Este script foi executado pela ltima vez em "& Cstr(datLAstRun))
End If
End Sub
A propriedade LastExitStatus o cdigo de sada que o Administrador de Agente
retornou da ltima vez que o agente atual executou. Se o agente executou sem erros, o
LastExitStatus 0 (zero).
A propriedade SavedData retorna um objeto NotesDocument que o agente corrente
pode usar para armazenar dados. assim que voc salva informaes entre execues.
Por exemplo, suponha que um agente executado toda noite para checar se algum foi

adicionado ou removido da ACL de um banco de dados. Os nomes das pessoas no ACL
podem ser armazenados no documento SaveData, cada vez que o agente executa de forma
que ele pode ento checar os nomes salvos ao invs dos nomes atuais.
Existe tambm um mtodo relacionado de agente na NotesSession, o mtodo
UpdateProcessedDoc. Ele usado em conjunto com alguns mtodos e propriedades da
classe NotesDatabase para assegurar que documentos sero processados somente uma
vez por agente. Veremos um exemplo de como usar o mtodo UpdateProcessedDoc mais
tarde na sesso NotesDatabase.
G.D Tra1al2a6,o 9o5 Ou-ro. O1Fe-o. Notes
Voc pode criar vrios outros objetos Notes usando mtodos na classe
NotesSession. Use CreateDateRange, CreateDateTime, CreateLog e CreateNewsletter para
criar objetos NotesDateRange, NotesDateTime, NotesLog e NotesNewsletter. Veremos
estes objetos em maiores detalhes posteriormente nas sesses NotesDateRange,
NotesDateTime, NotesLog e NotesNewsletter.
6 NotesDbDirectory
Esta uma das classes mais fceis para entender. Possui somente uma
propriedade e trs mtodos. Representa o diretrio de dados do Notes em um servidor ou
estao de trabalho especficos e seu uso principal percorrer um conjunto de bancos de
dados de um tipo especfico ou que obedeam certos critrios. Por exemplo, voc pode
percorrer todos os bancos de dados, em um servidor, que esto disponveis para replicao.
Voc cria um novo objeto NotesDbDirectory de duas formas: Voc pode usar o
mtodo GetDbDirectory da NotesSession como vimos na ltima seo, ou voc pode usar o
mtodo New. Voc especifica o tipo de banco de dados que voc est procurando; veja a
tabela 3.10 para detalhes.
Tabela 3.10 Tipos bsicos para NotesDbDirectory
#ara A92ar E.-e T+po ,e (a69o ,e !a,o. U.e E.-a Co6.-a6-e...
Qualquer banco de dados Notes DATABASE
Qualquer banco de dados modelo TEMPLATE
Todos os bancos de dados Notes disponveis para
replicao
REPLCA_CANDDATE
Todos os bancos de dados Notes que podem ser um modelo TEMPLATE_CANDDATE
Aps voc ter um objeto NotesDbDirectory, voc pode acessar o banco de dados no
diretrio, usando GetFirstDatabase e GetNextDatabase. Voc pode usar a propriedade
Name para encontrar o nome do servidor no qual voc est acessando o diretrio:
Sub Click(Source As Button)
Dim uiWorkspace As New NotesUIWorkspace
Dim uiDoc As NotesUIDocument
Dim DbDir As NotesDbDirectory
Dim db As NotesDatabase

Dim strDbsAvailToReplicate
Set uiDoc = uiWorkspace.CurrentDocument
Set DbDir = New NotesDbDirectory("Rubi")
Ser db = dbDir.GetFirstDatabase(REPLICA_CANDIDATA)
Do While Not (db Is Nothing)
StrDbsAvailToReplicate = strDbsAvailToReplicate + db.Ttile + chr(10)
Set db = DbDir.GetNextDatabase
Loop
Call uiDoc.FieldSetText("ServerName", DbDir.Name)
Call uiDoc.FieldSetText("DbsAvailToReplicate", strDbsAvailToReplicate)
End Sub
O script acima usa New para criar um novo objeto NotesDbDirectory para servidor
"Rubi. Ele abre ento cada banco de dados no servidor que est disponvel para replicao
e armazena seu nome no campo DbsAvailToReplicate no documento atual. Ele tambm usa
a propriedade Name para armazenar o nome do servidor no campo ServerName. As tabelas
3.11 e 3.12 mostram as propriedades e mtodos da classe NotesDbDirectory.
Tabela 3.11 Propriedades da classe NotesDbDirectory
#ropr+e,a,e !e.9r+/0o T+po ,e !a,o. U.o
Name O nome do servidor no qual este
diretrio est localizado
String Somente Leitura
Tabela 3.12 Mtodos da classe NotesDbDirectory
#ropr+e,a,e !e.9r+/0o T+po ,e !a,o. ,e
re-or6o
%alor ,e re-or6o
GetFirst
Database
Dado um tipo de banco de dados para
procurar, retorna o primeiro banco de dados
daquele tipo. Voc pode procurar qualquer
tipo de banco de dados, qualquer modelo, e
banco de dados que pode ser replicado, ou
qualquer banco de dados que pode ser um
modelo.
NotesDatabase O primeiro banco
de dados do tipo
que voc
especificou
GetNext
Database
Se voc j tiver usado o mtodo First
Database, retorna o prximo banco de
dados do tipo que voc especificou
NotesDatabase O prximo banco
de dados do tipo
que voc
especificou
New Cria um novo objeto NotesDbDirectory. NotesDbDirectory O objeto criado
recentemente

7 NotesDatabase
A classe NotesDatabase representa um banco de dados Notes. Voc usa a classe
para fazer o seguinte:
Criar, modificar e excluir bancos de dados;
Criar cpias e replicas de bancos de dados;
Modificar listas de controble de acesso;
Criar documentos;
Encontrar documentos.
A classe tambm lhe fornece acesso outras classes, do tipo NotesView,
NotesDocumentCollection e NotesDocument. Veja a tabela 3.13 para uma lista de
propriedades da classe NotesDatabase. Seus mtodos esto listados na tabela 3.14.
Tabela 3.13 Propriedades da classe NotesDatabase
#ropr+e,a,e !e.9r+/0o T+po ,e !a,o. U.o
ACL A ACL para o banco de dados NotesACL Leitura
Agents Todos os agentes definidos no banco de
dados
Array of
NotesAgents
Leitura
AllDocuments Uma coleo contendo todos os
documentos de um banco de dados.
NotesDocument
Collection
Leitura
Categories Todas as categorias s quais um banco de
dados pertence
String Leitura
Created A data que o banco de dados foi criado Variant of type
DATE
Leitura
CurrentAccess
Level
O nvel de acesso ACL para o usurio
atual
nteger
Constante
Leitura
DelayUpdates Verdadeiro(true) se mltiplas atualizaes
em documentos em um servidor so
processadas juntas para melhor
performance
Boolean Leitura Gravao
DesignTemplate
Name
O nome do modelo de criao para o
banco de dados.
String Leitura
FileName O nome e extenso do arquivo do banco
de dados.
String Leitura
FilePath O caminho completo e nome do arquivo do
banco de dados incluindo "drive de leitura,
diretrio, nome de arquivo e extenso.
String Leitura
Forms Os formulrios no banco de dados. Array of
NotesForm
objects.
Leitura
sFTndexed Verdadeiro(true) se o banco de dados tem
ndice de texto completo.
Boolean Leitura
sMultiDBSearch Verdadeiro(true) se o banco de dados tem
ndice de texto completo.
Boolean Leitura
sOpen Verdadeiro(true) se o banco de dados
estiver aberto.
Boolean Leitura
sPrivateAddress Verdadeiro(true) se o banco de dados Boolean Leitura

Book um Livro de Endereo Pessoal.
sPublicAddress
Book
Verdadeiro(true) se o banco de dados
um Livro de Endereo Pblico.
Boolean Leitura
LastFTndexed Para bancos de dados com um ndice
completo de texto, a data que o ndice foi
atualizado da ltima vez. 30/12/1999 para
bancos de dados sem ndice completo de
texto.
Variant of type
DATE
Leitura
LastModified A data que o banco de dados foi
modificado pela ltima vez.
Variant of type
DATE
Leitura
Managers Todas as pessoas, grupos e servidores
que so os administradores do banco de
dados.
Variant of type
DATE
Leitura
Parent O NotesSession que contm o banco de
dados.
NotesSession Leitura
PercentUsed A percentagem do banco de dados que
est em uso atualmente.
Double Leitura
ReplicaD O D de replica(16-caractere) para o
banco de dados.
String Leitura
Server O nome do servidor no qual o banco de
dados est armazenado.
String Leitura
Size O tamanho, em bytes, do banco de dados. Double Leitura
SizeQuota O tamanho mximo, em bytes, at o qual o
banco de dados pode crescer.
Long Leitura/Gravao
TemplateName Para bancos de dados que so modelos, o
nome do modelo. Se o banco de dados
no for modelo, retorna uma string vazia.
String Leitura
Title O ttulo do banco de dados. String Leitura/Gravao
Unprocessed
Documents
Todos os documentos que so
considerados para ser "unprocessed pelo
script .
NotesDocument
Collection
Somente Leitura
Views Todas as vises e pastas pblicas dentro
do banco de dados. Se o banco de dados
estiver armazenado localmente, pastas
pessoais so includos.
Variant of Notes
Views
Leitura
Tabela 3.14 Mtodos da classe NotesDatabase
#ropr+e,a,e !e.9r+/0o T+po ,e !a,o.
Re-or6a,o.
%alor Re-or6a,o
Close Fecha o banco de dados. Nenhum Nenhum
Compact Compacta um banco de dados local.
Perceba que voc no pode usar este
mtodo para compactar o banco de
dados aonde o script est rodando.
Long O nmero de bytes
recuperados na
compactao do banco
Create Dado um servidor e um nome de
arquivo, cria um novo banco de dados.
Nenhum Nenhum
CreateCopy Dado um servidor e um nome de
arquivo, cria uma cpia do banco de
dados. D cpia o mesmo ttulo e
ACL do original.
NotesDatabase Um objeto
NotesDatabase
representando a cpia
criada recentemente
Create
Document
Cria um documento novo e vazio no
banco de dados. Note que voc deve
NotesDocument O documento criado
recentemente

salvar o documento antes de de fechar
o banco; caso contrrio, o documento
ser perdido.
CreateForm
Template
Dado um servidor, nome de arquivo e
o nome de um modelo, cria um novo
banco de dados baseado no modelo.
NotesDatabase Um objeto do banco de
dados Notes
representando o banco
criado recentemente
CreateReplica Dado um servidor, nome de arquivo,
cria uma cpia rplica do banco de
dados. Fornece a rplica com o
mesmo ttulo e ACL do original.
NotesDatabase Um objeto do banco de
dados Notes represen-
tando o banco criado
recente-mente
FTSearch Dada uma string representando uma
vlida consulta de texto completo, o
texto completo procura o banco de
dados.
NotesDocument
Collection
Uma coleo de
documentos
atendendo aos
critrios da consulta,
classificada de forma
que os documentos
mais relevantes esto
em primeiro lugar
GetAgent Fornece um agente dado seu nome. NotesAgent O agente
GetDocument
ByD
Dado o NotesD de um documento,
encontra o documento.
NotesDocument O documento
GetDocument
ByUND
Similar ao anterior porm usa o UND. NotesDocument O documento
GetDocument
ByURL
Sendo banco de dados Notes um
Web Navigator, retorna o documento
Notes que corresponde pgina WEB
com URL que voc especificar. Se
necessrio voc pode forar o banco
de dados Navigator Web para
recarregar a pgina Web.
NotesDocument O documento
correspondente URL
GetForm Pega um formulrio dado o seu nome
ou alias.
NotesForm O formulrio
GetProfile
Document
Pega um documento Profile do banco
de dados.
NotesDocument O documento profile
GetURL
Header
Para o banco de dados Web
Navigator, dado um URL e string de
cabealho, retorna a informao do
cabealho URL requerida.
String A informao de
cabealho
GetView Dado o nome ou alias de uma viso ou
pasta, retorna a viso ou pasta.
NotesView A viso ou pasta
requisitado
GrantAccess Muda o ACL para o banco de dados
para dar pessoa, grupo ou servidor
um nvel de acesso especfico.
Nenhum Nenhum
New Cria um novo objeto banco de dados
Notes. Note que este mtodo no cria
um novo banco de dados no disco.
Banco de dados
Notes
O objeto criado
recentemente
Open Dado um servidor e um nome de
arquivo, abre um banco de dados
existente.
Boolean Verdadeiro se o banco
de dados foi
encontrado e aberto
com sucesso
OpenBy
ReplicaD
Similar ao Open, mas usa o nome do
servidor fornecido e replica D para
Open Verdadeiro se o banco
de dados foi

encontrar o banco de dados encontrado e aberto
com sucesso
Openf
Modified
Dado um servidor, nome de arquivo e
data abre um banco de dados
existente, sob a condio que tenha
sido modificado desde a data que voc
especificou.
Boolean Verdadeiro se o banco
de dados tiver sido
encontrado e aberto
com su-cesso
OpenMail Abre o correio do banco de dados do
usurio atual.
Nenhum Nenhum
OpenURLDB Abre o Navegador Web default do
banco de dados.
Boolean Verdadeiro se o banco
de dados tiver sido
encontrado e aberto
com sucesso
OpenWithFail
Over
Dado um servidor e nome de arquivo,
tenta abrir o banco de dados. Se o
mesmo no pode ser aberto e o
servidor est em um grupo de
servidores, tenta abrir uma rplica do
banco de dados em outro servidor em
grupo.
Boolean Verdadeiro se o banco
de dados foi
encontrado e aberto
com sucesso
QueryAccess Dado o nome de uma pessoa, grupo
ou servidor, devolve seus nveis de
acesso ao banco de dados.
nteger Constant O nvel de acesso
Remove Exclui o banco de dados. Nenhum Nenhum
Replicate Dado o nome de um servidor, replica o
banco de dados com sua rplica
naquele servidor.
Boolean Verdadeiro se o banco
de dados foi replicado
com sucesso
RevokeAccess Remove uma pessoa, grupo ou
servidor do ACL para o banco de
dados.
Nenhum Nenhum
Search Dada uma frmula de seleo do
Notes e uma data isolada, procura no
banco de dados todos os documentos
que combinam com a frmula.
NotesDocument
Collection
Todos os documentos
que com binam com a
frmula e tm sido
modificados desde a
data separada
Unprocessed
FTSearch
Somente para agentes script, o
mesmo que FTSearch, exceto que s
so procurados aqueles documentos
que o agente considera no
processados.
NotesDocument
Collection
Os documentos
Unprocessed
Search
Somente para agentes script, o
mesmo que Search, exceto que s so
procurados aqueles documentos que o
agente considera no processados.
NotesDocument
Collection
Os documentos
UpdateFT
ndex
Para qualquer banco de dados com
um ndice de texto completo, atualiza o
ndice. Para banco de dados local, cria
o ndice, se necessrio.
Nenhum Nenhum
7.1 Criando um Banco de Dados

A classe NotesDatabase lhe oferece vrios mtodos para criar um novo banco de
dados em um disco. O mais simples o Create, o qual cria um novo banco de dados, em
branco. Voc especifica o servidor e o nome de arquivo para usar e se para abrir o banco
aps ter sido criado.
NOTA
Um banco de dados tem que ser aberto antes que voc possa usar a maioria de suas
propriedades ou mtodos.
Aps voc ter criado um novo banco de dados ou ter aberto um existente, voc pode usar
quaisquer dos mtodos seguintes para criar novos bancos baseados no original:
CreateCopy, CreateReplica ou CreateFromTemplate.
Use CreateCopy para criar uma cpia do banco de dados atual. A cpia contm
todos os formulrios, vises e agentes do original, tem o mesmo ACL e o mesmo ttulo.
Voc pode criar uma rplica do banco de dados atual usando o mtodo CreateReplica.
Voc fornece um nome de servidor e um nome de arquivo e o mtodo cria uma rplica do
banco de dados na sua nova localizao. Se o banco de dados atual um modelo, voc
pode criar um novo banco de dados baseado no modelo usando CreateFromTemplate.
Como com os outros mtodos, voc fornece um servidor e nome de arquivo para o novo
banco. Voc pode tambm especificar que o novo banco de dados dever herdar futuras
mudanas de estruturas do modelo. O exemplo a seguir usa esses mtodos para criar
novos bancos de dados.
Dim s As New NotesSession
Dim db As NotesDatabase
Dim dbTemplate As New NotesDatabase("Sapphire", "report.ntf")
Dim dbReplica As NotesDatabase
Set db = s.CurrentDatabase
Cria uma rplica do banco de dados corrente em um servidor diferente
Set dbReplica = db.CreateReplica("Diamante","stock.nsf")
Cria uma copia do banco de dados corrente
Set dbCopy = db.CreateCopy("Diamante","backup\stock.nsf")
DbNew.Title = " Backup of New Stock Control Levels "
Cria um novo banco de dados baseado em um modelo
Set dbNew = dbTemplate.CreateFromTemplate( "Diamante", "report.nsf",True)
!ICA
Scripts rodando em um servidor podem somente criar ou acessar bancos de dados em um
servidor.

A.$ A1r+6,o" Pe92a6,o e E:9lu+6,o u5 (a69o ,e !a,o..
Antes que voc acesse quaisquer das propriedades ou mtodos de um banco de
dados, o mesmo deve ser aberto. Aps abr-lo, todas as suas propriedades e mtodos
estaro disponveis voc.
Voc pode usar a propriedade IsOpen para checar se o banco de dados est aberto.
Se no estiver, a maneira mais simples para abr-lo usar o mtodo Open. Voc fornece
um servidor e um nome de arquivo e o banco de dados aberto se existir e o script tem
pelo menos acesso de leitura ao mesmo. Se voc conhece o D da rplica do banco de
dados, voc pode usar o mtodo OpenByReplicaID. Ele trabalha da mesma maneira que o
mtodo Open, mas voc fornece o D da rplica ao invs do servidor e do nome do arquivo.
OpenIfModified til para agentes que devem checar periodicamente atualizaes para
bancos de dados. Voc fornece um servidor e um nome de arquivo como para o Open, mas,
em adio, voc tambm fornece o objeto NotesDateTime. O banco de dados somente
aberto se tiver sido modificado desde a data representada pelo objeto NotesDateTime. Se
seus servidores Notes esto configurados como parte de um grupo de servidores, voc
pode usar o novo mtodo OpenWithFailover para tentar abrir um banco de dados em um
servidor e se mal sucedido automaticamente tente abrir a rplica do banco de dados em
outro servidor no grupo.
Existe tambm uma dupla de mtodos especializados. OpenMail encontra e abre o
banco de dados de correio para o usurio atual. Como em alguns outros mtodos,
OpenMail comporta-se diferentemente executando em uma estao de trabalho e
executando em um servidor. Em uma estao de trabalho, ele encontra o banco de dados
de correio para o usurio corrente. Em um servidor, ele encontra o banco de dados de
correio para a ltima pessoa que modificou o script.
Se um Navegador Web Notes tiver sido definido em seu local, voc pode usar o
OpenURLDb para ach-lo e abr-lo.
Todos os mtodos de abertura retornam verdadeiro(true) se o banco de dados tiver
sido aberto com sucesso e falso(false) se o mesmo no tiver sido aberto por qualquer razo.
!ICA
Para abrir um banco de dados, seu script deve ter pelo menos acesso de leitura. Desta
forma, se o script estiver executando na sua estao de trabalho, voc deve ter acesso
de leitura ao banco que deseja abrir. Se o script estiver rodando em um servidor, o
servidor deve ter acesso de leitura ao banco de dados.
Quando seu script termina de executar, o Notes automaticamente fecha todos os
bancos de dados que o script abriu. Se voc necessita explicitamente fechar o banco de
dados, use o mtodo Close. Aps ter fechado um banco, voc no pode acessar seus
mtodos e propriedades. Use o mtodo Remove se voc desejar excluir o banco de dados.
7.3 Trabalhando com um Banco de Dados
Aps ter aberto um banco de dados, uma grande quantidade de informaes sobre
ele estar disponvel voc. Existem propriedades que de dizem quando foi criado
(Created) ou modificado por ltimo (LastModified). Voc pode pegar o servidor do banco de
dados , nome do arquivo e D da rplica usando as propriedades server, FilePath e
ReplicaID. Voc pode achar seu ttulo usando a propriedade Title e checar em que

categorias o banco de dados est usando a propriedade Categories. A propriedade Parent
de um banco de dados retorna o NotesSession que contm o banco de dados.
Se voc est trabalhando com ndices de texto completo, voc pode checar se o
banco de dados est indexado usando a propriedade IsFTIndexed ou usar LastFTIndexed
para encontrar data e hora que o ndice foi atualizado pela ltima vez. Voc pode usar o
novo mtodo IsMultiDbSearch para checar se o banco contm um ndice de texto completo
para mltiplos banco de dados. Se voc necessitar atualizar o ndice voc pode chamar o
mtodo UpdateFTIndex. Voc pode tambm us-lo para criar um ndice de texto completo
para um banco de dados, desde que o banco esteja armazenado localmente em uma
estao de trabalho. Se voc tentar us-lo em um banco de dados "server-based que no
possui ndice de texto completo, voc recebe um erro. O exemplo seguinte checa se um
banco de dados possui um ndice de texto completo e cria um, se necessrio. Se o banco
de dados j possui um ndice de texto completo, o script atualiza-o somente se o banco de
dados tiver sido modificado desde a ltima vez que o ndice completo foi atualizado.
Sub Click(Source As Button)
Dim s As New NotesSession
Set db = s.CurrentDatabase
If (Not db.IsFTIndexed) then
Print "Criando um texto de ndice completo... "
Call db.UpdateFTIndex(True)
End If
If (db.LastModified > db.LastFTIndexed) Then
Print "Atualizando um texto de ndice completo..."
Call db.UpdateFTIndex(False)
End If
Print " Finalizado."
End Sub.
Voc pode encontrar o tamanho do banco de dados usando as propriedades Size,
SizeQuotae PercentUsed. Size lhe d o tamanho do banco de dados em bytes e
PercentUsed lhe d o percentual deste tamanho que contm dados (versus espaos
vazios). SizeQuota retorna o mximo de bytes que seu administrador Notes tem permitiu
para este banco de dados. Por exemplo, voc pode usar Size e SizeQuota para monitorar o
banco de dados e emitir um aviso se seu tamanho aproximar-se do limite da quota. Ou, se o
PercentUsed for mais alto que um certo percentual, voc pode usar o mtodo Compact para
reaproveitar o espao vazio.
!ICA

Voc s pode compactar bancos de dados locais usando o mtodo Compact. Ento se
voc executar um script na sua estao de trabalho, voc s pode compactar um banco
de dados em sua estao de trabalho. Se voc precisar compactar bancos de dados do
servidor, assegure-se de executar o script no servidor.
Se o banco de dados um modelo, voc pode achar o nome do modelo usando a
propriedade TemplateName. Da mesma forma, se o bando de dados herdar sua estrutura
de um modelo, voc pode achar o nome do modelo do qual ele herdou a estrutura usando a
propriedade DesignTemplateName.
Se voc estiver interessado no Livro de Endereos Notes e tiver usado a
propriedade AddressBooks da NotesSession para pegar o Livro de Endereos disponvel
atualmente, voc pode checar cada um, se um livro de endereo pblico ou privado.
IsPublicAddressBook e IsPrivateAddressBook retorna verdadeiro(true) se o banco de dados
do tipo apropriado. Por exemplo, o script seguinte conta o nmero de livros de endereos
pblicos e privados disponveis atualmente:
Sub Click(Source As Button)
Dim s As New NotesSession
Dim AddressBooks As Variant
Dim iPublicAddressBooks As Integer
Dim iPrivateAddressBooks As Integer
AddressBooks = s.AdressBooks
Forall Book in AddressBooks
If Book.IsPublicAddressBook Then
iPublicAddressBooks = iPublicAddressBooks + 1
End If
If Book.IsPrivateAddressBook Then
iPrivateAddressBooks = iPublicAddressBooks + 1
End If
End Forall
MessageBox "Este sesso tem " & Str$(iPublicAddressBooks) & " livros endereos
Pblicos e " & Str$(iPrivateAddressBooks) & "livros endereos privados
End Sub
Voc pode pegar uma lista de todos os agentes em um banco de dados usando as
propriedade Agents. Atualmente, o que voc pega uma array de objetos NotesAgent.
Voc pode ento usar as propriedades da classe NotesAgent para mostrar informaes

sobre cada agente. Se voc conhece o nome de um agente, voc pode pegar seu objeto
NotesAgent correspondente usando o mtodo GetAgent. Da mesma forma, voc pode usar
a propriedade Forms e o mtodo GetForm para trabalhar com formulrios no banco de
dados.
Voc pode forar o banco de dados a replicar com um servidor especfico usando o
mtodo Replicate. Voc fornece o nome do servidor e o mtodo inicia a replicao e retorna
verdadeiro(true) se a replicao foi bem sucedida.
7.4 Trabalhando com a Lista de Controle de Acesso(ACL)
A classe NotesDatabase fornece-lhe vrios mtodos e propriedades para permitir-lhe
examinar e modificar definies de ACL para o banco de dados. Voc pega o ACL para o
banco de dados usando a propriedade ACL. Esta retorna um objeto NotesACL
representando o ACL atual. Voc pode ento usar os mtodos e propriedades das classes
NotesACL e NotesACLEntry para ler e modificar o ACL.
Mesmo que voc no use um objeto NotesACL, voc pode ainda trabalhar com o
ACL para o banco de dados. Voc pode usar o mtodo QueryAccess para checar o nvel de
acesso para uma pessoa, grupo ou servidor. Fornea ao mtodo o nome de uma pessoa,
grupo ou servidor e ele retornar uma constante integer representando o nvel de acesso
atual ao banco de dados para o nome que voc especificou. Veja a tabela 3.15 para
detalhes.
Ta1ela 3.1G Co6.-a6-e. NX*e+. ,e A9e..o para No-e.ACL
Nvel de Acesso Constante
Ne62u5 ACCLEVEL NOACCESS
!epo.+-or ACCLEVEL DEPOSTOR
Le+-or ACCLEVEL LETOR
Au-or ACCLEVEL AUTOR
E,+-or ACCLEVEL EDTOR
!e.+g6er ACCLEVEL DESGNER
A,5+6+.-ra,or ACCLEVEL ADMNSTRADOR
Voc pode usar QueryAccess para checar se um usurio tem permisso para
executar certas tarefas no banco de dados. Por exemplo, o script seguinte checa se o
usurio atual tem pelo menos acesso de Edio ao banco de dados:
Sub Click(Source As Button)
Dim s As New NotesSession
Dim db As NotesDatabase
Dim iAccessLevel AS Integer

Set db = s.CurrentDatabase
iAccessLevel = db.QueryAccess(s.UserName)
Select Case iAccessLevel
Case ACLLEVEL_MANEGER
Print " Voc tem acesso de designer para este banco de dados"
Case ACLLEVEL_EDITOR
Print " Voc tem acesso editor para este banco de dados"
Case Else
Print " Voc no tem acesso editor para este banco de dados"
End Select
End Sub
Voc pode achar o nvel de acesso do usurio atual usando a propriedade Notes
DatabaseCurrentAccessLevel. Esta retorna o mesmo conjunto de constantes integer como
QueryAccess. Voc pode tambm pegar uma lista de nomes de pessoas, grupos ou
servidores que tenham acesso de Administrao ao banco de dados usando a propriedade
Managers. Esta propriedade retorna uma lista de nomes de administradores do banco de
dados.
Se voc necessitar alterar o nvel de acesso de algum, voc tem duas maneiras:
usar a propriedade ACL para pegar o objeto NotesACL e ento usar seus mtodos ou usar
os mtodos GrantAccess e RevokeAccess do NotesDatabase. Use o GrantAccess para dar
a uma pessoa, grupo ou servidor um nvel de acesso especfico. Use RevokeAccess para
remover um nome do ACL.
7.5 Criando um Documento
Use CreateDocument para criar um novo documento no banco de dados. Este
mtodo retorna um objeto NotesDocument, o qual voc pode ento usar para adicionar
dados e salvar o novo documento. Veremos NotesDocument em detalhes na seo
NotesDocument.
7.6 Encontrando um Documento
Todos os documentos no banco de dados Notes tm dois nicos nmeros que
podem ser usados para identific-los. O "Note D um D de 8 (oito) caracteres que
unicamente identifica um documento dentro de um banco de dados particular. O "Notes D
especfico para o banco de dados, isto , uma cpia do documento em uma rplica do
banco de dados pode ter um Note D diferente. O D universal para um documento um D
de 32 caracteres que unicamente identifica o documento em todas as cpias do banco de
dados. A classe NotesDatabase tem mtodos que permitem-lhe encontrar um documento
tanto pelo seu "Notes D como pelo seu "Universal D.

Se o banco de dados atual um banco de dados Navegador Web, voc pode
encontrar um documento atravs de seu "Uniform Resource Locator" (URL) usando
GetDocumentByURL. Por exemplo, para acessar a ltima atualizao da home page do
Lotus do banco de dados Navegador Web, voc pode usar o seguinte:
Dim s As New NotesSession
Dim dbWebNavigator As NotesDatabase
Dim LotusHomePage As NotesDocument
Assume que o banco de dados corrente o navegador da Web
Set dbWebNavigator = s.CurrentDatabase
Set LotusHomePage = dbWebNavigator.GetDocumentByURL("
http://www.lotus.com", True)
Se voc precisar fazer coisas ornamentadas com o Hypertext Transport Protocol
(HTTP) informao de cabealho para pgina Web, voc pode usar GetURLHeaderInfo
para acessar um valor de cabealho especfico. Fornea o URL e o nome do valor de
cabealho que voc deseja e o mtodo retorna o valor do cabealho. Se a pgina Web no
contm o cabealho requisitado, o mtodo retorna uma string nula.
A.A A92a6,o u5 grupo ,e ,o9u5e6-o.
Voc pode achar todos os documentos de um banco de dados usando a propriedade
AllDocuments. AllDocuments retorna um NotesDocumentCollection contento todos os
documentos do banco de dados. Se voc quer achar um subconjunto de documentos do
banco de dados, existem dois mtodos diferentes que voc pode usar; Search e FTSearch.
Se voc quer selecionar os documentos usando uma frmula de seleo Notes, voc
pode usar o mtodo Search. Voc fornece Search com os seguintes parmetros:
Uma frmula de seleo Notes, tal como Form = "Main Topic";
Um objeto NotesDateTime. Somente documentos que foram modificados
desde a data especificada por um objeto date-time so includos nos resultados
de busca;
O nmero de documentos retornados (ou 0 ou todos os documentos).
O mtodo retorna um NotesDocumentCollection contento todos os documentos que
satisfazem a seleo e o critrio de data.
Se os documentos que voc est procurandos so melhor encontrados por uma
consulta de texto completo, use o mtodo FTSearch. Com FTSearch, voc fornece dois
parmetros, uma consulta de texto completo e o nmero de documentos a retornar. O
mtodo busca o banco de dados e retorna um NotesDocumentCollection contento os
documentos correspondentes ordenados na ordem de relevncia.
Quando voc est trabalhando com agentes e voc quer restringir o cojunto de
documentos retornados para somente incluir aqueles agentes que no foram processados,
voc pode usar a propriedade UnprocessedDocuments e os mtodos UnprocessedSearch
e UnprocessedFTSearch. Cada documento e agente definidos como no processados
dependem de como cada agente definido.Veja a ajuda do Notes para detalhes de como
um agente define um documento no processado.

Voc pode usar o mtodo GetView para achar uma viso especfica no banco de
dados. Depois de voc ter a viso, voc pode usar os mtodos de procura da classe
NotesView para achar documentos com a viso que lidera(encabea, chefia)
agradavelmente para a prxima classe.
D NotesVie9
A classe NotesView deixa-o trabalhar com vises e pastas do Notes e os
documentos que elas contm.
Usando as propriedades e mtodos NotesView voc pode fazer o seguinte:
Examinar atributos de viso;
Navegar para cima e para baixo de uma viso hierrquica;
Procurar por documentos na viso;
Excluir uma viso.
Veja a tabela 3.16 para ver todas as propriedades da classe NotesView. Seus
mtodos so listados na tabela 3.17. Note que voc no pode criar novas vises em um
banco de dados Notes a partir de LotusScript, voc pode somente acessar vises
existentes. Voc pode obter uma viso especfica usando os mtodo GetView da classe
NotesDatabase, ou voc pode obter todos as vises no banco de dados atravs da sua
proprieadade Views.
Tabela 3.16 Propriedades da classe NotesView
#ropr+e,a,e !e.9r+/0o T+po ,e !a,o U.o
Aliases O aliases de uma viso. Array of string Leitura
AutoUpdate Deixe-a como true se a viso front-end
atualizada automaticamente quando da
atualizao da viso back-end.
Boolean Leitura
Gravao
Columns Todas as colunas na viso ou pasta. Array of Notes
ViewColumns
Leitura
Created A data e hora em que a viso ou pasta foi
criada.
Variant of date
type
Leitura
sCalendar Verdadeiro se a viso um viso de
calendrio.
Boolean Leitura
sDefaultView Verdadeiro se a viso a padro Boolean Leitura
sFolder Verdadeiro se o objeto uma pasta Boolean Leitura
LastModified A data e hora quando a viso ou pasta foi
modificada pela ltima vez.
Variant of type
date
Leitura
Name Pode ser seu nome, alias ou ambos. String Leitura
Parent O banco que contm a viso ou pasta. NotesDatabase Leitura
ProtectReaders Defina como verdadeiro para proteger o
item $Readers durante a replicao.
Boolean Leitura
Gravao
Readers O nome das pessoas, grupos e
servidores que podem ler a viso,
Array of string Leitura
Gravao
UniversalD Um D de 32 caracteres que identifica a
viso ou pasta em todas as rplicas de
um banco de dados particular.
String Leitura
Tabela 3.17 Mtodos da classe NotesView

=-o,o !e.9r+/0o T+po ,e !a,o.
Re-or6a,o.
%alor Re-or6a,o
Clear Se a viso foi filtrada usando uma
busca de texto completo, limpa a
viso e todos os documentos so
mostrados.
Nenhum Nenhum
FTSearch Dado uma string representado uma
consulta de texto completo, encontra
o banco de dados e mostra as vises
que satisfazem a consulta.
nteger O nmero de
documentos que
satisfazem a
consulta
GetAllDocuments
ByKeys
Dado uma chave, acha todos os
documetnos na viso que satisfazem
a chave.
NotesDocument
Collection
Uma coleo de
documentos que
satisfazem a
consulta
GetChild Dado um documento na viso, acha
a primeira reposta do documento.
NotesDocument A primeira
resposta do
documento
GetDocumentBy Key Dado uma chave, acha o primeiro
documento que possui a chave
fornecida.
NotesDocument O primeiro
documento com a
chave
GetFirstDocument Obtm o primeiro documento da
viso.
NotesDocument O primeiro
documento da
viso
GetLastDocument Obtm o ltimo documento da viso. NotesDocument O ltimo
documento da
viso
GetNextDocument Obtm o prximo documento da
viso a partir do documento atual.
NotesDocument O prximo
documento
GetNextSibling Dado um documento de uma viso,
acha o prximo documento que tem
o mesmo nvel do documento atual.
NotesDocument O documento
GetNthDocument Dado um ndice de uma viso, acha
o documento na posio do
documento.
NotesDocument O documento
GetParentDocument Dado qualquer documento resposta,
acha o documento pai.
NotesDocument O documento pai
GetPrevDocument Dado Qualquer documento na viso,
acha o documento anterior.
NotesDocument O documento
GetPrevSibling Dado um documento em uma viso,
acha o documento anterior com o
mesmo nvel do documento
fornecido.
NotesDocument O documento
Refresh Atualiza a viso para mostrar as
possveis mudanas.
Nenhum Nenhum
Remove Exclui a viso de um banco de
dados.
Nenhum Nenhum
D.1 Tra1al2a6,o 9o5 propr+e,a,e. ,e *+.0o
Voc pode achar o nome de uma viso usando a propriedade Name. Se voc
precisa achar a aliases para uma viso, voc pode obt-las usando a proprieadade Aliases.
Voc pode checar se est trabalhado com uma viso ou pasta lendo a propriedade
IsFolder.

Use Created e LastModified para verificar quando uma viso foi criada e a ltima
vez que foi modificada. Voc pode checar se uma viso a padro em um banco de dados
usando a propriedade IsDefaultView.
A propriedade Columns lhe d acesso a todas as colunas de uma viso ou pasta.
Quando voc l a propriedade, voc obtm uma array contento um objeto
NotesViewColumn para cada coluna na viso. Voc pode usar Columns em um loop para
obter todas as colunas ou especificar um ndice na array para obter uma coluna especfica.
D.$ Na*ega6,o e5 u5a *+.0o 2+er7rRu+9a
Depois de voc ter uma viso, voc pode navegar pelos documentos na viso
usando uma quantidade variada de mtodos. Use GetFirstDocument e GetNextDocument
ou GetLastDocument e GetPrevDocument para percorrer todos os documentos na viso na
ordem que eles so exibidos. Se voc quer ir para um documento baseado na sua posio
na viso, use GetNthDocument.
Se voc est trabalhando com documentos respostas, voc pode usar o mtodos
para obter documentos em um nvel de hierarquia diferente. Depois de achar um
documento, voc pode usar GetChild para obter o primeiro resposta de um documento ou
GetParentDocument para obter seu pai. Para obter documentos no mesmo nvel, use
GetNextSibling ou GetPrevSIbling.
D.3 A92a6,o u5 ,o9u5e6-o 6a *+.0o
Use GetDocumentByKey para achar um documento baseado nos valores da coluna
quer so mostrados na viso. Voc fornece uma chave ao formulrio de uma array of string
para cada valor de coluna que voc quer comparar. A primeira string da array comparada
com o contedo da primeira coluna categorizada ou ordenada e assim por diante. Se todas
as strings correspondem aos valores das colunas, o documento com estes valores de
colunas retornado.
Se sua chave consiste de uma ou mais strings, cada coluna que voc compara deve
ser ordenada ou categorizada.
D.C (u.9a6,o ,o9u5e6-o. 6a *+.0o
Voc pode usar a potencialidade das consultas de texto completo do Notes para
achar um conjunto de documentos na viso. O mtodo FTSearch deixa-o executar uma
consulta de texto completo na viso. A viso filtrada para incluir somente estes
documentos que satisfazem a consulta. Voc pode ento usar quaisquer mtodos de
navegao da classe NotesView para processar documentos na viso. Para reinicializar
uma viso onde todos os documentos esto includos, use o mtodo Clear.
D.G A-ual+Va6,o u5a *+.+0o
Mundanas em uma viso no refletem automaticamente em um objeto NotesView.
Para obter as atualizaes, use o mtodo Refresh.
D.@ E:9lu+6,o u5a *+.0o
Voc pode usar o mtodo Remove para excluir uma viso permanentemente de um
banco de dados
I N*%&SVI&W'*L"?N

O objeto NotesViewColumn representa uma coluna em uma viso ou pasta. Suas
propriedades so listadas na tabela 3.18.
Voc no pode atualizar diretamente qualquer coluna mas pode consultar suas
propriedades. Voc pode checar a posio de uma coluna na viso usando a propriedade
Position.
NOTA
Todas as posies das colunas iniciam por 1 enquanto os ndices das array no LotusScript
iniciam com 0. Lembre-se de adicionar 1 ao ndice da array para obter a posio da coluna.
A propriedade Title retorna o ttulo da coluna e voc pode checar se a coluna est
visvel usando a propriedade IsHidden. Voc pode checar se a coluna est ordenada ou
categorizada usando IsSorted e IsCategory.
Os valores de uma coluna so exibidos usando as propriedades Formula ou
ItemName. Somente uma dessas propriedades vlida para uma coluna. Se a coluna usa
uma frmula Notes para calcular seu valor, Formula retorna a frmula como uma string. Se
a coluna exibe o contedo de um campo, ItemName retorna o nome do campo.
NOTA
NotesViewColumn representa a visualizao de uma coluna. Para obter o contedo
de uma coluna use a propriedade ColumnValues da classe NotesDocument.
Ta1ela 3.1D #ropr+e,a,e. No-e.%+ewColu56
Propriedade Descrio T+po ,e !a,o Usado
Formula Representao textual de uma frmula. String Leitura
sCategory Verdadeiro se a coluna est categorizada. Boolean Leitura
sHidden Verdadeiro se a coluna est oculta. Boolean Leitura
sResponse Verdadeiro se a coluna somente
resposta.
Boolean Leitura
sSorted Verdadeiro se a coluna est ordenada. Boolean Leitura
temName Se a coluna exibe o valor de um campo, o
nome do campo.
String Leitura
Position A posio da coluna na viso. nteger Leitura
Title O ttulo da coluna se ela tiver. String Leitura
1O N*%&SD*'"?&N%
Notes tudo sobre trabalho com documentos e a classe NotesDocument tudo sobre
trabalho com documentos usando LotusScript. A classe rica em funes e grande em
termo de nmero de propriedades e mtodos. Mas, depois de voc obter um bom
conhecimento de como a classe trabalha, voc est no caminho de entender como
trabalhar com documentos Notes. A tabela 3.19 lista as propriedades da classe
NotesDocument e a tabela 3.20 seus mtodos.

Ta1ela 3.1I #ropr+e,a,e. ,a 9la..e No-e.!o9u5e6-
Propriedade Descrio T+po ,e !a,o Usado
Authors O nome das pessoas que tem salvo
os documentos.
Array of strings Leitura
ColumnValues O valor de uma coluna para um
documento
Array of variants Leitura
Created A data de criao do documento. Variant do type data Leitura
Embedded
Objects
Todos os objetos ActiveX e OLE no
documento.
Array of
NotesEmbedded
Objects
Leitura
EncryptionKeys A chave usada para encriptar
documentos.
String or Array of
Strings
Leitura
Gravao
EncryptOnSend Verdadeiro(true) se o documento
para ser encriptado quando enviado.
Boolean Leitura
Gravao
FTSearchScore A contagem de documentos
encontrados a partir de uma
pesquisa.
nteger Leitura
HasEmbedded Verdadeiro(true) se o documento
contem pelo menos um objeto
lincado ou arquivo anexado.
Boolean Leitura
sNewNote Verdadeiro(true) se o documento
nunca foi salvo.
Boolean Leitura
sProfile Verdadeiro(true) se o documento
do tipo profile(perfil).
Boolean Leitura
sResponse Verdadeiro(true) se o documento
do tipo resposta.
Boolean Leitura
sSigned Verdadeiro(true) se o documento tem
pelo menos uma assinatura.
Boolean Leitura
sUdocOpen Verdadeiro(true) se o documento foi
acessado por um NotesUDocument.
Boolean Leitura
sUnread Verdadeiro(true) se o documento
marcado como no leitura para o
usurio corrente.
Boolean Leitura
tems Todos os itens armazenados em um
documento.
Array of Notestems Leitura
Key A chave de um documento de perfil. String Leitura
LastAccessed A ltima data em que o documento
foi lido ou alterado.
Variant of type
DATE
Leitura
LastModified A ltima data em que o documento
foi modificado.
Variant of type
DATE
Leitura
NameOfProfile O nome do documento de profile. String Leitura
NoteD Um D de 8 caracteres que identifica
o documento em um banco de
dados.
String Leitura
ParentDataBase O banco que contem o documento. NotesDatabase Leitura
ParentDocumen
t UND
Para documentos respostas, um D
de 32 caracteres que identifica o pai
de um documento.
String Leitura
ParentView A viso de onde o documento foi
recuperado ou acessado.
NotesView Leitura
Responses As respostas imediatas para um Notes Document Leitura

documento. Collection
SaveMessage
OnSend
Verdadeiro(true) se o documento
para ser salvo quando enviado.
Boolean Leitura
SendByAgent Verdadeiro(true) se o documento foi
enviado atravs de script.
Falso(false) se o documento foi
enviado por uma pessoa.
Boolean Leitura
Signer Se o documento foi assinado, o
nome da pessoa que assinou o
documento.
String Leitura
SignOnSend Verdadeiro(true) se o documento
para ser assinado quando enviado.
Boolean Leitura
Gravao
Size O tamanho do documento em bytes
incluindo arquivos anexados.
Long Leitura
UniversalD Um D de 32 caracteres que identifica
documentos em todas as rplicas de
um banco de dados.
String Leitura
Verifier O nome da certificado que verifica a
assinatura de um documento
assinado.
String Leitura
Ta1ela 3.$O =-o,o. ,a 9la..e No-e.!o9u5e6-

Mtodo Descrio !a,o ,e re-or6o Valor de
retorno
Append
temValue
Cria um novo item no documento e
define seu valor ou adiciona um valor a
um item existente.
Notestem O novo item
Compute
With Form
Executa todos os valores padres,
transaes de entrada e frmulas de
validao para os documentos usados.
Boolean Verdadeiro se
todas as
frmulas
executadas
tiveram
sucesso
CopyAll
tem
Copia todos os itens de um
documento para o outro.
Nenhum Nenhum
Copytem Copia um item no documento corrente. Notestem O novo item
CopyTo
Database
Copia um documento para um banco
de dados.
NotesDocument O novo
documento
Create
Reply
Message
Cria um novo documento como
resposta do documento corrente.
NotesDocument O novo
documento
resposta
Create
RichText
tem
Cria um campo de texto rico no
documento.
NotesRichText
tem
O novo campo
de texto rico
Encrypt Criptografa o documento. Nenhum Nenhum
Get
Attachment
Obtm o nome do arquivo anexado ao
documento.
Notes Embedded
Object
O arquivo
atachado
GetFirst
tem
Obtm o primeiro item com o nome
fornecido no documento.
Notestem O item
Gettem Obtm o valor do item do documento String para campo O valor

Value cujo nome foi fornecido. rico. Array of
strings para
campo texto ou
lista. Array of
double para
nmeros, lista de
nmeros e
data/hora
GetNext
tem
Obtm o prximo item cujo nome seja
o mesmo do fornecido.
Notestem O item
Hastem Verdadeiro(true) se o documento tem
um item com o nome fornecido.
Boolean Verdadeiro se
o item existe
Make
Response
Torna o documento corrente uma
resposta do fornecido.
Nenhum Nenhum
PutnFolder Pe o documento em uma pasta
fornecida. Cria a pasta se no existir.
Nenhum Nenhum
Remove Exclui o documento. Boolean Verdadeiro se
o documento
foi excludo
Remove
FromFolder
Remove o documento de uma pasta
especificada.
Nenhum Nenhum
Remove
tem
Exclui todos os items com um nome
especfico de um documento.
Nenhum Nenhum
RenderTo
RTtem
Cria uma imagem de um documento e
armazena esta imagem em um campo
rico.
Boolean Verdadeiro se
a figura foi
criada
Replace
temValue
Substitui todos os itens especificados
e atribui novos valores.
NotesItem O novo item
Save Salva todas as mudanas feitas em
um documento.
Boolean Verdadeiro se
documento foi
salvo
Send Envia um documento para os
recipientes especificados.
Nenhum Nenhum
Sign Adiciona a assinatura do usurio
corrente ao documento.
Nenhum Nenhum
10.1 Criando um documento
Voc cria um novo documento usando tanto o mtodo CreateDocument da classe
NotesDatabase quanto o mtodo New.
1O.$ #ro9ura6,o u5 ,o9u5e6-o
Existem muitas maneiras de achar um documento. Voc pode usar mtodos da classe
NotesView e NotesDataBase para achar. Use mtodos da NotesView para achar o
seguinte:
Achar todos os documentos de um banco de dados;
Achar documentos baseados em seu Notes D ou Universal D;

Achar um documento que satisfaz a um consulta de texto total;
Achar um documento selecionado por uma frmula de seleo.
Se o documento corrente foi encontrado usando um busca de texto completo, a
propriedade FTSearchScore substituda pelo resultado calculado pela pesquisa. Se o
documento foi recuperado a partir de uma viso, voc pode usar a propriedade
ParenteView para achar a viso que contem o documento. Outra propriedade que somente
definida se o documento foi achado em uma viso, a propriedade ColumnValues. Ela
retorna uma array representando os valores que aparecem em cada coluna da viso
principal para este documento.
Veja as sesses NotesView e NotesDataBase neste captulo para mais detalhes de
como achar documentos.
A classe NotesDocument tambm tem propriedades que deixa-o encontrar todas
respostas de um documento ou seu documento principal. Ns veremos isto depois em
"Trabalhando com Documentos Respostas.
1O.3 Tra1al2a6,o 9o5 propr+e,a,e. ,e ,o9u5e6-o.
Depois de voc obter um documento, voc pode usar algumas das muitas
propriedades da classe NotesDocument para examin-las em detalhe. Voc pode dizer se o
documento acabou de ser criado usando a propriedade IsNewNote. Se o documento nunca
foi salvo, a propriedade retorna verdadeiro. A propriedade Criated diz a voc quando o
documento foi criado. Se o documento tem sido salvo, voc pode usar a propriedade
LastAccessed e LastModified para ver quando foi sua ltima atualizao. Voc pode usar a
propriedade IsUnread para checar se o usurio corrente tem lido o documento. Se voc
precisa saber qual o tamanho de um documento, a propriedade Size retorna o tamanho
corrente do documento.
O NoteID e UniversalID para documentos so tambm vlidos para voc como
propriedades.
Voc pode checar se um documento contem uma assinatura eletrnica usando a
propriedade IsSigned. Se IsSigned verdadeiro, a propriedade Signer contem o nome
da pessoa que assinou o documento, e a propriedade Verified armazena o nome do
certificador usado para verificar assinatura. Se o documento no assinado, voc pode
usar o mtodo Sign para assin-lo. O exemplo seguinte mostra como assinar um
documento:
Sub Click(Source As Button)
Dim s As New NotesUIWorkspace

Dim ulDoc As NotesUIDocument

Dim doc As NotesDocument
Set uiDoc = s.CurrentDocument
Set doc = uiDoc. Document
If (Not doc.IsSigned) then
Call doc.Sign

Call doc.Save(False, True)
Verify.Name = doc.Verifier
Messagebox(" Documento assinado por " & doc.Signer &
" e verificado por " & doc.Verifier & ".")
Else
MessageBox( " Documento j est assinado " )

End If
End Sub
Se segurana importante, voc pode tambm encriptar o documento usando o
mtodo Encrypt. Esteja certo que a propriedade EncryptionKeys est como o nome da
chave de encriptao que voc quer usar antes de encriptar o documento. Voc tambm
pode checar quem tem editado o documento lendo a propriedade Authors.
CUDADO
Encriptao em correio trabalha de forma diferente a encriptao de documentos.
Se voc quer enviar um documento encriptado, mude a propriedade EncyptOnSend
para verdadeiro e, ento, envie o documento usando o mtodo Send.
Se voc est procurando por objetos e arquivos anexados ao documento, voc pode usar a
propriedade HasEmbedded para checar se eles existem. Voc pode obter alguns, mas
no todos, objetos dentro de um documento usando a propriedade EmbeddedObjects.
Use a propriedade GetAttachment para obter um arquivo anexado a partir de seu nome.
CUDADO
A propriedade EmbeddedObjects no retorna qualquer arquivo anexado ou objeto
OLE/1 criado em verses anteriores do Notes. Se voc precisa obter estes objetos,
use a verso NotesRichTexttem da propriedade EmbeddedObjects.
1O.C Tra1al2a6,o 9o5 ,o9u5e6-o. ,e perf+l
Documentos de perfil surgiram na verso 4.5 do Notes. Existem documentos que
voc pode criar a partir de um cdigo para armazenar itens especficos de banco de dados.
Por exemplo, voc pode querer armazenar alguns parmetros que definem como e quando
documentos seriam armazenados em um banco de dados. Voc pode checar se um
documento um documento de perfil usando a propriedade IsProfile. Depois de voc obter
um documento de perfil, voc pode obter seu nome a partir da propriedade NameOfProfile e
sua chave usando a propriedade Key.

1O.G Cr+a6,o e 5o,+f+9a6,o +-e6. ,e ,o9u5e6-o
Voc pode usar a proprieade Items para obter uma lista de todos os itens armazenados no
documento. Ela retorna uma array de objetos NotesItems e voc pode examinar usando
as propriedades e mtodos da classe NotesItem. Voc pode usar GetFirstItem para
obter o primeiro item no documento com o nome que voc especificou.
Se voc est procurando por um item particular, voc pode ver se ele existe usando
HasItem. Voc fornece o nome de um item e HasItem retorna verdadeiro se o
documento contem este item. Voc pode obter o contedo de um item de vrias
maneiras. Tanto usando GetItemValue e fornecendo o nome do item como um
parmetro, ou usando o que conhecido como sintaxe de classe estendida, que deixa-o
acessar como se ele fosse a propriedade de um documento. Por exemplo, os dois
cdigos a seguir obtm o contedo do item Quantity. Este exemplo usa GetItemValue:
Sub Click(Source As Button)
Dim uiWorkspace As New NotesUIWorkspace
Dim uiDoc As NotesUIDocument
Dim doc As NotesDocument
Dim varQuantity As Variant
Set uiDoc = uiWorkspace.CurrentDocument
Set doc = uiDoc.Document
VarQuantity = doc.GetItemValue("Quantity");
End Sub
O exemplo seguinte faz o mesmo que o anterior mas usa sintaxe de classe
estendida:
Sub Click(Source As Button)
Dim uiWorkspace As New NotesUIWorkspace
Dim uiDoc As NotesUIDocument
Dim doc As NotesDocument
Dim varQuantity As Variant
Set uiDoc = uiWorkspace.CurrentDocument
Set doc = uiDoc.Document
VarQuantity = doc.Quantity;

End Sub
N*%A
Sintaxe de Classe Estendida deixa-o tratar um item como se fosse uma propriedade
de um documento. O item de fato torna-se uma propriedade extra do documento.
Voc pode ler e alterar o item da mesma forma que as outras propriedades. Por
exemplo, se o documento contem um intem chamado DocAuthor, voc pode
acessar seu valor usando a mesma sintaxe de uma propriedade.
DCA
GettemValue sempre retorna uma array se o item contem somente um valor. Se o item
contem um valor simples, ele armazenado como o primeiro elemento da array.
Voc pode usar AppendItemValue e ReplaceItemValue para criar um novo item ou atualizar
o contedo de um existente. Se um item fornecido por voc no existe, um novo
criado. O exemplo seguinte usa dois mtodos para criar um novo item no documento:
Sub Click(Source As Button)
Dim uiWorkspace As New NotesUIWorkspace
Dim uiDoc As NotesUIDocument
Dim doc As NotesDocument
Dim itmTitle As NotesItem
Dim itmPlace As NotesItem
Set uiDoc = uiWorkspace.CurrentDocument
Set doc = uiDoc.Document
Set itmTitle = doc.AppendItemValue("Ttulo", "A busca do conhecimento")
Set itmPrice = doc.ReplaceItemValue("Preo",50)
Call doc.Save(True,True)
End Sub
Voc pode tambm criar um item de texto rico usando o mtodo

CreateRichTextItem.
1O.@ U.a6,o o 5=-o,o Co5pu-eW+-2Por5
Usualmente voc cria documentos para completar um formulrio usando a interface
de usurio do Notes. Quando voc salva o documento, as frmulas de validao de campo
no formulrio so computadas e, se quaisquer dos valores de campo so incorretos, voc
no poder salvar o documento. Evitando estas frmulas de validao e criando
documentos em background ns podemos criar documentos que evitariam os testes de
validao de campo. Se importante checar que o documento que voc tem criado da de
frente com um critrio de validao de campo, voc pode usar o mtodo ComputeWithForm
para forar a execuo da frmula de validao.
sto pode ser interessante se voc tem mudado a estrutura de um formulrio para
incluir cdigos de validao e voc precisa testar se os documentos existentes so vlidos
ainda. Voc pode checar cada documento usando ComputeWithForm e atualizar aqueles
que se deparam com novo critrio de validao.
1O.A Cop+a6,o e e:9lu+6,o +-e6. ,e ,o9u5e6-o
H dois mtodos que deixa-o copiar itens entre documentos. CopyItem copia um
item simples de um documento para outro enquanto CopyAllItems copia todos os itens do
documento.
Para excluir um item de um documento use RemoveItem.
1O.D Tra1al2a6,o 9o5 ,o9u5e6-o. re.po.-a.
realmente fcil achar todas as respostas imediatas para um documento. Basta
usar a propriedade Response. Ela retorna uma coleo de documentos Notes contento
todas as repostas do documento corrente. Se voc precisa checar se o documento corrente
um documento resposta, use a propriedade IsResponse. Se ela for verdadeira ento voc
est trabalhando com um documento resposta. Voc pode, ento, usar a propriedade
ParentDocumentUNID para achar o Universal D do documento pai.
Algumas vezes voc precisa mudar a localizao do documento em uma viso
hierrquica, por exemplo, para fazer um documento resposta de outro. Use o mtodo
MakeResponse para fazer esta mudana. Voc chama este mtodo em um documento para
torn-lo resposta de outro.
1@.A ?ove#,o e copia#,o ,ocume#tos
Alm de voc alterar a localizao de um documento no banco de dados, voc pode
tambm copi-lo para outro banco de dados. O mtodo CopyToDatabase cria uma nova
cpia do documento no banco de dados que voc especificou.
Voc pode tambm mover documentos entre pastas no banco de dados. Use
PutInFolder para adicionar um documento a uma pasta e RemoveFromFolder para tir-lo da
pasta.
1O.1O E6*+a6,o u5 ,o9u5e6-o
Uma das melhores caractersticas do Notes sua forte integrao com o sistema de
correio. Todos os documentos so potencialmente mensagens de correio. A classe
NotesDocument deixa-o explorar isto tornando muito fcil enviar seus documentos. Voc
pode enviar qualquer documento usando o mtodo Send. Simplesmente fornea uma lista
de destinatrios, chame o mtodo Send, e a mensagem ser enviada para os destinatrios.
Se o documento possui um campo SendTo, ento sua lista de destinatrios ignorada e o

documento enviado para os destinatrios listados no campo SendTo. Se voc marcar a
propriedade SaveMessageOnSend, o documento automaticamente salvo depois de
enviado. Voc pode tambm especificar algumas opes de envio tal como SignOnSend e
EncryptOnSend.
Um mtodo til para usar quando voc est enviando documentos
RenderToRTItem. Ele cria uma imagem do documento e coloca-o em um campo de texto
rico.
Voc pode criar uma resposta ao documento corrente usando CreateReplyMessage.
Este mtodo cria um novo documento que formatado como uma resposta do original. sto
pode ser til para gerar e enviar automaticamente notificaes quando voc est
desenvolvendo uma aplicao de workflow. Por exemplo, voc pode reconhecer
automaticamente o recebimento de um formulrio de reclamao de despesas.
1O.11 Sal*a6,o e e:9lu+6,o u5 ,o9u5e6-o
Nenhuma das alteraes feitas em um documento tem efeito at ele ser salvo. Se
voc no salvou seu documento, todas as mudanas so perdidas quando o banco de
dados for fechado. Use o mtodo Save para salvar suas mudanas. Voc usa Save com
dois ou trs parmetros. Defina o primeiro atributo para verdadeiro(true) para salvar o
documento s se mais algum tem editado uma copia dele enquanto voc trabalha com
ele. Se voc usa este parmetro, sua copia do documento sobrepe a original.
Se voc define o primeiro parmetro para falso(false), o que acontece quando voc salva o
documento decidido pelo segundo parmetro.
Quando o segundo parmetro verdadeiro(true), seu documento torna-se uma
resposta do original. Quando falso(false), o documento no salvo e suas mudanas so
descartadas.
O terceiro parmetro, opcional, usado par indicar se o documento salvo deve ser
marcado como leitura. Defina este parmetro para verdadeiro(true) para marc-lo como
leitura ou falso(false) para marc-lo como no leitura.
Voc pode remover um documento de um banco de dados usando o mtodo
Remove.
11 N*%&SF*B?
A classe NotesForm deixa-o examinar e trabalhar com propriedades de formulrio. Voc
pode tambm usar a classe para excluir um formulrio de um banco de dados. As
propriedades e mtodos da classe so mostrados nas tabelas 3.21 e 3.22 .
Ta1ela 3.$1 #ropr+e,a,e. ,a 9la..e No-e.Por5
Propriedade Descrio T+po ,e
!a,o
Usado
Aliases O aliases de um formulrio. Array of
strings
Leitura
Fields Os nomes dos campos no formulrio. Array of
string
Leitura
FormUsers Os nomes dos usurios que podem usar o
formulrio (O contedo do campo
$FormUsers).
Array of
strings
Leitura/
Gravao
sSubForm Verdade se o formulrio um subformulrio. Boolean Leitura
Name O nome do formulrio. String Leitura

Protect
Readers
Torne-o verdadeiro(true) para proteger o
item $Readers durante a replicao.
Boolean Leitura/
Gravao
ProtectUsers Torne-o verdadeiro(true) para proteger o
item $FormUsers durante a replicao.
Boolean Leitura/
Gravao
Readers O nome dos usurios que podem ler o
formulrio(O contedo do campo $Readers).
Array of
strings
Leitura/
Gravao
Ta1ela 3.$$ =-o,o. ,a 9la..e No-e.Por5
Mtodo Descrio T+po ,e !a,o Usado
Remove Exclui um formulrio de um banco de
dados.
Nenhum Nenhum
12 NOTESTEM
A classe NotesItem deixa-o trabalhar com o contedo de um documento. Quando voc
entra com um valor em um campo no formulrio e salva o documento, Notes armazena
o valor que voc entra como um item no documento. NotesItem deixa-o examinar e
modificar estes itens. Voc pode usar as propriedades e mtodos da classe NotesItem
para fazer o seguinte:
Examinar as propriedades dos itens;
Criar itens em um documento;
Modificar itens em um documento;
Exclui itens.
Veja as tabelas 3.23 e 3.24 que mostram as propriedades e mtodos da classe
Notestem.
Tabela 3.23 propriedades da classe Notestem
Propriedade Descrio T+po ,e !a,o Usado
DateTime
Value
Somente para itens data/hora. Um objeto
NotesDateTime representando o item.
NotesDate Time Leitura/
Gravao
sAuthors Verdadeiro(true) se o item um autor. Boolean Leitura
sEncrypted Verdadeiro(true) se o item est
encriptado.
Boolean Leitura
sNames Verdadeiro(true) se o item um nome. Boolean Leitura
sProtected Verdadeiro(true) se o item pode ser
alterado por um usurio que possua pelo
menos acesso editor.
Boolean Leitura
sReaders Verdadeiro(true) se o item um leitor. Boolean Leitura
sSigned Verdadeiro(true) se o item contm uma
assinatura eletrnica.
Boolean Leitura
sSummary Verdadeiro(true) se o item um sumrio. Boolean Leitura
LastModified A data de ltima modificao do item. Variant of type
date
Leitura
Name O nome do item. String Leitura

Parent O documento que contm o item. Notes Document Leitura
SaveToDisk Verdadeiro(true) se o item deveria ser
salvo no disco quando o documento que
o contm salvo.
Boolean Leitura
Text A representao textual de um item. Lista
de itens so separados por ponto-e-
vrgula.
String Leitura
Type O tipo do item. nteger constant Leitura
ValueLength O tamanho, em bytes, do item . nteger Leitura
Values Os valores armazenados no item. String para itens
richtext . Array of
strings para itens
texto ou lista de
texto. Array or
double para
nmeros, listas
de nmeros ou
itens data/hora
Leitura/
Gravao
Tabela 3.24 Mtodos da classe Notestem
Mtodo Descrio T+po ,e !a,o
,e Re-or6o
Valor de
Retorno
A1.-ra9- A1re*+a o -e:-o ,o +-e5. String Te:-o
a1re*+a,
o
Appe6,To
Te:-L+.-
#ara u5 +-e5 ,e l+.-a ,e -e:-o" a,+9+o6a
u5 ou-ro *alor 6o f+6al ,a l+.-a.
Nenhum Ne62u5
Co6-a+6. #ara +-e6. 9o6-e6-o l+.-a." *er+f+9a .e o
*alor for6e9+,o por *o9< e.-7 6a
l+.-a. #o,e .er u.a,o e5 l+.-a. ,o
9o5 6B5ero." -e:-o. e ,a-a..
Boolean %er,a,e+ro
.e o
*alor
e.-7 6a
l+.-a
CopEI-e5
To!o9u
5e6-
Cop+a o +-e5 para u5 ,o9u5e6-o. NotesItem O 6o*o +-e5
New Cr+a u5 6o*o +-e5. NotesItem O 6o*o +-e5
Re5o*e !ele-a o +-e5 ,o ,o9u5e6-o. Nenhum Ne62u5
1$.1 E:a5+6a6,o a. propr+e,a,e. ,e u5 +-e5
Use a propriedade Name para achar o nome de um item. Voc pode verificar que
tipo de item voc est trabalhando examinando sua propriedade Type. Por exemplo, Type

deixa-o saber se um item do tipo texto. Voc pode verificar mais sobre o item usando
IsNames, IsAuthors, e IsReaders para ver se ele um desses tipos especiais. A
propriedade LastModified retorna a data na qual o item foi pela ltima vez modificado.
Voc pode checar a segurana de um item usando IsEncrypted, IsProtected e
IsSigned.
1$.$ Cr+a6,o e 5o,+f+9a6,o +-e6.
Use o mtodo New para criar novos itens no documento. Voc fornece o documento,
o nome do novo item e seu valor inicial. Se voc est criando um item do tipo texto, voc
pode opcionalmente defin-lo como Names, Readers, ou Authors. Voc tambm pode criar
um novo item copiando um item existente de um documento para outro usando
CopyItemToDocument.
Voc pode ler ou modificar o contedo de um item usando a propriedade Values.
Quando o item lido, Values retorna o contedo do item no seu formato apropriado. Da
mesma forma, quando voc usa Values para modificar o contedo de um item, voc deve
fornecer o novo valor no formato correto. Voc pode, alternativamente, usar a propriedade
Text para converter o valor de um item para sua representao textual.
Se voc est trabalhando com um item do tipo lista de texto, voc pode usar o
mtodo AppendToTextList para adicionar novos valores ao final da lista.
Finalmente, voc pode usar o mtodo Abstract para abreviar o contedo de um item
texto. Voc especifica o nmero mximo de caracteres a retornar e informao de como
abreviar o texto. O mtodo retorna o contedo abreviado do item.
1$.3 E:9lu+6,o +-e6.
Para excluir um item de um documento, use o mtodo Remove. Lembre de salvar o
documento para que suas alteraes tenham efeitos.
13 NotesBic%extItem
A classe NotesRichTextItem deixa-o criar e modificar campos de texto rico nos
documentos. Voc pode fazer o seguinte:
Adicionar texto, formatar caracteres e criar um link a um campo de texto rico;
Combinar campos de texto rico;
mportar um arquivo em um campo de texto rico;
Achar os objetos e arquivos que esto contidos em um campo de texto rico.
As propriedades da classe NotesRichTextItem so listadas na tabela 3.25 e os seus
mtodos na tabela 3.26 .
Tabela 3.25 Propriedades da classe NotesRichTexttem

Propriedade Descrio T+po ,e !a,o Usado
E51e,,e,
O1Fe9-.
To,o. o. o1Fe-o. OLE" A9-+*eH e
arRu+*o. ,o +-e5 ,e -e:-o r+9o.
Array of
NotesEmb
edded
Objects
Le+-ura
Tabela 3.26 Mtodos da classe NotesRichTexttem

Mtodo Descrio T+po ,e !a,o Usado
A,,NewL+6e A,+9+o6a u5a ou 5a+. l+62a. ao
+-e5 ,e -e:-o r+9o.
Nenhum Ne62u5
A,,Ta1 A,+9+o6a u5 ou 5a+. 9ara9-ere. ,e
-a1ula/0o ao +-e5 ,e -e:-o r+9o.
Nenhum Ne62u5
Appe6,!o9
L+6k
!a,o u5 1a69o ,e ,a,o." u5a
*+.0o ou ,o9u5e6-o" 9r+a u5
l+6k para o o1Fe-o e a,+9+o6a-o
ao +-e5 ,e -e:-o r+9o.
Nenhum Ne62u5
Appe6,RT
P+le
!a,o u5 arRu+*o 6o for5a-o ,e
-e:-o r+9o" a,+9+o6a .eu
9o6-eB,o ao +-e5 ,e -e:-o r+9o.
Nenhum Ne62u5
Appe6,RT
I-e5
A,+9+o6a u5 +-e5 ,e -e:-o r+9o a
ou-ro.
Nenhum Ne62u5
Appe6,Te:- A,+9+o6a o -e:-o for6e9+,o ao +-e5
,e -e:-o r+9o.
Nenhum Ne62u5
E51e,O1Fe9
-
!a,o o 6o5e ,e u5 arRu+*o ou
apl+9a/0o" 9r+a o o1Fe-o" u5 l+6k
ou u5 arRu+*o a6e:a,o e
ar5aVe6a-o 6o 9a5po ,e -e:-o
r+9o.
NotesEmbedded
Object
O 6o*o
o1Fe-o
9r+a,o
Ge-
E51e,,
e,
O1Fe9-
!a,o o 6o5e ,e u5 o1Fe-o" l+6k ou
arRu+*o a6e:a,o a u5 +-e5 ,e
-e:-o r+9o" re-or6a o
No-e.E51e,,e,O1Fe9-
9orre.po6,e6-e.
NotesEmbedded
Object
O1Fe9-
Ge-Por5a--e
,Te:-
Re-or6a o 9o6-eB,o ,o +-e5 ,e -e:-o
r+9o 9o5o u5a .-r+6g.
String O -e:-o ,o
+-e5 ,e
-e:-o
r+9o
New Cr+a u5 +-e5 r+92-e:-. NotesRichText
Item
O 6o*o +-e5
,e -e:-o
r+9o
9r+a,o
13.1 Cr+a6,o e 5o,+f+9a6,o u5 +-e5 r+92-e:-
Como em muitas classes, voc pode criar objetos na classe NotesRichTextItem de
vrias formas. Se voc tem um objeto NotesDocument, voc pode usar seu mtodo
CreateRichItem para criar um novo objeto NotesRichText. Alternativamente, voc pode usar
New na classe NotesRichTextItem.
Para achar e usar campos de texto rico que j existe no documento, use os mtodos
GetFirstItem e GetNextItem da classe NotesDocument. O seguinte cdigo mostra como

achar o item chamado richtext body:
Dim doc As NotesDocument
Dim varItem As Variant
. . . Set value of doc . . .
set varitem = doc.GetFirstItem("Body")
If (varItem.Type=RICHTEXT) then
Ento se um texto de texto rico, voc pode usar o mtodo NotesRichTextItem
End If
Quando voc cria ou acha um item de texto rico, voc pode adicionar texto a ele
usando o mtodo AppendText. Voc pode tambm adicionar qualquer nmero de
tabulaes e novas linhas usando AddTab e AddNewLine, ou adicionar o contedo de um
campo de texto rico a outro usando AppendRTItem.
Voc pode criar objetos ou arquivos anexados em um campo richtext usando
EmbedObject.
CUI!A!O
Voc pode anexar arquivos em qualquer plataforma Notes, mas voc somente pode
criar objetos linkados em uma plataforma que suporta OLE.
Um dos mtodos mais teis suportado pela classe o mtodo AppendDocLink. Este
mtodo deixa-o criar qualquer dos trs tipos de links do Notes ( link de banco de dados, link
de viso e link de documento) e adicion-lo ao campo de texto rico. sto bom para criar
documentos de sumrio. Por exemplo, voc pode criar um cdigo que busca novos
documentos em todos os seus banco de dados e envia para voc um documento com um
resumo contento links de banco de dados para os bancos de dados que voc checou.
13.$ Le6,o u5 +-e5 r+92-e:-
Voc pode obter o texto de um item de texto rico de algumas formas. Se voc quer
reformatar o texto, voc pode usar o mtodo GetFormattedText. Ele lhe d a opo de
remover quaisquer caracteres tab e deixar sem espaos extras. Se voc quer apenas o
texto e no est preocupado com seu formato, use o mtodo Text.
Voc pode obter o nome de um objeto dentro de um campo de texto rico usando
GetEmbeddedObject. Voc fornece o nome do objeto e o mtodo retorna um
NotesEmbeddedObject representando o objeto. Voc pode ento usar as propriedades e
mtodos da classe NotesEmbeddedObject para trabalhar com objetos.
1! Notes&m)e,,e,*)-ect
A classe NotesEmbeddedObject pode representar um arquivo anexado, um objeto
embutido ou um objeto linkado. Voc usa esta classe para fazer o seguinte:
Achar a classe OLE e propriedades de um objeto embutido;

Achar os verbos OLE que o objeto suporta;
Ativar quaisquer destes verbos OLE.
As propriedades da classe so mostradas na tabela 3.27 e seus mtodos so
mostrados na tabela 3.28
Tabela 3.27 Propriedades da classe NotesEmbeddedObject
Propriedade Descrio T+po ,e !a,o Usado
Cla.. O 6o5e ,a apl+9a/0o Rue 9r+ou
o1Fe-o.
String Le+-ura
P+leS+Ve O -a5a62o" e5 1E-e." ,o o1Fe-o. Long Le+-ura
Na5e O 6o5e u.a,o para refere69+ar o
o1Fe-o.
String Le+-ura
O1Fe9- O OLE 2a6,le para o o1Fe-o. Variant Le+-ura
#are6- O +-e5 ,e -e:-o r+9o Rue 9o6-<5 o
o1Fe-o.
NotesRichTextItem Le+-ura
Sour9e #ara arRu+*o. a6e:a,o." o 6o5e ,o
arRu+*o. #ara ou-ro. -+po. ,e
o1Fe-o." u5 6o5e +6-er6o
u.a,o pelo No-e..
String Le+-ura
TEpe o.-ra o -+po ,o o1Fe-o. IntegerConstant Le+-ura
%er1. #ara o1Fe-o. OLE$" o. *er1o.
.upor-a,o. pelo o1Fe-+*o
Array of string Le+-ura
Tabela 3.28 Mtodos da classe NotesEmbeddedObject

Mtodo Descrio T+po ,e !a,o ,e
Re-or6o
Valor de
Retorno
A9-+*a-e So5e6-e para o1Fe-o. e51u-+,o. ou
l+6ka,o." 9arrega o o1Fe-o e
a-+*a .ua apl+9a/0o ,e .er*+,or
OLE.
Variant -
!o%er1 So5e6-e para o1Fe-o. e51u-+,o."
e:e9u-a o *er1o for6e9+,o.
Nenhum Ne62u5
E:-ra9-P+le So5e6-e para arRu+*o. a6e:a,o."
9op+a o arRu+*o a6e:a,o para o
6o5e ,e arRu+*o for6e9+,o.
Nenhum Ne62u5
Re5o*e E:9lu+ o o1Fe-o e51u-+,o" l+6ka,o
ou o arRu+*o a6e:a,o.
Nenhum Ne62u5
1C.1 Cr+a6,o u5 o1Fe-o e51u-+,o
Voc cria objetos embutido em um campo de texto rico de um documento usando o
mtodo EmbedObject da classe NotesRichTextItem.
1C.$ A92a6,o u5 o1Fe-o e51u-+,o
Voc pode achar todos os objetos embutidos ou linkados em um documento usando
a propriedade EmbeddedObject da classe NotesDocument. Se voc precisa somente olhar
um campo particular, voc pode usar a propriedade EmbeddedObjects, da classe
NotesRichTextItem, para obter todos os objetos embutidos no campo. Ambas as
propriedades retornam uma array de NotesEmbeddedObject. Quando voc sabe o nome do
campo de texto rico e o nome do objeto, use GetEmbeddedObject no item para obter o
objeto.
1C.3 O1-e6,o a. propr+e,a,e. ,e u5 o1Fe-o e51u-+,o
Depois de voc ter um objeto, voc pode usar as propriedades nesta classe para
obter seus detalhes. Use Type para checar se o objeto um objeto embutido, linkado ou
arquivo anexado.
Ento, para objetos embutidos voc pode usar Class para obter o nome OLE da
aplicao que criou o objeto. Use Name para obter o nome do objeto. Se o objeto foi criado
usando a caixa de dilogo "Notes Created Object, este o nome que aparece na lista de
tipos de objetos na caixa de dilogo. Objetos obtm o erro de objeto OLE e verbos obtm
uma lista de todos os verbos OLE que o objeto suporta. Para arquivos anexados, use
Source para obter o nome do arquivo . Para todos os tipos de objetos, a propriedade
FileSize d a voc o tamanho em bytes de todos os objetos e arquivos anexados.
1C.C A-+*a6,o u5 o1Fe-o e51u-+,o
Voc pode carregar um objeto OLE embutido ou linkado usando o mtodo Active.
Voc pode opcionalmente mostrar ou ocultar a interface do usurio da aplicao de servidor
OLE. O mtodo retorna o handle de OLE para o objeto, e voc pode ento acessar o
mtodo do objeto.

Voc pode tambm executar qualquer dos verbos suportados pelo objeto usando o
mtodo DoVerb.
1C.G E:-ra+6,o o arRu+*o a6e:a,o
Se voc est tratando com um objeto de arquivo anexado, voc pode copiar o
arquivo anexado para o disco usando ExtractFile. Voc fornece um caminho para o arquivo
e o mtodo copia o arquivo para o disco.
1C.@ E:9lu+6,o u5 o1Fe-o e51u-+,o
Voc exclui um objeto embutido chamando o mtodo Remove. Da mesma forma
com os outros mtodos que exclui itens de um documento, voc deve salvar o documento
para que suas alteraes tenham efeito.
1G NotesDocume#t'ollectio#
A classe NotesDocumentCollection deixa-o trabalhar com subconjuntos de
documentos em um banco de dados. Voc tem muita flexibilidade em como selecionar os
documentos na coleo. Por exemplo, voc pode obter o seguinte:
Todos os documentos de um banco de dados;
Usar uma consulta de texto completo para achar estes documentos;
Usar uma frmula para achar estes documentos;
Achar documentos que no foram processados por um agente;
Todas as respostas de um documento.
Veja a tabela 3.29 para ver as propriedades da classe e a tabela 3.30 para ver
seus mtodos.
Tabela 3.29 Propriedades da classe NotesDocumentCollection
Propriedade Descrio T+po ,e !a,o Usado
Cou6- O 6B5ero ,e ,o9u5e6-o. 6a
9ole/0o.
Long Le+-ura
I.Sor-e, Se a 9ole/0o e.-7 or,e6a,a.
So5e6-e a. 9ole/Qe.
pro,uV+,a. por u5a 9o6.ul-a ,e
-e:-o 9o5ple-o .er0o
or,e6a,a..
Boolean Le+-ura
#are6- O 1a69o ,e ,a,o. Rue 9o6-=5 a
9ole/0o.
NotesDatabase Le+-ura
;uerE A 9o6.ul-a u.a,a para .ele9+o6ar a
9ole/0o Rue fo+ pro,uV+,a por
u5a 1u.9a.
String Le+-ura

Tabela 3.30 Mtodos da classe NotesDocumentCollection
Mtodo Descrio T+po ,e !a,o ,e
Re-or6o
Valor de
Retorno
Ge-P+r.-
!o9u5e6-
O1-=5 o pr+5e+ro ,o9u5e6-o ,a
9ole/0o.
NotesDocument O pr+5e+ro
,o9u5
e6-o
Ge-La.-
!o9u5e
6-
O1-=5 o Bl-+5o ,o9u5e6-o ,a
9ole/0o.
NotesDocument O Bl-+5o
,o9u5
e6-o
Ge-Ne:-
!o9u5e
6-
O1-=5 o pr?:+5o ,o9u5e6-o ,a
9ole/0o e5 rela/0o ao a-ual.
NotesDocument O pr?:+5o
,o9u5
e6-o
Ge-N-2
Document
O1-=5 u5 ,o9u5e6-o 6a po.+/0o
,o X6,+9e ,a,o.
NotesDocument O
,o9u5
e6-o
Ge-#re*
Document
O1-=5 o ,o9u5e6-o a6-er+or ao
a-ual ,a 9ole/0o.
Notes Document O
,o9u5
e6-o
Colees no so to suficientes como vises para acessar documentos, porque
colees devem ser criadas por voc, enquanto vises j esto cosntrudas no banco de
dados. Ento, se voc pode obter os documentos que voc quer usar atravs de vises,
use-a ao invs de colees.
1G.1 Cr+a6,o u5a 9ole/0o
Voc usa propriedades e mtodos em um banco de dados Notes e classes
NotesDocument para obter uma coleo de documentos. Uma coleo simples seria todos
os documentos de um banco de dados, usando a propriedade AllDocument da classe
NotesDocument. Voc pode restringir os documentos que esto inclusos na coleo usando
tanto o mtodo FTSearch como Search da classe NotesDatabase. Voc fornece o mtodo
FTSearch com uma consulta de texto completo e o nmero mximo de documentos para
serem procurados, e o mtodo retorna a coleo de todos os documentos que satisfazem a
consulta. Por exemplo, para achar os 10 primeiros documentos contento as palavras Holly e
Backen, use o exemplo abaixo:
Sub Click(Source As Button)
Dim s As New NotesSession
Dim db As NotesDatabase
Dim coll As NotesDocumentCollection
Set db = s.CurrentDatabase

Set coll = db. FTSearch(|"Holly" & "Bracken"|, 10)
End Sub
Para achar todos os documentos que satisfazem a consulta, especifique 0 como o
nmero de documentos a serem retornados.
!ICA
Use a barra vertical para delimitar a string de busca. Se voc usa aspas como
delimitador de strings, voc tem que duplicar qualquer aspas na string de busca, que logo
se torna difcil de ler.
Use o mtodo Search quanto quiser selecionar documentos usando uma frmula de
seleo. Por exemplo, para selecionar todos os documentos do servidor no banco de dados
corrente que foram modificados na ltima semana, use o seguinte:
Dim s As New NotesSession
Dim db As NotesDatabase
Dim coll As NotesDocumentCollection
Dim dtLastWeek As New NotesDateTime( "Today")
Set db = s.CurrentDatabase
Call dt.LastWeek.Adjustday(-7)
Set coll = db. Search(|Form = "Server"|, dtLastWeek,0)
End Sub
Se voc est usando um agente para acessar a coleo, voc pode usar a
propriedade UnprocessedDocuments ou os mtodos UnprocessedFTSearch e
UnprocessedSearch para limitar a coleo incluindo somente aqueles documentos que o
documento considera no processado.
Se voc usa um dos mtodos de busca de texto completo para criar uma coleo, os
documentos so armazenados com os documentos mais relevantes primeiro. Se voc
precisa checar se a coleo est ordenada, use a propriedade IsSorted para verificar.
1G.$ A92a6,o ,o9u5e6-o. e5 u5a 9ole/0o
Depois de ter uma coleo, voc pode usar a propriedade Count para checar
quantos documentos existem na coleo. Voc pode refinar os documentos na coleo
executando uma consulta de texto completo nos documentos da coleo. Use FTSearch
para especificar a consulta e o mtodo modifica a coleo para conter somente estes
documentos que atendem a consulta.
Voc tem muitos mtodos de achar documentos em uma coleo. Voc pode usar
GetFirstDocument e GetNextDocument para percorrer os documentos. Se voc quiser
percorrer os documentos da coleo de forma decrescente, use GetLastDocument e
GetPrevDocument. Voc pode obter um documento especfico usando GetNthDocument.
1G.3 Tra1al2a6,o 9o5 ,o9u5e6-o. 6a 9ole/0o

A partir da verso 4.5 do Notes, foi acrescentado muitos mtodos que voc pode
usar para trabalhar com colees de documentos. Voc pode adicionar todos os
documentos da coleo em uma pasta especfica usando o mtodo PutAllInFolder, ou
exclu-los usando o mtodo RemoveAllFromFolder. Voc pode excluir todos os documentos
de uma coleo usando RemoveAll. Se voc quiser adicionar ou atualizar um item
especfico em todos documentos de uma coleo, use o mtodo StampAll. Voc fornece o
nome do item e seu valor novo, e StampAll atualiza-o em todos documentos. Se o item no
existe, StampAll adiciona-o na coleo de documentos. Quando voc est trabalhando com
agentes, voc pode usar UpdateAll para marcar todos os documentos da coleo que
tenham sido processados pelo agente.
1@ NotesA4e#t
Agentes deixam-no automatizar tarefas no Notes tal como arquivar documentos,
enviar mensagens de correio ou rotear(definir rotas para) documentos dentro de um sistema
de workflow. Voc pode criar agentes compartilhados como um projetista de banco de
dados e torn-los disponveis para usurios do seu banco de dados. Voc pode tambm
criar agentes pessoais para ajudar tarefas de rotinas automticas.
NOTA
Voc deve ter pelo menos acesso de designer de um banco de dados para poder
criar agentes compartilhados. Para criar agentes pessoais no banco de dados, a opo
"Create personal agents in the ACL" deve estar selecionada para seu nome ou para o grupo
que voc faz parte. No caso de bancos de dados no servidor, voc deve estar includo em
um grupo de pessoas que podem criar agentes pessoais no servidor. Veja "Agent Manager
Restriction" na ajuda do servidor para detalhes sobre como criar agentes pessoais.
Voc pode usar a classe NotesAgent para examinar as propriedades de um agente
ou para exclu-lo de um banco de dados.
As propriedades da classe NotesAgent so listadas na tabela 3.31 e seus mtodos
so mostrados na tabela 3.32.
Tabela 3.31 Propriedades da classe NotesAgent

Propriedade Descrio T+po ,e !a,o Usado
Co55e6- O 9o5e6-7r+o a..o9+a,o ao age6-e. String Le+-ura
Co55o6
Ow6er
O 6o5e 9o5u5 ,a pe..oa Rue por
Bl-+5o e,+-ou o age6-e.
String Le+-ura
I.E6a1le, %er,a,e+ro[-rue\ .e o age6-e e.-7
a1+l+-a,o.
Boolean Le+-ura
I.#u1l+9 %er,a,e+ro[-rue\ .e o age6-e e.-7
,+.po6X*el para -o,o. o. 1a69o. ,e
,a,o. ,o. u.u7r+o..
Boolean Le+-ura
La.Ru6 A Bl-+5a ,a-a 6a Rual o age6-e fo+
e:e9u-a,o.
Variant of type
DATE
Le+-ura
Na5e O 6o5e ,o age6-e. String Le+-ura
Ow6er O 6o5e 9o5ple-o ,a pe..oa Rue por
Bl-+5o e,+-ou o age6-e.
String Le+-ura
#are6- O 1a69o ,e ,a,o. o6,e o age6-e e.-7
ar5aVe6a,o.
NotesDatabase Le+-ura
;uerE O -e:-o ,a 9o6.ul-a u.a,o para
.ele9+o6ar o. ,o9u5e6-o. o6,e o
age6-e e:e9u-a.
String Le+-ura
Ser*erNa5e #ara age6-e. 6o .er*+,or" o 6o5e
9o5ple-o ,o .er*+,or o6,e o age6-e
e:e9u-a. #ara age6-e. lo9a+." o
6o5e 9o5ple-o ,o u.u7r+o 9orre6-e.
String Le+-ura
Tabela 3.32 Mtodos da classe NotesAgent
Mtodo Descrio T+po ,e !a,o ,e
Re-or6o
Valor de
Retorno
Re5o*e E:9lu+ o age6-e ,o 1a69o ,e ,a,o. Nenhum Ne62u5
Ru6 E:e9u-a u5 age6-e Nenhum Ne62u5
1A NotesA'L
A classe NotesACL representa a lista de controle de acesso para um banco de
dados. Voc pode usar a classe NotesACL para fazer o seguinte:
Criar novas entradas na ACL;
Examinar entradas existentes na ACL;

Modificar ACL;
Adicionar, excluir ou renomear regras da ACL.
Veja a tabela 3.33 para as propriedades da classe. Os mtodos da mesma esto na
tabela 3.34.
Tabela 3.33 Propriedades da classe NotesACL
Propriedade Descrio T+po ,e !a,o Usado
#are6- O 1a69o ,e ,a,o. Rue 9o6-=5 a
ACL.
NotesDatabase Le+-ura
Role. To,a. a. regra. ,ef+6+,a. 6a ACL. Array of strings Le+-ura
Tabela 3.34 Mtodos da classe NotesACL
Mtodo Descrio T+po ,e !a,o
,e Re-or6o
Valor de Retorno
A,,Role !a,o o 6o5e ,a regra" a,+9+o6a a
regra a ACL.
Nenhum Ne62u5
Crea-e ACL
E6-rE
!a,o u5a pe..oa" grupo ou 6o5e
,e .er*+,or e u5 6X*el ,e
a9e..o" 9r+a u5a 6o*a e6-ra,a
6a ACL.
NotesACLEntry A 6o*a e6-ra,a
6a ACL
!ele-eRole !a,o o 6o5e ,a regra" e:9lu+ a
fu6/0o ,a ACL.
Nenhum Ne62u5
Ge-E6-rE !a,o u5a pe..oa" grupo" ou 6o5e
,e .er*+,or" a92a a e6-ra,a
9orre.po6,e6-e 6a ACL.
NotesACL A e6-ra,a 6a
ACL para
u5a
pe..oa"
grupo ou
.er*+,or
Ge-P+r.-E6-r
E
A92a a pr+5e+ra e6-ra,a 6a ACL NotesACLEntry A pr+5e+ra
e6-ra,a 6a
ACL
Ge-Ne:-E6-r
E
!a,a RualRuer e6-ra,a 6a ACL"
a92a a pr?:+5a.
NotesACLEntry A pr?:+5a
e6-ra,a 6a
ACL
Re6a5eRole !a,o o 6o5e ,a regra" a92a a
regra e a re6o5ea.
None No6e
Sa*e Sal*a al-era/Qe. fe+-a. 6a ACL None No6e

1A.1 Cr+a6,o u5a e6-ra,a 6a ACL
O mtodo CreateACLEntry deixa-o criar uma nova entrada na ACL para uma
pessoa, grupo ou servidor. Voc especifica o nome e o nvel que voc quer adicionar e o
mtodo cria uma nova entrada na ACL.
1A.$ A92a6,o e6-ra,a. 6a ACL
Voc pode obter uma entrada especfica na ACL usando o mtodo GetEntry. Voc
fornece o nome da pessoa, grupo ou servidor e o mtodo retorna-lhe um objeto contento os
detalhes para este nome. Voc, ento, usa a propriedade NotesACLEntry para examinar ou
modificar a entrada. Voc pode tambm percorrer por todas as entradas da ACL usando
GetFirstEntry e GetNextEntry.
1A.3 o,+f+9a6,o a ACL
A partir da verso 4.5 do Notes foi possvel fazer modificaes na ACL: Forando
uma consistente ACL por todas as rplicas do banco de dados. Altere a propriedade
UniformAccess para verdadeiro(true) para fazer isso.
1A.C o,+f+9a6,o Regra.
Voc pode achar todas as regras definidas na ACL usando a propriedade Role. Voc
pode tambm adicionar, renomear e excluir regras da ACL usando AddRole, RenameRole,
e DeleteRole.
1A.G Sal*a6,o .ua. al-era/Qe.
Quaisquer mudanas que voc tenha feito em uma ACL s so efetivadas quando
voc salva o objeto NotesACL usando o mtodo Save. Se voc fechar o banco de dados
antes de usar o mtodo Save, suas alteraes so perdidas.
1D NotesA'L&#trC
A classe NotesACLEntry representa uma entrada individual na ACL para o banco de
dados. Voc pode usar a classe NotesACLEntry para fazer o seguinte:
Adicionar e excluir nomes na ACL;
Mudar algumas das aes que o usurio pode executar no banco de dados;
Mudar as regras atribudas a um nome na ACL.
Veja a tabela 3.35 e a tabela 3.36 para as propriedades e mtodos da classe.
Tabela 3.35 Propriedades da classe NotesACLEntry

Propriedade Descrio T+po ,e !a,o Usado
Ca6Crea-e
Documents
%er,a,e+ro[-rue\ .e a e6-ra,a ,a ACL
po,e 9r+ar ,o9u5e6-o. 6o 1a69o
,e ,a,o..
Boolean Le+-ura
Gra*a/
0o
Ca6Crea-e
#er.o6al
Age6-
%er,a,e+ro[-rue\ .e a e6-ra,a ,a ACL
po,e 9r+ar age6-e. pe..oa+. 6o
1a69o ,e ,a,o..
Boolean Leitura
Gravao
Ca6Crea-e
#er.o6al
Pol,er
%er,a,e+ro[-rue\ .e a e6-ra,a ,a ACL
po,e 9r+ar pa.-a. pe..oa+. 6o
1a69o ,e ,a,o..
Boolean Leitura
Gravao
Ca6!ele-e
!o9u5e6
-.
%er,a,e+ro[-rue\ .e a e6-ra,a ,a ACL
po,e e:9lu+r ,o9u5e6-o. ,o
1a69o ,e ,a,o..
Boolean Leitura
Gravao
Le*el O 6X*el ,e a9e..o para e.-a e6-ra,a
,a ACL.
nteger Constant Leitura
Gravao
Na5e O 6o5e a..o9+a,o a e6-ra,a ,a ACL. String Leitura
Gravao
#are6- A ACL Rue 9o6-=5 a e6-ra,a. NotesACL Leitura
Role. A. regra. Rue .0o ,ef+6+,a. para e.-a
e6-ra,a ,a ACL.
Array of strings Leitura
Tabela 3.36 Mtodos da classe NotesACLEntry
Mtodo Descrio T+po ,e !a,o
,e Re-or6o
Valor de Retorno
!+.a1leRol
e
!a,o o 6o5e ,a regra" re5o*e a
regra ,a e6-ra,a 6a ACL.
Nenhum Ne62u5
E6a1leRole !a,o o 6o5e ,a regra" a,+9+o6a a
regra a e6-ra,a ,a ACL.
Nenhum Ne62u5
I.Role
E6a1le
,
!a,o o 6o5e ,a fu6/0o" 92e9ar .e a
e6-ra,a ,a ACL -e5 a regra
a1+l+-a,a.
Boolean %er,a,e+ro .e a
fu6/0o e.-7
a1+l+-a,a
New Cr+a u5a 6o*a e6-ra,a 6a ACL. NotesACLEntry A 6o*a e6-ra,a
9r+a,a
Re5o*e E:9lu+ a e6-ra,a ,a ACL for6e9+,a a
par-+r ,a ACL.
Nenhum Ne62u5
1D.1 Cr+a6,o e e:9lu+6,o e6-ra,a. ,a ACL
Em adio ao uso do mtodo CreateACLEntry da classe NotesACL, voc pode usar
New para criar novas entradas na ACL. Por exemplo, o cdigo de boto seguinte cria uma

nova entrada na ACL para o grupo SupportTeam e d o acesso de leitura do grupo para o
banco de dados:
Sub Click(Source As Button)
Dim s As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Set db = s.CurrentDatabase
Set acl = db.ACL
Dim aclGroup As New NotesACLEntry(acl, "SupportTeam", ACLLEVEL_READER)
Call acl.Save
End Sub
Se voc precisa excluir uma entrada de uma l ACL, use o mtodo Remove.
1D.$ o,+f+9a6,o u5a e6-ra,a ,a ACL
Voc pode achar o nome associado a uma entrada da ACL usando a propriedade
Name e o nvel de acesso corrente usando a propriedade Level.
Voc pode examinar ou modificar as aes que esto disponveis para a entrada da
ACL usando as 4 propriedades seguintes: CanCreateDocuments, CanCreatePersonalAgent,
CanCreatePersonalFolder e CanDeleteDocuments. As propriedades correspondem a
"Create documents ", "Create personal agents, "Create personal folders e "Delete
documents de uma ACL.
1D.3 o,+f+9a6,o Regra.
A classe NotesACLEntry contm um conjunto de mtodos e funes similares a
classe NotesACL para trabalhar com regras. Como voc esperaria, os mtodos na classe
NotesACLEntry somente se referenciam as regras para entrada que voc est trabalhando.
Por exemplo, a propriedade Roles lista as regras que esto abilitadas para a entrada da
ACL corrente. Voc pode adicionar a entrada corrente uma regra, usando EnableRole ou
remov-la usando DisableRole. Use IsRoleEnabled para testar se a regra especfica est
abilitada para a entrada corrente.
1D.C Sal*a6,o .ua. 5u,a6/a.
Quaisquer mudanas que voc tenha feito em uma entrada da ACL s so
efetivadas quando voc chama o mtodo Save no objeto pai NotesACL. Se voc fechar o
banco de dados antes de usar o mtodo Save, suas alteraes sero perdidas.
1I NotesLo4

A classe NotesLog deixa-o informado do que seu script est fazendo. Voc tem
muitas opes para gravar o progresso do seu cdigo. Voc pode registrar mensagens para
um banco de dados Notes que til quando voc quer se manter um histrico do que o seu
script tem feito. De forma alternativa, voc pode armazenar mensagens em um memo de
correio e automaticamente enviar o memo quando seu script tiver terminado o que estava
fazendo. sto til para alertar pessoas quando um script tem alguma coisa til para lhes
dizer, como " Eu sei que deveria copiar todos estes documentos na noite passada, mas
estava tarde, o servidor estava trabalhando lentamente e .... Voc pegou a idia. Uma
terceira opo, se seu script est executando localmente, escrever suas mensagens de
log para um arquivo. Para scripts que so agentes, voc tem uma escolha adicional. Cada
agente tem um log associado a ele e voc pode escrever mensagens para o log. Voc pode
mostrar o log para um agente selecionando o agente e ento selecionar o item de menu
Agent Log .
Voc pode usar a classe NotesAgent para fazer o seguinte:
Abrir um banco de dados, correio ou arquivo de log;
Registra aes ou erros para o log;
Envia eventos Notes na rede
Veja a tabela 3.37 para uma lista de propriedades da classe NotesLog e a tabela
3.38 para uma lista de mtodos.
Tabela 3.37 Propriedades da classe NotesLog
Propriedade Descrio T+po ,e !a,o Usado
LogA9-+o6. %er,a,e+ro[-rue\ .e a. a/Qe. ,e*e5
.er reg+.-ra,a..
Boolean Le+-ura
LogError. %er,a,e+ro[-rue\ .e o. erro. ,e*e5
.er ar5aVe6a,o..
Boolean Le+-ura
Nu5A9-+o6. O 6B5ero ,e a/Qe. Rue -<5 .+,o
reg+.-ra,a..
nteger Le+-ura
Nu5Erro. O 6B5ero ,e erro. Rue fora5
reg+.-ra,o..
nteger Le+-ura
O*erWr+-eP+le Se o log e.-7 .e6,o gra*a,o e5 u5
arRu+*o. !+V .e u5 arRu+*o ,e log
,e*e .er .o1re.9re*+,o 9o5 e.-e
log ou a,+9+o6a,o e.-e log a ele.
Boolean Le+-ura
Gra*a/
0o
#rogra5Na5
e
O 6o5e Rue +,e6-+f+9a o .9r+p- e =
u.a,o para +,e6-+f+9ar a.
e6-ra,a. ,o log.
String Le+-ura
Gra*a/
0o
Tabela 3.38 Mtodos da classe NotesLog

Mtodo Descrio T+po ,e !a,o
,e Re-or6o
Valor de Retorno
Clo.e Pe92a u5 log. Nenhum Ne62u5
LogA9-+o6 E.9re*e u5a a/0o ,e 5e6.age5 6o
log.
Nenhum Ne62u5
LogError E.9re*e u5a 5e6.age5 ,e erro 6o
log.
Nenhum Ne62u5
LogE*e6- Gera u5 e*e6-o No-e.. Nenhum Ne62u5
New Cr+a u5 6o*o log. NotesLog O 6o*o log
9r+a,o
Ope6Age6-
Log
A1re u5 log ,e u5 age6-e. Nenhum Ne62u5
Ope6P+le
Log
!a,o u5 6o5e ,e u5 arRu+*o" a1re o
arRu+*o e e.9re*e RualRuer a/0o
.u1.eRue6-e ou 5e6.age6. ,e
erro 6o arRu+*o.
Nenhum Ne62u5
Ope6a+l
Log
Cr+a u5 6o*o 5a+l 5e5o e6,ere/a,o
para o ,e.-+6a-7r+o Rue *o9<
e.pe9+f+9ou. E.9re*e RualRuer
a/0o .u1.eRue6-e ou 5e6.age5
,e erro ao 5e5o e e6*+a-o
Rua6,o o log = fe92a,o.
Nenhum Ne62u5
Ope6No-e.
Log
!a,o u5 6o5e ,e .er*+,or e arRu+*o"
a1re o 1a69o ,e ,a,o. ,e log
e.pe9Xf+9o. E.9re*e RualRuer
a/0o .u1.eRue6-e ou 5e6.age6.
,e erro ao 1a69o ,e ,a,o..
Nenhum Ne62u5
1I.1 Cr+a6,o u5 log
Voc cria um novo log usando tanto o mtodo CreateLog da classe NotesSession
quanto o mtodo New. Em cada mtodo, voc fornece um nome para identificar o novo log.
Voc pode acessar este nome mais tarde usando a propriedade ProgramName.
1I.$ A1r+6,o u5 log
Voc tem 4 opes para o tipo de log que voc quer criar, e cada tipo de log tem um
mtodo para abr-lo. OpenNotesLog abre um banco de dados especfico. O banco de dados
deve ser baseado no modelo StdR4AgentLog que vem com o Notes. Se voc olha para a
estrutura do modelo, voc v que ele projetado para armazenar uma entrada de log. Voc
pode criar um banco de dados de log para todos seus agentes ou um banco de dados para
cada agente. Quando voc registra mensagens no banco de dados, Um novo documento de
entrada de log criado para cada mensagem.

!ICA
Se voc est indo abrir um banco de dados de log a partir de um script em um
servidor, esteja certo que o banco de dados de log est no mesmo servidor. Scripts que
executam em um servidor no podem abrir banco de dados em outro servidor.
Para abrir um log de correio, use OpenMailLog. Voc fornece o mtodo com os
nomes das pessoas ou grupos para receber o mail memo e opcionalmente a linha de
subject para o memo. Quaisquer entradas de log que voc escreve so armazenadas no
mail memo at que voc feche o log. O mail memo ento enviado para a lista de
destinatrios. O terceiro mtodo de abrir um log OpenFileLog. Com este mtodo, voc
fornece o caminho completo do arquivo onde voc quer armazenar suas mensagens de log.
O ltimo mtodo OpenAgentLog e voc usa este mtodo para registrar mensagens ao log
associado a um agente.
1I.3 E.pe9+f+9a6,o o Rue reg+.-rar
Por padro, aes e erros so armazenados no log. Se voc no quer registrar uma
dessas, defina a propriedade LogAction ou LogErrors como falso. Voc pode checar
quantas mensagens e erros foram registrados at aqui lendo as propriedades NumActions e
NumErros respectivamente. Estas propriedades so teis se voc quer limitar o tamanho do
log especificando o nmero de entradas no log. Se voc est usando um arquivo de log,
voc pode definir OverwriteFile como verdadeiro(true) para sobrescrever qualquer arquivo
existente com o mesmo nome do seu arquivo de log. Se OverwriteFile falso, suas
mensagens so adicionadas ao arquivo de log.
1I.C E.9re*e6,o 6o log
Quando voc quer escrever uma mensagem de log ao seu log, chame um destes
mtodos: LogAction, LogError ou LogEvent.
O mtodo LogAction faz uma das seguintes coisas, dependendo do tipo de log que
voc abriu:
Se voc est registrando em um banco de dados, LogActions cria um novo
documento de entrada no banco de dados contento o texto que voc forneceu no
mtodo;
Se voc est usando um log de correio, o mtodo escreve a data e hora
corrente seguido por sua mensagem de log no corpo do mail memo;
Para arquivos de log, LogAction escreve a data e hora corrente seguido por
sua mensagem de log na prxima linha do arquivo.
LogError semelhante, exceto que voc fornece o mtodo com um cdigo de erro e
uma descrio, que escrita no log da mesma forma como em LogAction.
LogEvent diferente porque ele envia uma mensagem de evento pela rede. Voc
pode usar LogEvent para enviar avisos ao software de gerenciamento de sistema tal como
NotesView.
1I.G Pe92a6,o u5 log

Quando voc encerra suas mensagens de registro, voc fecha o log usando o
mtodo Close. Se voc est usando um log de correio, o este mtodo envia o mail memo
para seus destinatrios.
$O NotesDate%ime
Uma das coisas que geram mais confuso trabalhando com data e hora no
LotusScript que voc quer tratar com dois tipos diferentes de formatos para data-hora: o
formato date-time do Notes e o formato date-time do LotusScript. O objeto NotesDateTime
representa uma data e hora no formato Notes. Ele tem um componente data, hora, zona e
ajuste de hora alm de armazenar hora com preciso de centsimos de segundos. Em
contraste com ele, a variante de data-hora do LotusScript que somente tem componentes
data e hora alm armazenar hora com preciso de segundos.
Quando voc obtm o valor data-hora de um documento Notes, voc obtm-o como
um objeto NotesDateTime. Voc pode usar o este objeto para fazer o seguinte:
Converter entre o formato de data-hora do Notes e LotusScript;
Converter entre o formato de data-hora do Notes em uma string;
Modifica o componente data-hora do formato Notes.
Veja a tabela 3.39 para as propriedades da classe e a tabela 3.40 para ver seus
mtodos
Tabela 3.39 Propriedades da classe NotesDateTime

Propriedade Descrio T+po ,e !a,o Usado
GTT+5e A ,a-a-2ora 9o6*er-+,a para o 2or7r+o
,e Gree6w+92.
String Le+-ura
I.!ST %er,a,e+ro[-rue\ .e o 9o5pu-a,or
e:e9u-a o 9?,+go Rue fo+ ,ef+6+,o
para o1.er*ar .e o. aFu.-e. ,e
2ora e.-0o -e6,o efe+-o.
Boolean Le+-ura
Lo9alT+5e A ,a-a-2ora ,a Vo6a lo9al. String Le+-ura
Gra*a/
0o
LSGT+5e A ,a-a-2ora 9o6*er-+,a para o
2or7r+o ,e Gree6w+92.
Variant of type
DATE
Le+-ura
LSLo9alT+5e A ,a-a-2ora ,a Vo6a lo9al. Variant of type
DATE
Le+-ura
T+5e]o6e A Vo6a 9orre6-e. nteger Le+-ura
]o6eT+5e A ,a-a-2ora aFu.-a,a para a.
propr+e,a,e. T+5e]o6e e I.!ST
e re-or6a,a 9o5o u5a .-r+6g.
String Le+-ura
Tabela 3.40 Mtodos da classe NotesDateTime

Mtodo Descrio T+po ,e !a,o
,e Re-or6o
Valor de
Retorno
A,Fu.-!aE A,+9+o6a ou .u1-ra+ o 6B5ero ,e ,+a.
Rue *o9< e.pe9+f+9ou 6a ,a-a-2ora.
Nenhum Ne62u5
A,Fu.-)our A,+9+o6a ou .u1-ra+ o 6B5ero ,e 2ora.
Rue *o9< e.pe9+f+9ou 6a ,a-a-2ora.
Nenhum Ne62u5
A,Fu.-
+6u-e
A,+9+o6a ou .u1-ra+ o 6B5ero ,e
5+6u-o. Rue *o9< e.pe9+f+9ou 6a
,a-a-2ora.
Nenhum Ne62u5
A,Fu.-
o6-2
A,+9+o6a ou .u1-ra+ o 6B5ero ,e
5e.e. Rue *o9< e.pe9+f+9ou 6a
,a-a-2ora.
Nenhum Ne62u5
A,Fu.-
Se9o6
,
A,+9+o6a ou .u1-ra+ o 6B5ero ,e
.egu6,o. Rue *o9< e.pe9+f+9ou 6a
,a-a-2ora.
Nenhum Ne62u5
A,Fu.-Uear A,+9+o6a ou .u1-ra+ o 6B5ero ,e a6o.
Rue *o9< e.pe9+f+9ou 6a ,a-a-2ora.
Nenhum Ne62u5
Co6*er-To
]o6e
Co6*er-e a ,a-a-2ora para u5a Vo6a
e.pe9Xf+9a.
Nenhum Ne62u5
New Cr+a u5 6o*o o1Fe-o ,a-a-2ora. NotesDateTime A 6o*a ,a-a-
2ora
9r+a,a
Se-A6E!a-
e
Al-era a par-e ,a ,a-a ,e u5 o1Fe-o
,a-a-2ora.
Nenhum Ne62u5
Se-A6E
T+5e
Al-era a par-e ,a 2ora ,e u5 o1Fe-o
,a-a-2ora
Nenhum Ne62u5
Se-Now Al-era o *alor ,a ,a-a-2ora para a ,a-a
a-ual e a 2ora 9orre6-e.
Nenhum Ne62u5
T+5e
!+ffe69
e
!a,o ,ua. ,a-a-2ora." re-or6a a
,+fere6/a e5 .egu6,o. ,a. ,ua.
,a-a-2ora..
Long A ,+fere6/a
e5
.egu6,o
. ,a.
,a-a-
2ora.
$O.1 Cr+a6,o u5 o1Fe-o ,a-a-2ora
Para criar um novo objeto NotesDateTime, voc pode usar tanto o mtodo
CreateDateTime da classe NotesSession ou o mtodo New. Voc fornece a string
representando um valor data e hora, e os mtodos retornam o novo objeto NotesDateTime
representando esta data. Voc pode especificar a data e hora em diferentes formatos:

MM/DD/YYYY HH:MM:SS PM. Por exemplo, ' 05/29/1992 14:30:00 PM ';
MM/YYYY. Por exemplo, ' 12/2001 ';
MM/DD HH:MM:SS. Por exemplo ' 07/27 17:04:00 '.
Depois de voc ter um objeto NotesDateTime, voc pode modific-lo para a data e
hora corrente usando o mtodo SetNow. Voc pode tambm usar SetAnyDate e
SetAnyTime para modificar as partes de data e hora do objeto.
$O.$ Co6*er-e6,o u5a ,a-a para e a par-+r ,e u5 for5a-o Lo-u.S9r+p-
Existem duas propriedades que deixam-no converter entre os diferentes tipos de
formato de data e hora. LSLocalTime deixa-o converter uma data e hora no formato Notes
para seu equivalente no formato LotusScript. Voc pode tambm modificar a propriedade
LSLocalTime para converter uma data e hora no formato LotusScript para o formato Notes.
O exemplo seguinte mostra como converter uma data e hora no formato Notes para o
formato LotusScript:
Dim dtNotes As New NotesDateTime("07/27/1996 11:03 PM")
Dim dtaLotusScript As Variant
DtaLotusScript = dtaNotes.LSLocalTime
Neste exemplo, a data e hora LotusScript definida para representar " 07/27/1996
11:03 PM ", sem considerar as caractersticas na zona usada pelo computador.
Voc pode usar tambm a propriedade LSLocalTime para converter uma data e hora
LotusScript para uma data e hora Notes equivalente.
O segundo mtodo, LSGMTTime, no somente converte o formato de data e hora
Notes para o formato LotusScript, como tambm o converte no horrio de Greenwich. No
exemplo anterior, se voc substituir a chamada a LSLocalTime por LSGMTTime e executar
o cdigo em um computador definido para o horrio Easten Standard, a data e hora
LotusScript definida como " 07/28/1996 04:03 AM ".
Se voc precisa achar a zona definida para a data e hora Notes, use a propriedade
TimeZone. A propriedade retorna um nmero inteiro representando a zona. Quando voc
precisa saber se a hora salva do dia de fato uma data e hora Notes, voc pode usar a
propriedade IsDST para checar. Se o computador onde voc est executando o cdigo
definido para observar a hora salva do dia, a propriedade retorna verdadeiro.
$O.3 Co6*er-e6,o u5a ,a-a para e a par-+r ,e u5 -e:-o
Se voc precisa converter uma data e hora entre uma no formato Notes e um texto,
voc tem duas propriedades para ajudar-lhe. LocalTime e GMTTime trabalham da mesma
forma a sua equivalente no LotusScript, exceto que eles traduzem valores de data e hora
Notes para e a partir de uma string. Voc pode tambm usar a propriedade ZoneTime para
obter um valor data e hora mostrado na sua zona original.
$O.C o,+f+9a6,o u5 *alor ,a-a e 2ora

Voc pode modificar partes de um valor data e hora usando os mtodos AdjustYear,
AdjustMonth, AdjustDay, AdjustHour, AdjustMinute e AdjustSecond. Por exemplo, para
calcular a data de duas semanas atrs, use o cdigo seguinte:
Dim dtNotes As New NotesDateTime("Today")
Call dtNotes.AdjustDay(-14)
Os mtodos so elegantes bastante para ajustar qualquer parte de um valor data e
hora que preciso atualizar. Por exemplo, se o cdigo executa em 2 de julho, a parte do
ms da data e hora automaticamente mudada para junho. Voc pode converter uma data
e hora de uma zona para outra usando ConvertToZone.
$O.G PaVe6,o 97l9ulo. ,e ,a-a e 2ora
Use o mtodo TimeDifference para calcular o nmero de segundos entre dois
valores de data e hora Notes.
$1 NotesDateBa#4e
A classe NotesDateRange foi introduzida na verso 4.5 do Notes. Voc usa objetos
NotesDaterange para representar um espao de tempo. Veja a tabela 3.41 para ver as
propriedades da classe.
Tabela 3.41 Propriedades da classe NotesDateRange
Propriedade Descrio T+po ,e !a,o Usado
E6,!a-eT+5e O f+5 ,o perXo,o. NotesDateTime Le+-ura Gra*a/0o
S-ar-!a-eT+5
e
O +6X9+o ,o perXo,o . NotesDateTime Le+-ura Gra*a/0o
Te:- O perXo,o 9o5o u5a
.-r+6g.
String Le+-ura Gra*a/0o
A propriedade StartDateTime de um objeto NotesDateRange representa o incio do
perodo de tempo, e a propriedade EndDateTime representa o fim do perodo de tempo.
Voc pode, ento, ler as datas incio e fim usando a propriedade Text. Por exemplo, a
propriedade Text de um objeto NotesDateRange pode ser ' 10/01/96 11:15:00 AM ' ou '
10/03/96 11:15:00 AM '.
$$ NotesName
A classe NotesName outra classe que surgiu na verso 4.5 do Notes. Ela
representa um nome de servidor ou usurio do Notes e deixa-o acessar os vrios
componentes de nomes hierrquicos. Por exemplo, voc pode usar um objeto NotesName
para extrair o componente da organizao de um nome de usurio.
NOTA

Todas as propriedades da classe NotesName so somente para leitura. Logo, voc
no pode usar esta classe para atualizar nomes de usurio e servidor.
As propriedades da classe so mostradas na tabela 3.42 e seus mtodos so
mostradas na tabela 3.43.
Tabela 3.42 Propriedades da classe NotesName

Propriedade Descrio T+po ,e !a,o Usado
A11re*+a-e, A for5a a1re*+a,a ,e u5 6o5e
2+er7rRu+9o.
String Le+-ura
A!! O 6o5e ,o ,o5X6+o ,e a,5+6+.-ra/0o
par-e ,e u5 6o5e 2+er7rRu+9o.
String Le+-ura
Ca6o6+9al O 6o5e 6o for5a-o 9a6^6+9o. String Le+-ura
Co55o6 O 6o5e 9o5u5[CN\" par-e ,e u5
6o5e 2+er7rRu+9o.
String Le+-ura
Cou6-rE A reg+0o[ C \" par-e ,e u5 6o5e
2+er7rRu+9o.
String Le+-uraR
Ge6era-+o6 A par-e gera/0o" par-e ,e u5 6o5e
2+er7rRu+9o.
String Le+-ura
G+*e6 A par-e ,a,a ,e u5 6o5e. String Le+-ura
I6+-+al. O +6X9+o ,e u5 6o5e. String Le+-ura
I.)+erarRu+9al %er,a,e+ro[-rue\ .e o 6o5e =
2+er7rRu+9o.
Boolean Le+-ura
_eEwor, O 6o5e 6o for5a-o ,e keEwor,. String Le+-ura
Orga6+Va-+o6 A par-e orga6+Va/0o[O\ ,e u5 6o5e
2+er7rRu+9o.
String Le+-ura
OrgU6+-1
A pr+5e+ra u6+,a,e[OU1\
orga6+Va9+o6al" par-e ,e u5 6o5e
2+er7rRu+9o.
String Le+-ura
OrgU6+-$
A .egu6,a u6+,a,e[OU$\
orga6+Va9+o6al" par-e ,e u5 6o5e
2+er7rRu+9o.
String Le+-ura
OrgU6+-3
A -er9e+ra u6+,a,e[OU3\
orga6+Va9+o6al" par-e ,e u5 6o5e
2+er7rRu+9o.
String Le+-ura
OrgU6+-C
A Ruar-a u6+,a,e[OUC\ orga6+Va9+o6al"
par-e ,e u5 6o5e 2+er7rRu+9o.
String Le+-ura
#R!
O !o5X6+o ,e gere69+a5e6-o pr+*a,o"
par-e ,e o u5 6o5e 2+er7rRu+9o.
String Le+-ura

Sur6a5e
O .o1re6o5e" par-e ,e u5 6o5e
2+er7rRu+9o.
String Le+-ura
Tabela 3.43 Mtodos da classe NotesName
Mtodo Descrio T+po ,e !a,o
,e Re-or6o
Valor de
Retorno
New Cr+a u5 6o*o o1Fe-o No-e.Na5e. NotesName O 6o*o
o1Fe-o
No-e.Na
5e
$3 NotesI#ter#atio#al
A classe NotesInternational surgiu na verso 4.5 do Notes e lhe dar acesso a
caractersticas internacionais da mquina onde o cdigo est executando. Por exemplo, em
uma mquina que executa o Windows, voc6e pode acessar as caractersticas
internacionais que tem sido configurada no painel de controle.
NOTA
Se quaisquer caractersticas internacionais so mudadas, Notes reconhece as
alteraes imediatamente.
As propriedades da classe NotesInternational so mostradas na tabela 3.44
Tabela 3.44 Propriedades da classe Notesternational

Propriedade Descrio T+po ,e !a,o Usado
AS-r+6g A .-r+6g Rue repre.e6-a a 2ora
A[ a6-e. ,e 5e+o-,+a\.
String Le+-ura
Curre69E!+g+-. O 6B5ero ,e ,Xg+-o. ,epo+. ,o
.epara,or ,e9+5al.
nteiro Le+-ura
Curre69E
SE51ol.
O .X51olo 5o6e-7r+o. String Le+-ura
!a-eSep O 9ara9-er u.a,o para .eparar o a6o"
5<. e ,+a e5 u5a ,a-a.
String Le+-ura
!e9+5alSep O 9ara9-er u.a,o para .eparar a.
par-e. ,e u5 6B5ero ,e9+5al.
String Le+-ura
I.Curre69E
Spa9e
%er,a,e+ro[-rue\ .e e:+.-e5 e.pa/o.
e6-re .X51olo. 5o6e-7r+o. e a
Rua6-+,a,e.
Boolean Le+-ura
I.Curre69E
Suff+:
%er,a,e+ro[-rue\ .e o .X51olo
5o6e-7r+o = 5o.-ra,o ,epo+. ,a
Rua6-+,a,e.
Boolean Le+-ura
I.Curre69E
]ero
%er,a,e+ro[-rue\ .e u5a fra/0o -e5
u5 Vero a6-e. ,o .epara,or
,e9+5al .
Boolean Le+-ura
I.!a-e!U %er,a,e+ro[-rue\ .e o for5a-o ,a ,a-a
= ,+aS5<.Sa6o.
Boolean Le+-ura
I.!a-e!U %er,a,e+ro[-rue\ .e o for5a-o ,a ,a-a
= 5<. S,+a Sa6o.
Boolean Le+-ura
I.!a-eU! %er,a,e+ro[-rue\ .e o for5a-o ,a ,a-a
= a6oS5<. S,+a.
Boolean Le+-ura
I.!ST %er,a,e+ro[-rue\ .e o 9o5pu-a,or
e:e9u-a o 9?,+go Rue fo+ ,ef+6+,o
para o1.er*ar .e o. aFu.-e. ,e
2ora e.-0o -e6,o efe+-o.
Boolean Le+-ura
I.T+5e$C)our. %e,a,e+ro[-rue\ .e o for5a-o ,a 2ora
= ,e $C2..
Boolean Le+-ura
#S-r+6g A .-r+6g Rue repre.e6-a a 2ora
#[ ,epo+. ,e 5e+o-,+a\.
String Le+-ura
T2ou.a6,.Sep O .epara,or ,e 5+l2are. para
6B5ero..
String Le+-ura

T+5eSep O 9ara9-er u.a,o para .eparar 2ora."
5+6u-o. e .egu6,o..
String Le+-ura
T+5e]o6e A 9ara9-erX.-+9a ,a Vo6a. nteger Le+-ura
To,aE A .-r+6g Rue +,e6-+f+9a 2oFe 6a
l+6guage5 lo9al.
String Le+-ura
To5orrow A .-r+6g Rue +,e6-+f+9a a5a620 6a
l+6guage5 lo9al.
String Le+-ura
Ue.-er,aE A .-r+6g Rue +,e6-+f+9a o6-e5 6a
l+6guage5 lo9al.
String Le+-ura
$C NotesNe9sLetter (Boletim I#$ormativo)
Suponha que voc tem uma coleo de documentos Notes, talvez os resultados de
uma busca de texto completo de um banco de dados ou de documentos que tenham sido
processados por um agente. No seria bom se voc pudesse criar um documento de
sumrio contendo doclinks para todos os documentos em sua coleo? Bem, use a classe
NotesNewsLetter que ele pode.
A classe deixa-o criar dois tipos de documentos sumrios. O primeiro tipo baseado
em todos os documentos na coleo, o segundo inclui informaes de um dos documentos
na coleo. Veja a tabela 3.45 para ver as propriedades da classe e a tabela 3.46 para seus
mtodos.
Tabela 3.45 Propriedades da classe NotesNewsLetter

Propriedade Descrio T+po ,e !a,o Usado
!oS9ore #ara 6ewle--er. 9r+a,a. u.a6,o o
5=-o,o
Por5a-.gW+-2!o9L+6k."
*er,a,e+ro[-rue\ .e o re.ul-a,o
rele*a6-e para 9a,a ,o9u5e6-o
po,e .er +69luX,o.
Boolean Le+-ura
Gra*a
/0o
!oSu1Fe9- #ara 6ewle--er. 9r+a,a. u.a6,o o
5=-o,o
Por5a-.gW+-2!o9L+6k."
*er,a,e+ro[-rue\ .e o .u1Fe9- ,e
9a,a ,o9u5e6-o po,e .er
+69luX,o. [ U.e Su1Fe9-I-e5Na5e
para ,ef+6+r ;ual 9a5po u.ar
9o5o .u1Fe9-\
Boolean Le+-ura
Gra*a
/0o
Su1Fe9-I-e5
Na5e
#ara 6ewle--er. 9r+a,a. u.a6,o o
5=-o,o
Por5a-.gW+-2!o9L+6k." o
6o5e ,o 9a5po -ra-a,o 9o5o o
.u1Fe9- ou -X-ulo ,o ,o9u5e6-o.
String Le+-ura
Gra*a
/0o
Tabela 3.46 Mtodos da classe NotesNewsLetter
Mtodo Descrio T+po ,e !a,o ,e
Re-or6o
Valor de
Retorno
Por5a-
!o9u5e
6-
!a,o a po.+/0o ,e u5 ,o9u5e6-o
6a 6ew.le--er" 9r+a u5a +5age5
,o ,o9u5e6-o. E6-0o" 9r+a u5
6o*o ,o9u5e6-o 6o 1a69o ,e
,a,o. for6e9+,o e ar5aVe6a a
+5age5 9o5o o 9orpo ,o 6o*o
,o9u5e6-o.
NotesDocument O 6o*o
,o9u5e
6-o
9r+a,o
Por5a-.g
W+-2!o9
l+6k.
!a,o u5 1a69o ,e ,a,o." 9r+a u5
,o9u5e6-o 6ew.le--er 6o 1a69o
,e ,a,o..
NotesDocument O
,o9u5e
6-o
6ew.le--
er
New Cr+a u5 6o*o 6ew.le--er. NotesNewsletter O 6o*o
6ew.le--
er
$C.1 Cr+a6,o u5 New.Le--er
Voc tem duas maneiras de criar um NotesNewsLetter. Voc pode usar o mtodo
CreateNewsLetter da classe NotesSession ou o mtodo New da classe NotesNewsLetter.

Em ambos voc fornece uma coleo de documentos contento o conjunto de documentos
que voc quer incluir no newsletter.
$C.$ Por5a-a6,o u5 New.La--er
Depois de voc criar um objeto newsletter, voc tem duas opes para como criar
um documento de sumrio a partir dele. Voc pode usar o mtodo FormatMsgWithDocLinks
para criar um documento contento links para todos os documentos na coleo. Voc
fornece o mtodo com o banco de dados onde ser criado o novo documento.
O novo documento contm uma linha de sumrio para cada documento da coleo.
Por padro, cada linha contm uma contagem(escore) de cada documento seguido por um
doclink para o documento. Se voc no quer incluir a contagem relevante, defina a
propriedade DoScore para falso. Voc pode tambm incluir um ttulo para cada documento
usando as propriedades DoSubject e SubjectItemName. Voc define a propriedade
SubjectItemName para o nome do campo que contm o texto que voc quer usar como o
ttulo. Voc, ento, define DoSubject como verdade para incluir o ttulo em cada linha do
newsletter. Por exemplo, suponha que os documentos na coleo contm um campo
chamado DocTitle que armazena o subject do documento. Se voc definir SubjectName
como DocTitle e DoSubject para verdadeiro(true), cada linha no newsletter consiste da
contagem para o documento, um doclink para o documento seguido por um texto do campo
DocTitle.
Voc pode usar o mtodo FormatDocument para criar um novo documento contento
uma imagem de um documento particular da coleo. sto semelhante a repassar um
documento, onde o novo memo de correio mostra uma imagem do documento repassado.
Voc fornece o mtodo com o banco de dados onde ser criado o novo documento e um
nmero para indicar quais os documentos da coleo para incluir. O mtodo cria o novo
documento contento uma imagem do documento da coleo.
$C.3 Sal*a6,o ou e6*+a6,o u5 New.La--er
O documento que voc criou usando o mtodo NotesNewsLetter , para o Notes, o
mesmo que qualquer documento. Voc pode chamar o mtodo de documentos Save para
salvar o documento ou voc pode usar o mtodo Send para enviar o documento.
$G Notes%imer
O objeto NotesTime deixa-o definir um horrio que voc pode usar para disparar um
evento. Voc especifica um intervalo de tempo e cada tempo que o intervalo de tempo tem
passado, um alarme disparado. Suas propriedades so mostrados na tabela 3.47 e seus
mtodos na tabela 3.48.
Tabela 3.47 Propriedades da classe NotesTimer

Propriedade Descrio T+po ,e !a,o Usado
Co55e6- U5 9o5e6-7r+o para +,e6-+f+9ar o
9ro6^5e-ro.
String Le+-ura
Gra*a
/0o
E6a1le, Se *er,a,e+ro[-rue\ 2a1+l+-a o
9ro6^5e-ro.
Boolean Le+-ura
Gra*a
/0o
I6-er*al O 6B5ero ,e .egu6,o. para e.perar
a6-e. ,e u5 alar5e ,+.parar.
nteger Le+-ura
Gra*a
/0o
Tabela 3.48 Mtodos da classe NotesTimer
Mtodo Descrio T+po ,e !a,o ,e
Re-or6o
Valor de Retorno
New Cr+a u5 6o*o 9ro6^5e-ro. NotesTimer O 6o*o
9ro6^5e-ro
9r+a,o
Para usar um cronmetro, execute os seguintes passos:
Declare um objeto NotesTimer na parte declaraes ou opes do script;
Crie um objeto NotesTimer usando o mtodo New ou CreateTimer da classe
NotesSession. Voc fornece um intervalo de tempo e um comentrio opcional;
Use o comando On Event Alarm para definir uma sub para chamar a cada
tempo o intervalo de tempo que tem passado.
Voc usa a propriedade Interval para alterar o intervalo de tempo para o cronmetro
e a propriedade Comment para adicionar um comentrio de identificao ao cronmetro.
Voc pode habilitar ou desabilitar o cronmetro usando a propriedade Enabled.
Por exemplo, para definir e usar um cronmetro para chamar uma sub a cada
minuto, voc primeiro declara o cronmetro nas sesses de opes e declaraes como se
segue:
Dim tmrMinute As NotesTimer
Ento, voc cria um cronmetro e define um sub para chamar quando o perodo de
tempo do cronmetro expirar:
Set tmrMinute = New NotesTimer(60,"One minute timer")
On Event Alarm From tmrMInute Call DoOneMinuteProcessing
Porque, por padro, o cronmetro est habilitado, logo o sub
DoOneMinuteProcessing ser chamado a todo minuto.

CUI!A!O
No confie muito na preciso do tempo pois outros eventos podem atrasar o tempo
de disparado do evento Alarm.