Anda di halaman 1dari 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. compartilharem uma rea comum de informaes.

Groupware: software baseado em tecnologia Client/Server, permitindo vrios usurios

Exemplos de ferramentas groupware: Lotus Notes LOTUS Exchange MICROSOFT 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.
MODO INTELIGENTE DE SE COMUNICAR, COOPERAR E COORDENAR

1.2 - SERVIDORES DO NOTES E ESTAES DE TRABALHO


O Notes consiste em dois programas principais: Servidor e Estao de Trabalho. O Servidor do Notes: Um computador que executa o OS/2, Windows/NT ou UNIX 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 Estao de Trabalho do Notes: Um computador que executa o software do sistema Windows/NT, OS/2, Macintosh ou UNIX - comunicase com os servidores do Notes, de modo que voc possa usar os bancos de dados compartilhados e ler e enviar mensagens.

1.3 USURIOS NOTES


Administradores: Gerenciam os usurios, as redes e os bancos de dados do Notes para assegurar que todos estejam acessando corretamente os bancos de dados. Designers: Criam e modificam os bancos de dados (aplicativos) para que os usurios possam compartilhar informaes de maneira eficaz. Usurios: Criam, editam e compartilham documentos com outros usurios do Notes.

CAPTULO 1 LOTUS SCRIPT BSICO


LotusScript Bsico

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.

Sintaxe usada no 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 Qu LotusScript ?

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. 2 Adicionando Comentrios ao seu Cdigo

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

DICA 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.

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.

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 O valor boleano falso. Representada por 0 O valor boleano verdadeiro. Representado por -1. Para variveis do tipo variante, indica que a varivel no tem valor Para variveis que podem se referenciar a um objeto, indica que a varivel no est se referenciando a um objeto Do termo matemtico =~ 3,14

FALSE TRUE NULL NOTHING PI

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 %INCLUDE 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. DICA 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 Integer Long Single Double Currency String Variant Nmero de Bytes Armazenados 1 4 4 8 8 2 por caracter 16 Sufixos % & ! # @ $ Nenhum

6. Declarando Variveis

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. DICA 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# DICA 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 DICA 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 Integer Long Single Double Currence String Variant 7

Prefix I L S D Cur Str Var

Example IDocsDeleted LFilesLength SWeightCoefficient DAcceleration CurSalaryIncrease StrDocTitle VarName

Convertendo Tipos de Dados

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 Bin$ Ccur CDat CDbl CInt CLng CSng CStr DataType Hex$ Oct$ Str$ TypeName Val Descrio Converte o nmero fornecido em uma String que representa seu valor binrio Converte o valor fornecido em Currency Converte o valor fornecido em Variant do tipo data Converte o valor fornecido em Double Converte o valor fornecido em Integer Converte o valor fornecido em Long Converte o valor fornecido em Single Converte o valor fornecido em String Retorna um valor Integer que representa o tipo de dado do valor fornecido Converte o nmero em uma String que representa seu valor hexadecimal Converte o nmero em uma String que representa seu valor octal. Converte um nmero em uma String. Retorna uma String que representa o tipo de dado do valor fornecido Converte a String fornecida em um nmero do tipo Double.

7.1 Convertendo Dados de um Tipo para Outro 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) 7.2 Convertendo um Nmero em uma Cadeia de Caracteres 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) 7.3 Convertendo Cadeia de Caracteres em Nmero Use a funo Val para converter uma cadeia em um nmero. A funo Val retorna um valor Double contendo a representao numrica da cadeia. 7.4 Checando o Tipo de Dado de uma Varivel 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) 8 Estrutura de Dados do LotusScript

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. 8.1 Arrays

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 Erase IsArray Lbound ReDim Ubound Declara uma array esttica e inicializa seus elementos Inicializa cada elemento de uma array fixa. Para arrays dinmicas, deleta todos seus elementos Dado uma varivel ou expresso, Retorna verdadeiro se uma expresso for uma array Retorna o menor ndice de uma array Declara uma array dinmica e aloca espao para seus elementos ou modifica o tamanho de uma array dinmica existente 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 8.2 Listas

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 Funes Dim Erase ForAll IsElement IsList LisTag

Descrio Declara a lista Para a lista, remove todos os seus elementos. Para elementos da lista, remove o elemento da lista Lao entre os elementos da lista Dado o nome da lista e a string, retorna verdadeiro se a string um elemento da lista Verifica se a varivel uma lista 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. CUIDADO LotusScript suporta somente arrays e listas com um tamanho mxio de 64k. Tome cuidado com esse limite quando alocar arrays e listas grandes. 8.3 Tipos Definidos pelo Usurio 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 8.4 Classes e Objetos Definidos pelo Usurio 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. Isto , 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 Delete IsObject New Set With Usado para declarar uma classe de objeto definido pelo usurio Executa a subrotina Delete para objetos definidos pelo usurio Retorna verdadeiro se a expresso fornecida for um objeto Usado para criar um novo objeto definido pelo usurio Associa um objeto a uma varivel Usado para acessar procedimentos pblicos e variveis de objeto

8.5 Objetos OLE e ActiveX Voc pode acessar as classes, mtodos, e propriedades de objetos OLE e ActiveX usando LotusScript e Notes. Isto 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 GetObject IsObject Set Dado o nome de uma classe de objeto OLE, Cria um objeto OLE Dado o caminho de uma arquivo e o nome de uma classe OLE, abre um objeto OLE a partir de um arquivo Retorna verdadeiro se a expresso fornecida for um objeto 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)

Entendendo Operadores LotusScript

No LotusScript, os operadores so usados para realizar os seguintes tipos de funes: Aritmtico; Lgico; Comparao; Concatenao.

Tabela 1.9 Operadores Aritmticos Operador + * / \ Mod ^ Descrio Nmero negativo Subtrai dois nmeros Adiciona dois nmeros Multiplica dois nmeros Divide dois nmeros Diviso de inteiros Resto de uma diviso inteira Potncia de um nmero Tabela 1.10 Operadores de Comparao Operador = <> >< < > >= => <= =< Is Descrio Retorna verdadeiro se dois valores so iguais Retorna verdadeiro se dois valores no so iguais Retorna verdadeiro se um valor menor que o outro Retorna verdadeiro se um valor maior que o outro Retorna verdadeiro se um valor maior ou igual a outro Retorna verdadeiro se um valor menor ou igual a outro Retorna verdadeiro se dois objetos referenciam-se para o mesmo objeto Tabela 1.11 Operadores Lgicos Operador Not And Or Xor Descrio Negao lgica And lgico Or lgico Or exclusivo Exemplo Not B A And B A Or B A Xor B Resultado Verdadeiro se B falso; Falso do contrrio Verdadeiro se A e B verdadeiros; Falso do contrrio Verdadeiro se A ou B verdadeiros; Falso do contrrio Verdadeiro se apenas um verdadeiro; Falso Exemplo 5=6 5 <> 6 7<9 7>9 8 >=8 8 <= 8 ObjA ObjB Resultado False True True False True True Is True/False Exemplo -34 75 5+9 7*6 16 / 5 16 \ 5 16 Mod 5 5^2 Resultado -34 2 14 42 3.5 3 1 25

Eqv Imp

Equivalncia lgica Implicao lgica

A Eqv B A Imp B

se A e B falsos ou verdadeiros Verdadeiro se A e B so falsos ou verdadeiros; Falso do contrrio Verdadeiro se A falso ou ambos so verdadeiros; Falso se A verdadeiro e B falso

Tabela 1.12 Operadores de Strings Operador & + Like Descrio Concatena duas strings Concatena duas strings Exemplo AB+CD AB+ CD Resultado ABCD ABCD True

Retonra verdadeiro se uma string ABC Like A* combina com outra string fornecida

10

Usando Funes e Subs

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. 10.1 Declarando funes e subs 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 Integer)

10.2 Chamando funes e subs 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 Branch

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...While 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.4 Do...Until 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

If...Then...Else branches

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...Case branches

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

GoSub and On...GoSub

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. 12 Trabalhando com Strings

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 Funes e Comandos Asc Chr Format InStr Lcase Left Len Lset Ltrim Mid Right Rset Descrio Dado uma string, retorna o cdigo de caracter da string Dado um cdigo de caracter, retorna o caracter correspondente ao cdigo Formata uma string de acordo com o tipo de formato especificado Dado duas strings, retorna a posio do caracter(InStr) onde uma string ocorre primeiro em outra. Converte os caracteres de uma string em minsculos Dado uma string e um nmero n, retorna n caracteres mais a esquerda da string Retorna o nmero de caracteres de uma string 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. Remove os espaos excedentes a esquerda de uma string Retorna uma substring de uma string dado o incio e o fim da substring Dado uma string e um nmero n, retorna n caracteres mais a direita da string 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 Remove os espaos em brancos a direita de uma string Adiciona n espaos a um string Compara duas strings de acordo com o mtodo de comparao Remove espaos a direta e a esquerda de uma string Converte os caracteres de uma string em maisculos Retorna o caracter correspondente a um nmero no cdigo Unicode Dado uma string, retorna o cdigo de caracter Unicode, para o primeiro caracter na string Dado uma dimenso e tambm um cdigo, Unicode ou um caracter, retorna uma string dos caracteres especificados do tamanho fornecido

Rtrim Space StrCompare Trim Ucase Uchr Uni Ustring

12.1 Criando strings 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 ASCII 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. 12.2 Criando substrings 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: StrMiddleInitial = Mid$(strName, 6, 1) O strMiddleInitial 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. CUIDADO 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. 12.3 Formatando strings 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 12.4 Encontrando e comparando strings 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: 13 -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.

Manipulao de Datas e Horas

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 Comandos e Descrio Funes 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 IsDate 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 DICA 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.

14 Trabalhando com Arquivos


H muitas maneiras de trabalhar com arquivos usando LotusScript. A tabela 1.15 mostra as funes disponveis. Tabela 1.15 Funes para arquivos Comandos e Descrio Funes Close Fecha um ou mais arquivos abertos. EOF Indica 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 Input # Dado um nmero de arquivo, l dados de um arquivo sequencial Input Dado um nmero de arquivo, l um nmero especfico de caracteres de um arquivo seqencial ou binrio InputB Dado um nmero de arquivo, l um nmero especfico de bytes de um arquivo sequencial ou binrio Kill Deleta um arquivo Line Input# 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 Open Print # Put Reset Seek SetFileAttr Spc Tab Width # Write # Unlock

Renomeia um arquivo ou diretrio Abre um arquivo Imprime uma lista de variveis de um arquivo Escreve dados em um arquivo randmico ou binrio Fecha todos os arquivos abertos 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 Altera os atributos de sistema de arquivo de um arquivo Insere um nmero especfico de espaos em um comando Print ou Print(#) Move a posio de impresso para uma coluna especfica Usado para especificar o tamanho da linha de um arquivo Escreve uma lista de variveis para um arquivo 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 Tipo de Arquivo Seqencial Randmico Binrio Descrio Um arquivo de texto Um arquivo com registros formatados Um arquivo com uma estrutura de definio de programa

14.1 Obtendo informaes de arquivo 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 14.2 Criando e abrindo arquivos

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. 14.3 Lendo arquivos 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 ID 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. 14.4 Escrevendo em arquivos 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. 14.5 Fechando arquivos

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. 14.6 Excluindo arquivos Para deletar um arquivo use o comando Kill. Use o comando com o nome do arquivo como se segue: Kill C:\TEMP.TXT 15 Leitura/Gravao

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 Comandos e Funes Beep InputBox MessageBox Print Descrio Alarma Mostra uma caixa de dilogo onde o usurio pode entrar com um valor Mostra uma caixa de mensagem ao usurio 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. Isto 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. 16 Funes Mtemticas As funes matemticas do LotusScript so mostradas na tabela 1.18 Tabela 1.18 funes matemticas Comandos e Funes Abs Acos Asin Atn Atn2 Cos Exp Fix Fraction Int Log Round Sgn Sin Sqr Tan 16.1 Descrio Retorna o valor absoluto de um nmero Dado um nmero entre 1 e 1, retorna seu arco coseno em radianos Dado um nmero entre 1 e 1, retorna seu arco seno em radianos Dado um nmero, retorna sua arco tangente em radianos Dado as coordenadas de um ponto no plano cartesiano, retorna o ngulo em radianos Dado um ngulo em radianos, retorna seu coseno Dado um nmero, retorna o exponencial de um nmero Retorna a parte inteira de um nmero Retorna a parte fracional de um nmero Retorna o nmero inteiro que menor ou igual ao fornecido Retorna o logartmo natural de um nmero Arredonda um nmero Retorna 1, 0 ou 1 se o nmero for negativo, zero ou positivo Dado um nmero em radianos, retorna seu seno Retorna a raiz quadrada de um nmero Dado um ngulo em radianos, retorna sua tangente Ocultando Erros em Tempo de Execuo

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 Integrado do Notes (IDE) 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 Comandos e Funes Erl Err Error On Error Resume Descrio Retorna o nmero da linha do erro mais recente Retorna o nmero do erro dependendo como ele ocorra Retorna uma mensagem do erro dependendo como ele ocorra Desvia a execuo do cdigo para uma funo quando ocorre um erro 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:

Ignorar 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.

CAPTULO 2 - USANDO O LOTUS SCRIPT NO LOTUS NOTES


Aprenda como usar o Ambiente de Desenvolvimento Integrado do Notes para usar o LotusScript.

Voc usa o Ambiente de Desenvolvimento Integrado para entrar, compilar e depurar seus programas do LotusScript. Aprenda como usar o editor Script.

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. Aprenda como usar o depurador do LotusScript.

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.

Veja as tcnicas de depurao do LotusScript.

Examinamos algumas tcnicas teis que voc pode utilizar quando est testando e depurando programas LotusScript.

Entendendo como acessar bibliotecas de links dinmicos no LotusScript

Voc pode extender o poder do LotusScript chamando as funes dentro de bibliotecas de links dinmicos. Ns olharemos como fazer isto.

Aprenda como incluir extenses LotusScript em seus scripts.

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 Integrado do Notes(IDE). 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 Integrado 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

Ambiente de Desenvolvimento Integrado do Notes O Ambiente de Desenvolvimento Integrado no Notes (IDE) 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 IDE. Apesar de cada IDE ser diferente, eles compartilham muitas caractersticas comuns, tais como o Editor Script e caractersticas do Depurador. Descreveremos o IDE para Formulrios, mas o Editor Script e o Depurador trabalham de forma similar nos outros IDEs. Os IDEs 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 rea de Layout do Formulrio

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.2 Painel de Ao

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 IDE 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 SmartIcon voc pode clicar as janelas Exibir /Mostrar/Hide Action usando o SmartIcon. 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 SmartIcon.

1.3

Painel de Estrutura

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 Caixa de Desenho

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.2 Caixa de Eventos

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 Run Radio Button

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.4 O Script Browser

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. O Editor Script

1.3.5

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 If...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.6 Caixa de Erros

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.

Usando o Editor Script

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

CUIDADO O Editor Script no tem a funo Undo, ento tenha cuidado quando estiver editando algo. 2.1 Configurando o Editor Script

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: Identificadores;

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 InfoBox, 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. 2.2 Dando entrada em um cdigo

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. Palavraschave, 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 Type MyTypeName 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 TYPE 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 Function 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 Sub 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 loops Digite na primeira linha de um loop e pressione Enter. A terminao Next automaticamente adicionada para voc; Forall loops A terminao End Forall adicionada quando voc pressiona Enter aps a digitao da primeira linha; Expresses If O End If adicionado para voc;


2.3

Expresses Select - O End Select automaticamente adicionado. Do While loops A terminao Loop statement adicionada; Statments While A terminao Wend adicionada. Compilando um Script

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. DICA 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.

Usando o LotusScript com o Notes O Notes usa um modelo de programao orientado a objeto e a evento. A Interface 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. (objeto)

Para cada objeto, voc precisa conhecer os eventos aos quais ele responde. 3.1 Botes, Aes e Pontos de Acesso

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 Evento Click ObjectExecute Trigger Quando selecionado boto, ao ou ponto de acesso 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; Selecione Criar - Ponto de Acesso - Boto. Um boto adicionado ao formulrio e a caixa de informao com suas propriedades so mostradas; D um ttulo ao boto digitando Ola turma no campo Rtulo do boto; Clique na janela do editor de Script; Selecione o Script radio buttom. Pelo padro (default), a posio frmula selecionada para um novo boto; Adicione o seguinte cdigo ao evento Click. Messagebox Ol Turma !, 0, Boto de teste.

3.

4. 5. 6.

7.

8.

Selecione a opo Estrututa Visualizar no Notes. Voc solicitado a entrar com o nome para o novo formulrio; Entre com Test como o nome do formulrio e clique OK. O novo formulrio salvo e mostrado. Clique o boto Ol Turma. Sua caixa de mensagem Ol Turma mostrada.

9.

10.

3.2

Campos

Voc pode anexar o LotusScript aos eventos de campos mostrados na tabela 2.2. Tabela 2.2 Eventos de campos Evento Entering Exiting Trigger Quando um usurio coloca o curso no campo. 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 ProductID.; 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 de trabalho) Dim uiDoc As NotesUIDocument (cria um objeto do tipo documento atual) Dim strProductId As String (cria um campo) Set uiDoc = uiWorkspace. CurrentDocument (atribui o documento atual ao objeto) StrProductId = uiDoc.FieldGetText (ProductID) (atribui o valor do campo do objeto a varivel) 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 no campo ProductID) End If Call uiDoc.FieldSetText (ProductID, strProductID) (atribui o valor da varivel ao campo) End Sub 8. Salve e teste o formulrio. Coloque o cursor no campo ProductID and pressione tabpara mover para o campo ProductName. 3.3 Formulrios

O objeto formulrio (NotesUIDocument) 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. Imediatamente 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 Evento PostModeChange PostOpen PostRecalc QueryClose QueryModeChange QueryOpen QuerySave Trigger Aps o formulrio ser alterado para ou a partir do modo de edio. Aps o formulrio ser aberto. Aps o formulrio ter sido atualizado. Antes do formulrio ser fechado. Antes do formulrio ser alterado para ou a partir do modo de edio. Antes do formulrio ser aberto. 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 ( Verifica se o documento est em modo de edio) Call Source.FieldAppendText (DocEditors, s.CommonUserName & Chr(10)) (Adiciona o nome comum do usurio corrente ao campo DocEditors. )

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. 9. Salve o formulrio; 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.4 Vises e Folders

O objeto viso e pasta (veja a classe NotesUIView 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 Evento PostDragDrop PostOpen PostPaste QueryAddToFolder QueryClose QueryDragDrop QueryOpen QueryOpenDocument QueryPaste QueryRecalc Trigger Aps uma operao arrastar e soltar (somente vises de calendrio). Aps a viso ter sido aberta. Aps um documento ter sido colado dentro de uma viso. Antes de um documento ser adicionado a um pasta. Antes da viso ser fechada. Antes de uma operao arrastar e soltar (somente vises de calendrio). Antes da viso ser aberta. Antes de um documento ser aberto a partir da viso. Antes de um documento ser colado dentro de uma viso. 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 representa a viso corrente) Dim iDoc As Integer Dim doc As NotesDocument (classe que representa um documento no BD) For iDoc = 1 To Source.Documents.Count (percorre os documentos da coleo) Set doc = Source.Documents.GetNthDocument (iDoc) (retorna um documento na posio idoc)

Doc.Data = Now Call doc.Save(True, True) (salva mudanas feitas em um documento) Next End Sub 5. 6. 7. 8. 9. Salve a pasta; Crie um novo documento Tpico Principal e salve-o; Selecione-o e copie-o para a rea de transferncia; Mude para a pasta Minhas Favoritas e cole o documento. 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.5

Bancos de Dados

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 Evento PostDocumentDelete PostOpen QueryClose QueryDocumentDelete O evento disparado... Aps um documento ter sido excludo do banco de dados usando Cortar ou Limpar. Aps o banco de dados ter sido aberta. Antes do Banco de Dados ser fechado. 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; Selecione Estrutura - Outros e abra o Script do Banco de Dados; Selecione o evento PostDocumentDelete na caixa de evento; D entrada no cdigo seguinte:

2.

3.
4.

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 (no salva a mensagem de envio) doc.Form = Memo doc.SendTo = Marcio Nogueira doc.Subject = CStr(Source.Documents.Count) & documents deleted at

& CStr(Now) & . Call doc.Send( True ) (envia a mensagem) End Sub 5. 6. 7. 8. Salve o script; Feche o banco de dados e reabra-o; Crie um novo documento Tpico Principal e salve-o; Mude para a viso Todos os Documentos, selecione o documento que voc acabou de criar e marque-o para excluso; Feche o banco de dados e exclua o documento criado recentemente;

9.

10. Uma mensagem de correio automaticamente criada e enviada; 3.5 Agentes

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.6

Inicializar

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 Evento Initialize Terminate Trigger Quando o agente iniciado. Quando o agente terminado.

Usando o Depurador 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. Isto 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. Habilitando o Depurador

4.1

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

4.2

A rea de Boto

Voc pode controlar como o depurador salta um script usando os cinco botes no topo da tela. Os botes trabalham da seguinte forma:

Continuar - Continua a execuo do script at voc encontrar o ponto de quebra ou o fim do cdigo encontrado; Prximo Passo - 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; Rastrear por Bloco - 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; Rastrear e Sair 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;

4.3

Interromper Para de executar o script. A Caixa Objeto

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. 4.4 A Caixa Evento

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. 4.5 A Janela de Depurao

A Janela de Depurao mostra o LotusScript que voc est depurando. Uma seta aponta para a linha que est para ser executada. 4.6 A Caixa de Combinao Chamadas

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.

4.7

A Paleta de Ponto de Interrupo

A Paleta de Ponto de Interrupo 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. 4.8 A Paleta Variveis

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. 4.9 A Paleta de Sada

A Paleta de Sada usada para mostrar a sada de comandos de impresso de seu script. 4.10 Usando Pontos de Parada

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:

Definir ou limpar um ponto de parada simples 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 Interrupo; Limpar todos os pontos de parada Para limpar um ponto de parada, d um duplo clique na linha que o contm;

Habilitar ou desabilitar temporariamente um ponto de parada simples Para desabilitar temporariamente um ponto de parada, selecione-o na janela do depurador e selecione Depurar Desativar Ponto de Interrupo 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 Interrupo; Habilitar ou desabilitar temporariamente todos os pontos de parada Para desabilitar temporariamente todos os pontos de parada selecione Depurar Desativar Todos os Pontos de Interrupo na barra de menu do Notes. Para reabilit-los selecione Depurar Ativar Todos os Pontos de Interrupo.

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.

Tcnicas Adicionais de Depurao

Voc pode usar uma variedade de tcnicas para testar seus scripts enquanto est usando o depurador. 5.1 Usando a caixa de Mensagem

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 5.2 Usando a Funo Print

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. 5.3 Usando um Controlador de Erros

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. Inclua 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 %Include 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

6.0 Usando DLL 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 DLLs do Windows 95. Voc pode chamar funes externas em todas as plataformas seguintes: Windows 3.1; Windows 95; Windows NT; OS/2; UNIX; 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 DICA 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 Integer, ByVal iY As Integer) as Integer

Usando Evaluate e Execute

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 DICA 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 | mini programa Execute(strScript) executa o mini programa 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 Incremente 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 Execute 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; Digite a frmula, do tipo @attachments, dentro da caixa de entrada e clique OK; A caixa de mensagem aparece.

2.
3.

Extenses LotusScript

Extenses LotusScript ou LSXs, 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, IBM 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 LSXs 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 http://www.hurslev.ibm.com/mqseries. 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 diferena entre classes front-ende back-end; As 25 classes de objetos Lotus Notes;

Como usar as propriedades e mtodos de cada classe em seus programas LotusScript. 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: frontend ou interface do Usurio (UI) 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 UI 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 UI 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 UI 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 UI e o documento back-end. Quando voc digita dados no documento UI, 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 UI 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 NotesUIWorkspace

A Classe NotesUIWorkspace representa a janela corrente de espao de trabalho do Notes. Ela permite-lhe usar o LotusScript para realizar algumas das aes que voc normalmente realiza a partir do rea de trabalho do Notes, tais como abrir bancos de dados ou criar e editar documentos. Se um documento j est sendo mostrado em uma janela ativa ou sublinhado em uma viso, voc pode usar esta classe para trabalhar com o documento. 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 Isto 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. Isto 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 NotesUIWorkspace Propriedade CurrentDocument Descrio Tipo de Dados O documento que est sendo NotesUIDocument mostrado Uso Leitura

Tabela 3.2 Mtodo da classe NotesUIWorkspace Mtodo AddDatabase CheckAlarms Compose Document DialogBox Descrio Tipo de Dados Valor Retornados Retornado Adicione um novo banco de dados rea Nenhum Nenhum de trabalho Checar novos alarmes no correio do banco Nenhum Nenhum de dados Crie um novo UI Documente em um Banco Notes Documento O Novo UI de Dados especfico usando um formulrio UI Documento especfico e mostrando-o no modo de edio. Mostre uma caixa de dilogo com botes Boolean Verdadeiro se o OK e Cancel que contm o documento usurio corrente exibido usando um formulrio que seleciona OK voc especifica. na caixa de dilogo Verdadeiro para abrir o documento Documento UI O documento corrente no modo de edio. Falso para UI abr-lo no modo de leitura. recentemente aberto Crie um novo documento de perfil ou abra Nenhum Nenhum uma perfil existente. Defina com verdadeiro (True) para iniciar o Boolean Verdadeiro se o processo em background que checa processo for alarmes. permitido Abra um Banco de Dados em uma viso Nenhum Nenhum especfica e opcionalmente sublinhe um documento especfico Abra um URL Nenhum Nenhum

EditDocument

EditProfile EnableAlarms OpenDatabase URLOpen

ViewRefresh 2

Atualizar a viso de um documento

Nenhum

Nenhum

NotesUIDocument

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 NotesUIDocument e a Tabela 3.4 lista os mtodos. Tabela 3.3 Propriedades da classe NotesUIDocument Propriedade AutoReload Descrio 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. O nome do campo aonde o cursor se encontra O documento back-end associado com o documento UI corrente Defina como Verdadeiro(true) para colocar o documento UI atual no modo de edio ou leia para checar se o documento UI atual est no modo de edio Defina como Verdadeiro(true), quando o documento UI estiver em modo de edio, para mostrar o campo de ajuda. Leia para checar se o campo de ajuda est sendo exibido. Defina como Verdadeiro(true), quando o documento UI estiver em modo de edio, para mostrar os caracteres de formatao ocultos. Leia para checar as posies atuais. Defina com Verdadeiro(True) para mostrar a barra de rolagem horizontal. Leia para checar se a mesma est sendo mostrada. Verdadeiro(True) se o documento est Tipo de dados Boolean Uso Leitura Escrita

CurrentField Document EditMode

String Documento Notes Boolean

Leitura Leitura Leitura Escrita Leitura Escrita

FieldHelp

Boolean

HiddenChars

Boolean

Leitura Escrita Leitura Escrita Leitura

HorzScrollBar InPreviewPane

Boolean Boolean

IsNewDoc PreviewDocLinks

PreviewParent

Ruler WindowTitle

sendo mostrado na janela de previsualizao Verdadeiro(True) se o documento nunca tiver sido salvo Defina com Verdadeiro(True) para mostrar a janela de previsualizao para um link. Leia para checar se a mesma est sendo exibida. Defina Verdadeiro(True) para mostrar o Pai do documento UI atual na janela de previsualizao. Leia para checar se a janela de previsualizao est sendo mostrada. Defina Verdadeiro(True) para mostrar a rgua. Leia para checar se a mesma est sendo exibida. O ttulo da janela para o documento que est sendo mostrado.

Boolean Boolean

Leitura Leitura Escrita Leitura Escrita

Boolean

Boolean String

Leitura Escrita Leitura

Tabela 3.4 Mtodos do NotesUIDocument Mtodo Categorize Clear Close CollapsAll Sections Copy CreateObject Descrio Tipo de Dados Valor Retornados Retornado Coloca o documento dentro de uma Nenhum Nenhum categoria Somente no modo de edio, exclui texto, Nenhum Nenhum grficos ou objetos que esto selecionados. Fecha o documento UI atual. Nenhum Nenhum Contrai todas as sees no atual Nenhum Nenhum documento UI aberto. Copia texto, grficos ou objetos Nenhum Nenhum selecionados para a rea de transferncia Para um documento UI no modo de edio Variante UM handle com o cursor em um campo de texto rico para um objeto cria um OLE ou um objeto ActiveX. criado recentemente Somente no modo de edio, corta o texto, Nenhum Nenhum grficos ou objeto selecionado no documento e coloca-os na rea de transferncia. Somente no modo de leitura, marca o Nenhum Nenhum documento para excluso e fecha-o Deseleciona qualquer texto, grfico ou Nenhum Nenhum objeto selecionados. Expande todas as sees no documento Nenhum Nenhum UI aberto atualmente. Adiciona o texto fornecido ao contedo de Nenhum Nenhum um campo (ou o campo corrente se no for fornecido nenhum nome)

Cut

DeleteDocument DeselectAll ExpandAll Sections FieldAppendText

FieldClear

FieldContains

Somente no modo de edio, limpa o Nenhum contedo de um campo (ou o campo corrente se no for fornecido nenhum nome) Verdadeiro(True) se um campo (ou o Boolean campo corrente se no for fornecido nenhum nome) contm um texto especfico. Pega o contedo de um campo (ou o String campo corrente se no for fornecido nenhum nome). Converte o contedo em uma string de texto. Somente no modo de edio, define o Nenhum 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. Mostra a caixa de dilogo Tempo Livre Nenhum Crie um correio Memo contendo o documento UI aberto atualmente Dando o nome de um OLE ou objeto ActiveX, retorna um Handle para um objeto encontrado Somente no modo de edio, coloca o cursor no ltimo campo editado Somente no modo de edio, coloca o cursor no campo determinado Somente no modo de edio, coloca o cursor no prximo campo editvel abaixo e direita da posio atual do cursor. Somente no modo de edio, coloca o cursor no prximo campo editvel acima e esquerda da posio atual do cursor. Somente no modo de edio, coloca o cursor no primeiro campo editvel Somente no modo de edio, insera o texto fornecido na posio onde o cursor se encontra Somente no modo de edio, cola o contedo da rea de transferncia na posio atual do cursor. Imprime o documento atual. Opcionalmente mostra a caixa de dilogo File Print Somente no modo de edio, computa todas as frmulas para os campos computados no documento Computa todas as frmulas ocultas em um documento No modo de edio, atualiza o documento Nenhum Variante Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum

Nenhum

FieldGetText

FieldSetText

Verdadeiro se o campo comtm o texto que voc especificou O contedo do campo convertido em um texto Nenhum

FindFreeTime Dialog Foward GetObject GoToBottom GoToField GotoNextField GoPrevField GotoTop InsertText Paste Print Refresh RefreshHide Formulas Reload

Nenhum Nenhum Um handle para o objeto Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum

Save SaveNewVersion

SelectAll

Send 2.1

UI com qualquer mudana que tenha sido feita ao documento back-end associado Somente no modo de edio, salva o documento Somente no modo de edio, salva o documento como uma nova verso (o formulrio do documento fornecido tem disponveis as opes de verses apropriadas Somente no modo de edio, seleciona o contedo do campo atual. No modo de leitura, seleciona o contedo do documento inteiro Envia o documento Atualizando campos

Nenhum Nenhum

Nenhum Nenhum

Nenhum

Nenhum

Nenhum

Nenhum

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. Isto 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.

DICA 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 Isto 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 NotesView

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 NotesUIView Propriedade CalendarDateTime Documents View Descrio Somente aplicvel em vises de calendrio. A data e a hora da rea selecionada. Uma coleo de todos os documentos na viso atual. A viso back-end que corresponde viso atual Tipo de Dados String NotesDocument Collection NotesView Uso Leitura Leitura 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.

NotesUIDatabase

A classe NotesUIDatabase representa o banco de dados Notes que est aberto atualmente. Suas duas propriedades e um mtodo esto mostrados nas tabelas 3.6 e 3.7.

Tabela 3.6 Propriedades da classe NotesUIDatabase Propriedade Database Documents Descrio Tipo de Dados O banco de dados back-end que NotesDatabase corresponde ao banco de dados atual Uma coleo de todos os documentos no NotesDocument Uso Somente leitura Somente

banco de dados. Tabela 3.7 Mtodos da classe NotesUIDatabase Propriedade OpenView Descrio

Collection

leitura

Tipo de Dado de Valor de retorno Retornado Dado o nome de uma viso no banco de Nenhum Nenhum dados atual, abre a viso

As propriedades Documents e DataBase permitem-lhe acessar alguns dos objetos back-end que correspondem ao banco de dados atual. OpenView permite-lhe abrir uma viso no Banco de Dados.

NotesSesion

A classe NotesSession a principal de todas as classes back-end e representa o ambiente do script atual. Voc pode usar classe NotesSession para responder as questes seguintes sobre o script atual: Em que banco de dados o script est rodando? 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.INI; 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 Propriedade AddressBooks CommonUserName CurrentAgent Current Database DocumentContext Descrio O livro de endereos que esto disponveis ao script atual. A parte do nome comum da pessoa ou servidor rodando o script O agente, se existir, que est rodando atualmente O banco de dados no qual o script est localizado. Para agentes que tenham sido iniciados via Notes API e tenha criado um documento, esta propriedade retorna o documento back-end criado recentemente. 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. As especificaes internacionais da mquina na qual o script est rodando. Verdadeiro se o script est rodando em um servidor. Falso, se o script est rodando em uma estao de trabalho. O cdigo de status de sada retornado pelo gerenciador de agentes na sua ltima execuo Somente para agentes script. A data quando o agente rodou pela ltima vez. A verso do Notes na qual o script est rodando O tipo de sistema de operao no qual o script est rodando Somente para agentes script. Um documento Notes guardado dentro do Banco de Dados que pode ser usado para armazenar dados entre execues do agente. 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. Tipo de Dados Array of Notes Databases String NotesAgent Notes Database Notes Document Uso Leitura Leitura Leitura Leitura Leitura

EffectiveUserName

String

Leitura

International IsOnServer LastExitStatus LastRun NotesVersion Platform SavedData

NotesInternational Leitura Boolean Integer Leitura Leitura

Variante do tipo Leitura DATA String Leitura String Documento Notes Leitura Leitura

UserName

String

Leitura

Tabela 3.9 Mtodos da classe NotesSession Propriedade CreateDate Close Descrio Cria um novo objeto NotesDateRange Fecha a seo atual Tipo de Dado Valor de Retornado de retorno Notes O objeto NotesData DataRange Range criado recentemente Nenhum Nenhum O objeto Notes

CreateDataTime Dada uma string representando data e NotesDataTime

CreateLog CreateNews Letter CreateTimer FreeTime Search

hora vlidas, cria um novo objeto NotesDateTime Dada uma string usada para dar nome NotesLog ao Log, cria um novo objeto NotesLog Dado um objeto NotesDocument NotesNewsletter Collection, cria um novo objeto NotesNewsletter Cria um novo objeto NotesTimer NotesTimer Procura tempos livres calendrios e listas para fazer

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 GetDbDirectory Dado o nome servidor, cria um novo objeto NotesDbDirectory que pode ser usado para listar os bancos de dados num servidor GetEnvironment Dado um nome de uma varivel de String ambiente string, pega seu valor. Quando rodando em um servidor, pega o valor NOTES.INI do servidor. Quando rodando em uma Estao de Trabalho usa o NOTES.INI do usurio atual GetEnvironment Como em GetEnvironmentString mas Value para uma varivel de ambiente numrica SetEnvironment Dado o nome de uma varivel de Var ambiente e valor novo, armazena o novo valor no arquivo NOTES.INI apropriado. Quando rodando em um servidor usa o NOTES.INI do servidor. Quando rodando em uma estao de trabalho, usa o NOTES.INI do usurio corrente Update Somente para agentes script, marca ProcessedDoc um documento como tendo sido processado por um agente 5.1 Achando o Banco de Dados Atual

DataTime criado recentemente O objeto Notes Log criado recentemente O objeto Notes Newsletter criado recentemente O objeto Notes Timer criado recentemente Array de Uma variedade de NotesDateRange objetos NotesDataRange representando vagas (slots) disponveis NotesDatebase O objeto NotesDatabase criado recentemente NotesDb Directory Variant O objeto DbDirectory recentemente Notes criado

O valor da varivel do ambiente

Variant Nenhum

O valor da varivel de ambiente Nenhum

Nenhum

Nenhum

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, IsOnServer 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 If not s.IsOnServer Then MessageBox(Este cdigo deve ser usado no servidor) End If 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 SERVIDOR/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 SERVIDOR.

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. 5.4 Checando Como o Notes definido (Set-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 Internacional 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.INI ou arquivos preferenciais. Se seu script est executando em um servidor, o NOTES.INI do servidor usado; caso contrrio o NOTES.INI 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.INI 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. 5.8 Trabalhando com Outros Objetos 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.

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 Para Achar Este Tipo de Banco de Dados Qualquer banco de dados Notes Qualquer banco de dados modelo Todos os bancos de dados Notes disponveis para replicao Todos os bancos de dados Notes que podem ser um modelo Use Esta Constante... DATABASE TEMPLATE REPLICA_CANDIDATE TEMPLATE_CANDIDATE

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 Propriedade Name Descrio Tipo de Dados O nome do servidor no qual este String diretrio est localizado Uso Somente Leitura

Tabela 3.12 Mtodos da classe NotesDbDirectory Propriedade Descrio GetFirst Database Tipo de Dados de Valor de retorno retorno Dado um tipo de banco de dados para NotesDatabase O primeiro banco procurar, retorna o primeiro banco de dados de dados do tipo daquele tipo. Voc pode procurar qualquer que voc tipo de banco de dados, qualquer modelo, e especificou banco de dados que pode ser replicado, ou qualquer banco de dados que pode ser um modelo. Se voc j tiver usado o mtodo First NotesDatabase O prximo banco Database, retorna o prximo banco de de dados do tipo dados do tipo que voc especificou que voc especificou Cria um novo objeto NotesDbDirectory. NotesDbDirectory O objeto criado recentemente

GetNext Database New

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 Propriedade ACL Agents AllDocuments Categories Created CurrentAccess Level DelayUpdates Descrio A ACL para o banco de dados Tipo de Dados NotesACL Uso Leitura Leitura Leitura Leitura Leitura Leitura Leitura Gravao

DesignTemplate Name FileName FilePath Forms IsFTIndexed IsMultiDBSearch IsOpen IsPrivateAddress

Todos os agentes definidos no banco de Array of dados NotesAgents Uma coleo contendo todos os NotesDocument documentos de um banco de dados. Collection Todas as categorias s quais um banco de String dados pertence A data que o banco de dados foi criado Variant of type DATE O nvel de acesso ACL para o usurio Integer atual Constante Verdadeiro(true) se mltiplas atualizaes Boolean em documentos em um servidor so processadas juntas para melhor performance O nome do modelo de criao para o String banco de dados. O nome e extenso do arquivo do banco String de dados. O caminho completo e nome do arquivo do String banco de dados incluindo drive de leitura, diretrio, nome de arquivo e extenso. Os formulrios no banco de dados. Array of NotesForm objects. Verdadeiro(true) se o banco de dados tem Boolean ndice de texto completo. Verdadeiro(true) se o banco de dados tem Boolean ndice de texto completo. Verdadeiro(true) se o banco de dados Boolean estiver aberto. Verdadeiro(true) se o banco de dados Boolean

Leitura Leitura Leitura Leitura Leitura Leitura Leitura Leitura

Book IsPublicAddress Book LastFTIndexed

LastModified Managers Parent PercentUsed ReplicaID Server Size SizeQuota TemplateName Title Unprocessed Documents Views

um Livro de Endereo Pessoal. Verdadeiro(true) se o banco de dados um Livro de Endereo Pblico. 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. A data que o banco de dados foi modificado pela ltima vez. Todas as pessoas, grupos e servidores que so os administradores do banco de dados. O NotesSession que contm o banco de dados. A percentagem do banco de dados que est em uso atualmente. O ID de replica(16-caractere) para o banco de dados. O nome do servidor no qual o banco de dados est armazenado. O tamanho, em bytes, do banco de dados. O tamanho mximo, em bytes, at o qual o banco de dados pode crescer. Para bancos de dados que so modelos, o nome do modelo. Se o banco de dados no for modelo, retorna uma string vazia. O ttulo do banco de dados. Todos os documentos que so considerados para ser unprocessed pelo script . Todas as vises e pastas pblicas dentro do banco de dados. Se o banco de dados estiver armazenado localmente, pastas pessoais so includos.

Boolean

Leitura

Variant of type Leitura DATE

Variant of type Leitura DATE Variant of type Leitura DATE NotesSession Double String String Double Long String String NotesDocument Collection Variant of Notes Views Leitura Leitura Leitura Leitura Leitura Leitura/Gravao Leitura Leitura/Gravao Somente Leitura Leitura

Tabela 3.14 Mtodos da classe NotesDatabase Propriedade Close Compact Descrio Tipo de Dados Valor Retornado Retornados Fecha o banco de dados. Nenhum Nenhum Compacta um banco de dados local. Long O nmero de bytes Perceba que voc no pode usar este recuperados na mtodo para compactar o banco de compactao do banco dados aonde o script est rodando. Dado um servidor e um nome de Nenhum Nenhum arquivo, cria um novo banco de dados. Dado um servidor e um nome de NotesDatabase Um objeto arquivo, cria uma cpia do banco de NotesDatabase dados. D cpia o mesmo ttulo e representando a cpia ACL do original. criada recentemente Cria um documento novo e vazio no NotesDocument O documento criado banco de dados. Note que voc deve recentemente

Create CreateCopy

Create Document

CreateForm Template CreateReplica

salvar o documento antes de de fechar o banco; caso contrrio, o documento ser perdido. Dado um servidor, nome de arquivo e NotesDatabase o nome de um modelo, cria um novo banco de dados baseado no modelo. Dado um servidor, nome de arquivo, NotesDatabase cria uma cpia rplica do banco de dados. Fornece a rplica com o mesmo ttulo e ACL do original. Dada uma string representando uma NotesDocument vlida consulta de texto completo, o Collection texto completo procura o banco de dados.

FTSearch

GetAgent GetDocument ByID GetDocument ByUNID GetDocument ByURL

Fornece um agente dado seu nome. NotesAgent Dado o NotesID de um documento, NotesDocument encontra o documento. Similar ao anterior porm usa o UNID. NotesDocument 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. Pega um formulrio dado o seu nome ou alias. Pega um documento Profile do banco de dados. Para o banco de dados Web Navigator, dado um URL e string de cabealho, retorna a informao do cabealho URL requerida. Dado o nome ou alias de uma viso ou pasta, retorna a viso ou pasta. Muda o ACL para o banco de dados para dar pessoa, grupo ou servidor um nvel de acesso especfico. Cria um novo objeto banco de dados Notes. Note que este mtodo no cria um novo banco de dados no disco. Dado um servidor e um nome de arquivo, abre um banco de dados existente. NotesDocument

Um objeto do banco de dados Notes representando o banco criado recentemente Um objeto do banco de dados Notes representando o banco criado recente-mente Uma coleo de documentos atendendo aos critrios da consulta, classificada de forma que os documentos mais relevantes esto em primeiro lugar O agente O documento O documento O documento correspondente URL

GetForm GetProfile Document GetURL Header GetView GrantAccess New Open

NotesForm NotesDocument String

O formulrio O documento profile A informao de cabealho A viso ou pasta requisitado Nenhum

NotesView Nenhum

Banco de dados O objeto criado Notes recentemente Boolean Verdadeiro se o banco de dados foi encontrado e aberto com sucesso Verdadeiro se o banco de dados foi

OpenBy ReplicaID

Similar ao Open, mas usa o nome do Open servidor fornecido e replica ID para

encontrar o banco de dados OpenIf Modified Dado um servidor, nome de arquivo e Boolean data abre um banco de dados existente, sob a condio que tenha sido modificado desde a data que voc especificou. Abre o correio do banco de dados do Nenhum usurio atual. Abre o Navegador Web default do Boolean banco de dados. Boolean

encontrado e aberto com sucesso Verdadeiro se o banco de dados tiver sido encontrado e aberto com su-cesso Nenhum Verdadeiro se o banco de dados tiver sido encontrado e aberto com sucesso Verdadeiro se o banco de dados foi encontrado e aberto com sucesso

OpenMail OpenURLDB

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. QueryAccess Dado o nome de uma pessoa, grupo ou servidor, devolve seus nveis de acesso ao banco de dados. Remove Exclui o banco de dados. Replicate Dado o nome de um servidor, replica o banco de dados com sua rplica naquele servidor. RevokeAccess Remove uma pessoa, grupo ou servidor do ACL para o banco de dados. 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. Unprocessed FTSearch Somente para agentes script, o mesmo que FTSearch, exceto que s so procurados aqueles documentos que o agente considera no processados. Somente para agentes script, o mesmo que Search, exceto que s so procurados aqueles documentos que o agente considera no processados. Para qualquer banco de dados com um ndice de texto completo, atualiza o ndice. Para banco de dados local, cria o ndice, se necessrio. Criando um Banco de Dados

Integer Constant Nenhum Boolean Nenhum NotesDocument Collection

O nvel de acesso Nenhum Verdadeiro se o banco de dados foi replicado com sucesso Nenhum Todos os documentos que com binam com a frmula e tm sido modificados desde a data separada Os documentos

NotesDocument Collection

Unprocessed Search UpdateFT Index

NotesDocument Collection Nenhum

Os documentos

Nenhum

7.1

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) DICA Scripts rodando em um servidor podem somente criar ou acessar bancos de dados em um servidor.

7.2

Abrindo, Fechando e Excluindo um Banco de Dados.

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 ID 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 ID 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. DICA 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 ID 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. DICA

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. Tabela 3.15 Constantes Nveis de Acesso para NotesACL Nvel de Acesso Nenhum Depositor Leitor Autor Editor Designer Administrador Constante ACCLEVEL NOACCESS ACCLEVEL DEPOSITOR ACCLEVEL LEITOR ACCLEVEL AUTOR ACCLEVEL EDITOR ACCLEVEL DESIGNER ACCLEVEL ADMINISTRADOR

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 ID um ID de 8 (oito) caracteres que unicamente identifica um documento dentro de um banco de dados particular. O Notes ID especfico para o banco de dados, isto , uma cpia do documento em uma rplica do banco de dados pode ter um Note ID diferente. O ID universal para um documento um ID 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 ID como pelo seu Universal ID.

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 http://www.lotus.com, True) = dbWebNavigator.GetDocumentByURL(

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. 7.7 Achando um grupo de documentos

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. 8 NotesView

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 Propriedade Aliases AutoUpdate Columns Created IsCalendar IsDefaultView IsFolder LastModified Name Parent ProtectReaders Readers UniversalID Descrio O aliases de uma viso. Deixe-a como true se a viso front-end atualizada automaticamente quando da atualizao da viso back-end. Todas as colunas na viso ou pasta. Tipo de Dado Array of string Boolean Uso Leitura Leitura Gravao Leitura Leitura Leitura Leitura Leitura Leitura Leitura Leitura Leitura Gravao Leitura Gravao Leitura

Array of Notes ViewColumns A data e hora em que a viso ou pasta foi Variant of date criada. type Verdadeiro se a viso um viso de Boolean calendrio. Verdadeiro se a viso a padro Boolean Verdadeiro se o objeto uma pasta Boolean A data e hora quando a viso ou pasta foi Variant of type modificada pela ltima vez. date Pode ser seu nome, alias ou ambos. String O banco que contm a viso ou pasta. NotesDatabase Defina como verdadeiro para proteger o Boolean item $Readers durante a replicao. O nome das pessoas, grupos e Array of string servidores que podem ler a viso, Um ID de 32 caracteres que identifica a String viso ou pasta em todas as rplicas de um banco de dados particular.

Tabela 3.17 Mtodos da classe NotesView

Mtodo Clear

Descrio

FTSearch

GetAllDocuments ByKeys GetChild

Se a viso foi filtrada usando uma busca de texto completo, limpa a viso e todos os documentos so mostrados. Dado uma string representado uma Integer consulta de texto completo, encontra o banco de dados e mostra as vises que satisfazem a consulta. Dado uma chave, acha todos os NotesDocument documetnos na viso que satisfazem Collection a chave. Dado um documento na viso, acha a primeira reposta do documento. NotesDocument NotesDocument NotesDocument NotesDocument NotesDocument NotesDocument NotesDocument NotesDocument NotesDocument NotesDocument

Tipo de Dados Retornados Nenhum

Valor Retornado Nenhum

GetDocumentBy Key Dado uma chave, acha o primeiro documento que possui a chave fornecida. GetFirstDocument Obtm o primeiro documento da viso. GetLastDocument GetNextDocument Obtm o ltimo documento da viso.

Obtm o prximo documento da viso a partir do documento atual. GetNextSibling Dado um documento de uma viso, acha o prximo documento que tem o mesmo nvel do documento atual. GetNthDocument Dado um ndice de uma viso, acha o documento na posio do documento. GetParentDocument Dado qualquer documento resposta, acha o documento pai. GetPrevDocument Dado Qualquer documento na viso, acha o documento anterior. GetPrevSibling Dado um documento em uma viso, acha o documento anterior com o mesmo nvel do documento fornecido. Refresh Atualiza a viso para mostrar as possveis mudanas. Remove Exclui a viso de um banco de dados. 8.1 Trabalhando com propriedades de viso

O nmero de documentos que satisfazem a consulta Uma coleo de documentos que satisfazem a consulta A primeira resposta do documento O primeiro documento com a chave O primeiro documento da viso O ltimo documento da viso O prximo documento O documento O documento O documento pai O documento O documento

Nenhum Nenhum

Nenhum Nenhum

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. 8.2 Navegando em uma viso hierrquica

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. 8.3 Achando um documento na viso

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. 8.4 Buscando documentos na viso

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. 8.5 Atualizando uma visio

Mundanas em uma viso no refletem automaticamente em um objeto NotesView. Para obter as atualizaes, use o mtodo Refresh. 8.6 Excluindo uma viso

Voc pode usar o mtodo Remove para excluir uma viso permanentemente de um banco de dados 9 NOTESVIEWCOLUMN

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. Tabela 3.18 Propriedades NotesViewColumn Propriedade Formula IsCategory IsHidden IsResponse IsSorted ItemName Position Title 10 Descrio Representao textual de uma frmula. Verdadeiro se a coluna est categorizada. Verdadeiro se a coluna est oculta. Verdadeiro se a coluna somente resposta. Verdadeiro se a coluna est ordenada. Se a coluna exibe o valor de um campo, o nome do campo. A posio da coluna na viso. O ttulo da coluna se ela tiver. Tipo de Dado Usado String Boolean Boolean Boolean Boolean String Integer String Leitura Leitura Leitura Leitura Leitura Leitura Leitura Leitura

NOTESDOCUMENT

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.

Tabela 3.19 Propriedades da classe NotesDocument Propriedade Authors ColumnValues Created Embedded Objects EncryptionKeys Descrio O nome das pessoas que tem salvo os documentos. O valor de uma coluna para um documento A data de criao do documento. Todos os objetos ActiveX e OLE no documento. Tipo de Dado Array of strings Array of variants Variant do type data Array of NotesEmbedded Objects String or Array of Strings Boolean Integer Boolean Boolean Boolean Boolean Boolean Boolean Boolean Usado Leitura Leitura Leitura Leitura Leitura Gravao Leitura Gravao Leitura Leitura Leitura Leitura Leitura Leitura Leitura Leitura

A chave usada para encriptar documentos. EncryptOnSend Verdadeiro(true) se o documento para ser encriptado quando enviado. FTSearchScore A contagem de documentos encontrados a partir de uma pesquisa. HasEmbedded Verdadeiro(true) se o documento contem pelo menos um objeto lincado ou arquivo anexado. IsNewNote Verdadeiro(true) se o documento nunca foi salvo. IsProfile Verdadeiro(true) se o documento do tipo profile(perfil). IsResponse Verdadeiro(true) se o documento do tipo resposta. IsSigned Verdadeiro(true) se o documento tem pelo menos uma assinatura. IsUIdocOpen Verdadeiro(true) se o documento foi acessado por um NotesUIDocument. IsUnread Verdadeiro(true) se o documento marcado como no leitura para o usurio corrente. Items Todos os itens armazenados em um documento. Key A chave de um documento de perfil. LastAccessed A ltima data em que o documento foi lido ou alterado. LastModified A ltima data em que o documento foi modificado. NameOfProfile O nome do documento de profile. NoteID Um ID de 8 caracteres que identifica o documento em um banco de dados. ParentDataBase O banco que contem o documento. ParentDocumen Para documentos respostas, um ID t UNID de 32 caracteres que identifica o pai de um documento. ParentView A viso de onde o documento foi recuperado ou acessado. Responses As respostas imediatas para um

Array of NotesItems Leitura String Variant of type DATE Variant of type DATE String String NotesDatabase String NotesView Notes Document Leitura Leitura Leitura Leitura Leitura Leitura Leitura Leitura Leitura

SaveMessage OnSend SendByAgent

Signer SignOnSend Size UniversalID Verifier

documento. Verdadeiro(true) se o documento para ser salvo quando enviado. Verdadeiro(true) se o documento foi enviado atravs de script. Falso(false) se o documento foi enviado por uma pessoa. Se o documento foi assinado, o nome da pessoa que assinou o documento. Verdadeiro(true) se o documento para ser assinado quando enviado. O tamanho do documento em bytes incluindo arquivos anexados. Um ID de 32 caracteres que identifica documentos em todas as rplicas de um banco de dados. O nome da certificado que verifica a assinatura de um documento assinado.

Collection Boolean Boolean

Leitura Leitura

String Boolean Long String String

Leitura Leitura Gravao Leitura Leitura Leitura

Tabela 3.20 Mtodos da classe NotesDocument Mtodo Append ItemValue Compute With Form Descrio Dado de retorno Valor de retorno O novo item Verdadeiro se todas as frmulas executadas tiveram sucesso Nenhum O novo item O novo documento O novo documento resposta O novo campo de texto rico Nenhum O arquivo atachado O item

Cria um novo item no documento e NotesItem define seu valor ou adiciona um valor a um item existente. Executa todos os valores padres, Boolean transaes de entrada e frmulas de validao para os documentos usados.

CopyAll Item CopyItem CopyTo Database Create Reply Message Create RichText Item Encrypt Get Attachment GetFirst Item GetItem

Copia todos os itens de um documento para o outro. Copia um item no documento corrente. Copia um documento para um banco de dados. Cria um novo documento como resposta do documento corrente. Cria um campo de texto rico no documento. Criptografa o documento. Obtm o nome do arquivo anexado ao documento. Obtm o primeiro item com o nome fornecido no documento. Obtm o valor do item do documento

Nenhum NotesItem NotesDocument NotesDocument NotesRichText Item Nenhum Notes Embedded Object NotesItem

String para campo O valor

Value

cujo nome foi fornecido.

GetNext Item HasItem

Obtm o prximo item cujo nome seja o mesmo do fornecido. Verdadeiro(true) se o documento tem um item com o nome fornecido. Make Torna o documento corrente uma Response resposta do fornecido. PutInFolder Pe o documento em uma pasta fornecida. Cria a pasta se no existir. Remove Exclui o documento. Remove FromFolder Remove Item RenderTo RTItem Replace ItemValue Save Send Sign 10.1 Remove o documento de uma pasta especificada. Exclui todos os items com um nome especfico de um documento. Cria uma imagem de um documento e armazena esta imagem em um campo rico. Substitui todos os itens especificados e atribui novos valores. Salva todas as mudanas feitas em um documento. Envia um documento para os recipientes especificados. Adiciona a assinatura do usurio corrente ao documento. Criando um documento

rico. Array of strings para campo texto ou lista. Array of double para nmeros, lista de nmeros e data/hora NotesItem Boolean Nenhum Nenhum Boolean Nenhum Nenhum Boolean NotesItem Boolean Nenhum Nenhum

O item Verdadeiro se o item existe Nenhum Nenhum Verdadeiro se o documento foi excludo Nenhum Nenhum Verdadeiro se a figura foi criada O novo item Verdadeiro se documento foi salvo Nenhum Nenhum

Voc cria um novo documento usando tanto o mtodo CreateDocument NotesDatabase quanto o mtodo New. 10.2 Procurando um documento

da classe

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 ID ou Universal ID;

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. 10.3 Trabalhando com propriedades de documentos

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. CUIDADO 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. CUIDADO 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 NotesRichTextItem da propriedade EmbeddedObjects. 10.4 Trabalhando com documentos de perfil

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.

10.5

Criando e modificando itens de documento

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 NOTA 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.

DICA GetItemValue 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. 10.6 Usando o mtodo ComputeWithForm

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. Isto 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. 10.7 Copiando e excluindo itens de documento

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. 10.8 Trabalhando com documentos respostas

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 ID 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. 10.9 Movendo e copiando documentos

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. 10.10 Enviando um documento

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. Isto 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. 10.11 Salvando e excluindo um documento

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 NOTESFORM

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 . Tabela 3.21 Propriedades da classe NotesForm Propriedade Aliases Fields FormUsers IsSubForm Name Descrio O aliases de um formulrio. Os nomes dos campos no formulrio. Tipo de Dado Array of strings Array of string Array of strings Usado Leitura Leitura Leitura/ Gravao Leitura Leitura

Os nomes dos usurios que podem usar o formulrio (O contedo do campo $FormUsers). Verdade se o formulrio um subformulrio. Boolean O nome do formulrio. String

Protect Torne-o verdadeiro(true) para proteger o Readers item $Readers durante a replicao. ProtectUsers Torne-o verdadeiro(true) para proteger o item $FormUsers durante a replicao. Readers O nome dos usurios que podem ler o formulrio(O contedo do campo $Readers). Tabela 3.22 Mtodos da classe NotesForm Mtodo Remove Descrio

Boolean Boolean Array of strings

Leitura/ Gravao Leitura/ Gravao Leitura/ Gravao

Tipo de Dado Usado Nenhum

Exclui um formulrio de um banco de Nenhum dados.

12

NOTESITEM

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 NotesItem. Tabela 3.23 propriedades da classe NotesItem Propriedade DateTime Value IsAuthors IsEncrypted IsNames IsProtected IsReaders IsSigned IsSummary LastModified Name Descrio Somente para itens data/hora. Um objeto NotesDateTime representando o item. Verdadeiro(true) se o item um autor. Verdadeiro(true) se o item est encriptado. Verdadeiro(true) se o item um nome. Verdadeiro(true) se o item pode ser alterado por um usurio que possua pelo menos acesso editor. Verdadeiro(true) se o item um leitor. Verdadeiro(true) se o item contm uma assinatura eletrnica. Verdadeiro(true) se o item um sumrio. A data de ltima modificao do item. O nome do item. Tipo de Dado NotesDate Time Boolean Boolean Boolean Boolean Boolean Boolean Boolean Variant of type date String Usado Leitura/ Gravao Leitura Leitura Leitura Leitura Leitura Leitura Leitura Leitura Leitura

Parent SaveToDisk Text Type ValueLength Values

O documento que contm o item. Verdadeiro(true) se o item deveria ser salvo no disco quando o documento que o contm salvo. A representao textual de um item. Lista de itens so separados por ponto-evrgula. O tipo do item. O tamanho, em bytes, do item . Os valores armazenados no item.

Notes Document Boolean String Integer constant Integer 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 Leitura Leitura Leitura Leitura Leitura/ Gravao

Tabela 3.24 Mtodos da classe NotesItem

Mtodo Abstract

Descrio Abrevia o texto do item.

Tipo de Dado Valor de de Retorno Retorno String Texto abreviad o Nenhum Verdadeiro se o valor est na lista O novo item

AppendTo Para um item de lista de texto, adiciona Nenhum TextList um outro valor no final da lista. Contains Para itens contento listas, verifica se o Boolean valor fornecido por voc est na lista. Pode ser usado em listas do com nmeros, textos e datas. Copia o item para um documento. NotesItem

CopyItem ToDocu ment New Remove

Cria um novo item. Deleta o item do documento.

NotesItem Nenhum

O novo item Nenhum

12.1

Examinando as propriedades de um item

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. 12.2 Criando e modificando itens

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. 12.3 Excluindo itens

Para excluir um item de um documento, use o mtodo Remove. Lembre de salvar o documento para que suas alteraes tenham efeitos. 13 NotesRichTextItem

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; Importar 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 NotesRichTextItem

Propriedade Embedded Objects

Descrio

Tipo de Dado

Usado

Todos os objetos OLE, ActiveX e Array arquivos do item de texto rico.

of Leitura NotesEmb edded Objects

Tabela 3.26 Mtodos da classe NotesRichTextItem

Mtodo

Descrio

Tipo de Dado

Usado Nenhum Nenhum Nenhum

AddNewLine Adiciona uma ou mais linhas ao Nenhum item de texto rico. AddTab AppendDoc Link Adiciona um ou mais caracteres de Nenhum tabulao ao item de texto rico. Dado um banco de dados, uma Nenhum viso ou documento, cria um link para o objeto e adiciona-o ao item de texto rico. Dado um arquivo no formato de Nenhum texto rico, adiciona seu contedo ao item de texto rico. Adiciona um item de texto rico a Nenhum outro. Adiciona o texto fornecido ao item Nenhum de texto rico.

AppendRT File AppendRT Item AppendText

Nenhum

Nenhum Nenhum O novo objeto criado

EmbedObjec Dado o nome de um arquivo ou NotesEmbedded t aplicao, cria o objeto, um link Object ou um arquivo anexado e armazena-o no campo de texto rico. Get Embedd ed Object Dado o nome de um objeto, link ou NotesEmbedded arquivo anexado a um item de Object texto rico, retorna o NotesEmbeddedObject correspondente.

Object

GetFormatte Retorna o contedo do item de texto String dText rico como uma string.

O texto do item de texto rico O novo item de texto rico criado

New

Cria um item richtext.

NotesRichText Item

13.1

Criando e modificando um item richtext

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. CUIDADO 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. Isto 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.2 Lendo um item richtext

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. 14 NotesEmbeddedObject

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 Class FileSize Name Object Parent Source Descrio Tipo de Dado Usado Leitura Leitura Leitura Leitura Leitura Leitura

O nome da aplicao que criou String objeto. O tamanho, em bytes, do objeto. Long

O nome usado para referenciar o String objeto. O OLE handle para o objeto. Variant

O item de texto rico que contm o NotesRichTextItem objeto. Para arquivos anexados, o nome do String arquivo. Para outros tipos de objetos, um nome interno usado pelo Notes. Mostra o tipo do objeto. IntegerConstant

Type Verbs

Leitura Leitura

Para objetos OLE2, os verbos Array of string suportados pelo objetivo Tabela 3.28 Mtodos da classe NotesEmbeddedObject

Mtodo Activate

Descrio

Tipo de Dado de Valor de Retorno Retorno -

Somente para objetos embutidos ou Variant linkados, carrega o objeto e ativa sua aplicao de servidor OLE. Somente para objetos embutidos, Nenhum executa o verbo fornecido. Somente para arquivos anexados, Nenhum copia o arquivo anexado para o nome de arquivo fornecido. Exclui o objeto embutido, linkado Nenhum ou o arquivo anexado. Criando um objeto embutido

DoVerb ExtractFile

Nenhum Nenhum

Remove

Nenhum

14.1

Voc cria objetos embutido em um campo de texto rico de um documento usando o mtodo EmbedObject da classe NotesRichTextItem. 14.2 Achando um objeto embutido

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. 14.3 Obtendo as propriedades de um objeto embutido

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. 14.4 Ativando um objeto embutido

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. 14.5 Extraindo o arquivo anexado

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. 14.6 Excluindo um objeto embutido

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. 15 NotesDocumentCollection

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 Count IsSorted Descrio O Se nmero de coleo. documentos Tipo de Dado na Long Usado Leitura Leitura

a coleo est ordenada. Boolean Somente as colees produzidas por uma consulta de texto completo sero ordenadas.

Parent Query

O banco de dados que contm a NotesDatabase coleo. A consulta usada para selecionar a String coleo que foi produzida por uma busca.

Leitura Leitura

Tabela 3.30 Mtodos da classe NotesDocumentCollection Mtodo GetFirst Document Descrio Tipo de Dado de Retorno Valor de Retorno O primeiro docum ento O ltimo docum ento prximo docum ento docum ento O docum ento

Obtm o primeiro documento da NotesDocument coleo. documento da NotesDocument

GetLast Obtm o ltimo Docume coleo. nt

GetNext Obtm o prximo documento da NotesDocument Docume coleo em relao ao atual. nt GetNth Document GetPrev Document Obtm um documento na posio NotesDocument do ndice dado. Obtm o documento anterior ao Notes Document atual da coleo.

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. 15.1 Criando uma coleo

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. DICA 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. 15.2 Achando documentos em uma coleo

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. 15.3 Trabalhando com documentos na coleo

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. 16 NotesAgent

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 Comment Common Owner IsEnabled IsPublic

Descrio O comentrio associado ao agente.

Tipo de Dado String

Usado Leitura Leitura Leitura Leitura

O nome comum da pessoa que por String ltimo editou o agente. Verdadeiro(true) abilitado. se o agente est Boolean

Verdadeiro(true) se o agente est Boolean disponvel para todos os bancos de dados dos usurios.

LasRun Name Owner Parent Query

A ltima data na qual o agente foi Variant of type Leitura executado. DATE O nome do agente. String Leitura Leitura

O nome completo da pessoa que por String ltimo editou o agente.

O banco de dados onde o agente est NotesDatabase Leitura armazenado. O texto da consulta usado para String selecionar os documentos onde o agente executa. Leitura

ServerName Para agentes no servidor, o nome String completo do servidor onde o agente executa. Para agentes locais, o nome completo do usurio corrente. Tabela 3.32 Mtodos da classe NotesAgent Mtodo Remove Run Descrio Exclui o agente do banco de dados Executa um agente Tipo de Dado de Retorno Nenhum Nenhum

Leitura

Valor de Retorno Nenhum Nenhum

17

NotesACL

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 Parent Roles Descrio Tipo de Dado Usado Leitura Leitura

O banco de dados que contm a NotesDatabase ACL. Todas as regras definidas na ACL. Array of strings

Tabela 3.34 Mtodos da classe NotesACL Mtodo AddRole Descrio Tipo de Dado de Retorno Dado o nome da regra, adiciona a Nenhum regra a ACL. Valor de Retorno Nenhum A nova entrada na ACL

Create ACL Dado uma pessoa, grupo ou nome NotesACLEntry Entry de servidor e um nvel de acesso, cria uma nova entrada na ACL. DeleteRole GetEntry Dado o nome da regra, exclui a Nenhum funo da ACL. Dado uma pessoa, grupo, ou nome NotesACL de servidor, acha a entrada correspondente na ACL.

Nenhum A entrada na ACL para uma pessoa, grupo ou servidor primeira entrada na ACL prxima entrada na ACL

GetFirstEntr Acha a primeira entrada na ACL y

NotesACLEntry

GetNextEntr Dada qualquer entrada na ACL, NotesACLEntry y acha a prxima. RenameRole Dado o nome da regra, acha a None regra e a renomea. Save Salva alteraes feitas na ACL None

None None

17.1

Criando uma entrada na 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. 17.2 Achando entradas na 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. 17.3 Modificando 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. 17.4 Modificando Regras

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. 17.5 Salvando suas alteraes

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. 18 NotesACLEntry

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 CanCreate Documents CanCreate Personal Agent CanCreate Personal Folder

Descrio

Tipo de Dado

Usado Leitura Grava o Leitura Gravao Leitura Gravao Leitura Gravao

Verdadeiro(true) se a entrada da ACL Boolean pode criar documentos no banco de dados. Verdadeiro(true) se a entrada da ACL Boolean pode criar agentes pessoais no banco de dados. Verdadeiro(true) se a entrada da ACL Boolean pode criar pastas pessoais no banco de dados.

CanDelete Verdadeiro(true) se a entrada da ACL Boolean Documen pode excluir documentos do ts banco de dados. Level Name Parent Roles

O nvel de acesso para esta entrada Integer Constant Leitura da ACL. Gravao O nome associado a entrada da ACL. A ACL que contm a entrada. String NotesACL Leitura Gravao Leitura Leitura

As regras que so definidas para esta Array of strings entrada da ACL.

Tabela 3.36 Mtodos da classe NotesACLEntry Mtodo Tipo de Dado de Retorno DisableRol Dado o nome da regra, remove a Nenhum e regra da entrada na ACL. EnableRole Dado o nome da regra, adiciona a Nenhum regra a entrada da ACL. IsRole Dado o nome da funo, checar se a Boolean Enable entrada da ACL tem a regra d abilitada. New Remove Cria uma nova entrada na ACL. NotesACLEntry Descrio Valor de Retorno Nenhum Nenhum Verdadeiro se a funo est abilitada A nova entrada criada Nenhum

Exclui a entrada da ACL fornecida a Nenhum partir da ACL. Criando e excluindo entradas da ACL

18.1

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. 18.2 Modificando uma entrada da 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. 18.3 Modificando Regras

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. 18.4 Salvando suas mudanas

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.

19

NotesLog

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. Isto 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 LogActions LogErrors NumActions NumErros Descrio Tipo de Dado Usado Leitura Leitura Leitura Leitura Leitura Grava o Leitura Grava o

Verdadeiro(true) se as aes devem Boolean ser registradas. Verdadeiro(true) se os erros devem Boolean ser armazenados. O nmero de aes que tm sido Integer registradas. O nmero de registrados. erros que foram Integer

OverWriteFile Se o log est sendo gravado em um Boolean arquivo. Diz se um arquivo de log deve ser sobrescrevido com este log ou adicionado este log a ele. ProgramNam e O nome que identifica o script e String usado para identificar as entradas do log.

Tabela 3.38 Mtodos da classe NotesLog

Mtodo Close LogAction LogError LogEvent New

Descrio Fecha um log.

Tipo de Dado de Retorno Nenhum

Valor de Retorno Nenhum Nenhum Nenhum Nenhum O novo criado log

Escreve uma ao de mensagem no Nenhum log. Escreve uma mensagem de erro no Nenhum log. Gera um evento Notes. Cria um novo log. Nenhum NotesLog Nenhum

OpenAgent Abre um log de um agente. Log OpenFile Log

Nenhum Nenhum

Dado um nome de um arquivo, abre o Nenhum arquivo e escreve qualquer ao subsequente ou mensagens de erro no arquivo. Cria um novo mail memo endereado Nenhum para o destinatrio que voc especificou. Escreve qualquer ao subsequente ou mensagem de erro ao memo e envia-o quando o log fechado.

OpenMail Log

Nenhum

OpenNotes Dado um nome de servidor e arquivo, Nenhum Log abre o banco de dados de log especfico. Escreve qualquer ao subsequente ou mensagens de erro ao banco de dados. 19.1 Criando um log

Nenhum

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. 19.2 Abrindo um 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.

DICA 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. 19.3 Especificando o que registrar

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. 19.4 Escrevendo no 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. 19.5 Fechando um 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. 20 NotesDateTime

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.

mtodos

Veja a tabela 3.39 para as propriedades da classe e a tabela 3.40 para ver seus Tabela 3.39 Propriedades da classe NotesDateTime

Propriedade GMTTime IsDST

Descrio

Tipo de Dado

Usado Leitura Leitura

A data-hora convertida para o horrio String de Greenwich. Verdadeiro(true) se o computador Boolean executa o cdigo que foi definido para observar se os ajustes de hora esto tendo efeito. A data-hora da zona local. String

LocalTime

Leitura Grava o Leitura Leitura Leitura Leitura

LSGMTime LSLocalTime TimeZone ZoneTime

A data-hora convertida para o Variant of type horrio de Greenwich. DATE A data-hora da zona local. A zona corrente. A Variant of type DATE Integer

data-hora ajustada para as String propriedades TimeZone e IsDST e retornada como uma string.

Tabela 3.40 Mtodos da classe NotesDateTime

Mtodo AdjustDay

Descrio

Tipo de Dado de Retorno

Valor de Retorno Nenhum Nenhum Nenhum

Adiciona ou subtrai o nmero de dias Nenhum que voc especificou na data-hora.

AdjustHour Adiciona ou subtrai o nmero de horas Nenhum que voc especificou na data-hora. Adjust Adiciona ou subtrai o nmero de Nenhum Minute minutos que voc especificou na data-hora. Adjust Month Adjust Secon d Adiciona ou subtrai o nmero de Nenhum meses que voc especificou na data-hora. Adiciona ou subtrai o nmero de Nenhum segundos que voc especificou na data-hora.

Nenhum

Nenhum

AdjustYear Adiciona ou subtrai o nmero de anos Nenhum que voc especificou na data-hora. ConvertTo Zone New Converte a data-hora para uma zona Nenhum especfica. Cria um novo objeto data-hora. NotesDateTime

Nenhum Nenhum A nova datahora criada Nenhum Nenhum Nenhum A diferena em segundo s das datahoras

SetAnyDat e SetAny Time SetNow

Altera a parte da data de um objeto Nenhum data-hora. Altera a parte da hora de um objeto Nenhum data-hora Altera o valor da data-hora para a data Nenhum atual e a hora corrente.

Time Dado duas data-horas, retorna a Long Diffenc diferena em segundos das duas e data-horas.

20.1

Criando um objeto data-hora

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. 20.2 Convertendo uma data para e a partir de um formato LotusScript

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. 20.3 Convertendo uma data para e a partir de um texto

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. 20.4 Modificando um valor data e hora

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. 20.5 Fazendo clculos de data e hora

Use o mtodo TimeDifference para calcular o nmero de segundos entre dois valores de data e hora Notes. 21 NotesDateRange

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 EndDateTime StartDateTim e Text Descrio O fim do perodo. O incio do perodo . O perodo string. como Tipo de Dado NotesDateTime NotesDateTime uma String Usado Leitura Gravao Leitura Gravao Leitura Gravao

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 .

22 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 Abbreviated ADMD Canonical Common Country Generation Given Initials

Descrio A forma abreviada hierrquico. de um

Tipo de Dado nome String

Usado Leitura Leitura Leitura Leitura Leituraq Leitura Leitura Leitura Leitura Leitura Leitura Leitura

O nome do domnio de administrao String parte de um nome hierrquico. O nome no formato cannico. String

O nome comum(CN), parte de um String nome hierrquico. A regio( C ), parte de um nome String hierrquico. A parte gerao, parte de um nome String hierrquico. A parte dada de um nome. O incio de um nome. se o nome String String Boolean String

IsHierarquical Verdadeiro(true) hierrquico. Keyword Organization OrgUnit1

O nome no formato de keyword.

A parte organizao(O) de um nome String hierrquico. A primeira unidade(OU1) organizacional, parte de um nome hierrquico. segunda unidade(OU2) organizacional, parte de um nome hierrquico. terceira unidade(OU3) organizacional, parte de um nome hierrquico. String

OrgUnit2

String

Leitura

OrgUnit3

String

Leitura

OrgUnit4

A quarta unidade(OU4) organizacional, parte de um nome hierrquico. O Domnio de gerenciamento privado, parte de o um nome hierrquico.

String

Leitura

PRMD

String

Leitura

Surname

O sobrenome, parte de um nome hierrquico.

String

Leitura

Tabela 3.43 Mtodos da classe NotesName Mtodo New Descrio Cria um novo objeto NotesName. Tipo de Dado de Retorno NotesName Valor de Retorno O novo objeto NotesNa me

23

NotesInternational

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 NotesIternational

Propriedade AMString

Descrio

Tipo de Dado

Usado Leitura Leitura Leitura Leitura Leitura Leitura

A string que representa a hora String AM( antes de meio-dia).

CurrencyDigits O nmero de dgitos depois do Inteiro separador decimal. Currency Symbols DateSep DecimalSep IsCurrency Space IsCurrency Suffix IsCurrency Zero IsDateDMY IsDateMDY IsDateYMD IsDST O smbolo monetrio. String

O caracter usado para separar o ano, String ms e dia em uma data. O caracter usado para separar as String partes de um nmero decimal. Verdadeiro(true) se existem espaos Boolean entre smbolos monetrios e a quantidade. Verdadeiro(true) se o smbolo Boolean monetrio mostrado depois da quantidade. Verdadeiro(true) se uma frao tem Boolean um zero antes do separador decimal . Verdadeiro(true) se o formato da data Boolean dia/ms/ano. Verdadeiro(true) se o formato da data Boolean ms /dia /ano. Verdadeiro(true) se o formato da data Boolean ano/ms /dia. Verdadeiro(true) se o computador Boolean executa o cdigo que foi definido para observar se os ajustes de hora esto tendo efeito.

Leitura

Leitura

Leitura Leitura Leitura Leitura

IsTime24Hours Vedadeiro(true) se o formato da hora Boolean de 24hs. PMString A string que representa a hora String PM( depois de meio-dia). separador nmeros. de milhares para String

Leitura Leitura Leitura

ThousandsSep O

TimeSep TimeZone Today Tomorrow Yesterday

O caracter usado para separar horas, String minutos e segundos. A caracterstica da zona. A string que identifica linguagem local. hoje Integer na String

Leitura Leitura Leitura Leitura Leitura

A string que identifica amanh na String linguagem local. A string que identifica ontem na String linguagem local.

24

NotesNewsLetter (Boletim Informativo)

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 DoScore

Descrio

Tipo de Dado

Usado Leitura Grava o

Para newletters criadas usando o Boolean mtodo FormatMsgWithDocLinks, verdadeiro(true) se o resultado relevante para cada documento pode ser includo. Para newletters criadas usando o Boolean mtodo FormatMsgWithDocLinks, verdadeiro(true) se o subject de cada documento pode ser includo. ( Use SubjectItemName para definir Qual campo usar como subject) Para newletters criadas usando o String mtodo FormatMsgWithDocLinks, o nome do campo tratado como o subject ou ttulo do documento.

DoSubject

Leitura Grava o

SubjectItem Name

Leitura Grava o

Tabela 3.46 Mtodos da classe NotesNewsLetter Mtodo Descrio Tipo de Dado de Retorno Valor de Retorno O novo docume nto criado

Format Dado a posio de um documento NotesDocument Docume na newsletter, cria uma imagem nt do documento. Ento, cria um novo documento no banco de dados fornecido e armazena a imagem como o corpo do novo documento. FormatMsg Dado um banco de dados, cria um NotesDocument WithDoc documento newsletter no banco links de dados.

O docume nto newslett er O novo newslett er

New

Cria um novo newsletter.

NotesNewsletter

24.1

Criando um NewsLetter

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. 24.2 Formatando um NewsLatter

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. Isto 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. 24.3 Salvando ou enviando um NewsLatter

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. 25 NotesTimer

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 Comment

Descrio

Tipo de Dado

Usado Leitura Grava o Leitura Grava o Leitura Grava o

Um comentrio para identificar o String cronmetro. Se verdadeiro(true) cronmetro. habilita o Boolean

Enabled

Interval

O nmero de segundos para esperar Integer antes de um alarme disparar.

Tabela 3.48 Mtodos da classe NotesTimer Mtodo New Descrio Cria um novo cronmetro. Tipo de Dado de Retorno NotesTimer Valor de Retorno O novo cronmetro criado

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 DoOneMinuteProcessing ser chamado a todo minuto. habilitado, logo o sub

CUIDADO No confie muito na preciso do tempo pois outros eventos podem atrasar o tempo de disparado do evento Alarm.

Anda mungkin juga menyukai