SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Lotus Script Por Carlos Abril
Qué es Lotus Script? Es un potente lenguaje que permite desarrollar aplicaciones orientado a Objetos. LotusScript y su conjunto de herramientas de desarrollo proporcionan un entorno de programación común para todas las aplicaciones de Lotus en todas las plataformas soportadas por el software Lotus (como Windows, AIX, Linux).
Ventajas de Lotus Script Superset of BASIC . Cross-platform. Object-oriented. Included in Lotus software applications. OLE support. Interoperabilitywithotherlanguages. IntegratedDevelopmentEnvironment LotusScriptlibraries Extendable through Lotus Software Extensions (LSXs)
Reglas de construcción Cada declaración de script esta compuesta de líneas de texto. Cada elemento de texto es una palabra clave de Lotus Script, operadores, identificadores, literales, o caracteres especiales. Puede incluir líneas en blanco sin que afecte el sentido. El texto en una línea puede iniciar del lado izquierdo. Dentro de una declaración, los elementos estarán separados por espacios en blanco o tabuladores. Espacios extras pueden ser usados para hacer una declaración más legible sin afectar su significado. Una declaración, a excepción de un bloque de sentencias, debe aparecer en una  sola línea a menos que incluya el carácter de continuación de línea subrayado(_) precedidos por espacios en blanco. El carácter de continuación de línea (_) debe aparecer al final de una linea, precedido al menos de un espacio o tabulación. Una nueva línea marca el final de una declaración. Múltiples declaraciones en una línea deben ser separadas por (:).
Reglas para construcción de cadenas Una cadena en Lotus Script puede encerrarse en uno de los siguientes delimitadores: Un par de doble comillas (“” “”) “Esta es una cadena entre comillas” Un par de barras verticales (||) |esta es una cadena entre barras verticales| Con llaves abiertas y cerradas ({}) {esta es una cadena entre llaves} Cadenas encerradas entre barras verticales pueden separa múltiples líneas. |Una cadena en dos líneas|.
Reglas para construir identificadores Un identificador es el nombre que le da a una variable, constante, tipo, clase, función, procedimiento o propiedad. El primer carácter debe ser una letra mayúscula o minúscula. Los restantes caracteres deben ser letras, dígitos o el carácter subrayado. Un sufijo para los tipos de datos(%,&,!,#,@, o $) pueden estar al final, pero no es parte del identificador. El tamaño máximo es 40 caracteres, no incluye los sufijos. Los nombres pueden ser mayúsculas o minúsculas.
Tipos de datos Boolean	True(1) o False(0) Byte		0 a 255 Integer Long Single Double Currency String
Tipos de datos Soporta los siguientes tipos de datos y estructuras: Array.- conjunto de elementos que tienen el mismo tipo  de datos, puede tener hasta 8 dimensiones. List.- de una sola dimensión que tienen el mismo tipo de datos. Variant .- Un especial tipo de dato que puede contener valores escalares, arreglos, lista, u objetos de referencia. Variant.-puede ser también booleano o fechas. User-defined data type.- Tipo de datos definidos por el usuario. User-definedclass.- definición de clases . Objectreference.- Punteros a objetos de automatización OLE.
Conversión de tipos de dato Lotus Script implícitamente convierte de un tipo de dato a otro en las siguientes situaciones: Operaciones numéricas .- Operaciones con diferentes tipos de datos numéricos , Lotus Script convierte los valores a un mismo tipo de dato para evaluación. Paso de argumentos .- Cuando un argumento numérico es pasado por valor (byvalue) a un procedimiento, Lotus Script  trata de convertir el valor si no es el tipo de dato esperado. Si el valor es más grande, la operación genera un error. Variables Variant.-  Cuando un valor es contenido en una variable Variant, Lotus Script trata de convertir el valor a numérico o cadena dependiendo del contexto.
Conversión explícita de tipos de datos Lotus Script provee varias funciones para convertir explícitamente el valor de un tipo de dato: Cbool CByte Ccur Cdat CDbl Cint CLng CSng Cstr CVar
Automática conversión de tipos de datos. Se puede asignar un valor de un tipo de dato numérico a una variable de un tipo de dato numérico diferente. Puede ejecutar operaciones aritméticas o comparaciones que involucran diferentes tipos de datos numéricos. Puede incrementar  el valor de una variable Variant de algún tipo numérico más allá de los límites permitidos del tipo de dato. Puede añadir o concatenar los valores de dos variables variant, uno de los cuales es cadena y el otro es numérico.
Constantes y variables Se puede manipula varios tipos de datos a través del uso de constantes y variables. Las constantes y variables tienen un alcance y tiempo de vida. El alcance se refiere al área en el cual un identificador puede ser referenciado. El límite se refiere al período durante el cual el identificador esta disponible en la aplicación. Cuando define una constante o variable, Lotus script asigna un alcance y tiempo de vida.
Alcance de las declaraciones. LS reconoce tres tipos de alcance: Módulo .- Una variable es declarada dentro de un módulo si esta fuera de algún procedimiento, clase o definición de tipo.  Procedimiento.- Una variable es declarada dentro de un procedimiento, si es declarada dentro de una función, procedimiento o propiedad. Solamente dentro del procedimiento el nombre de la variable tiene  significado. El nombre de la variable es visible en cualquier parte del procedimiento. Type o Class.- Una variable esta declarada dentro de un Tipo o Clase, el alcance esta dentro de la definición del  tipo o clase.
Clases para acceder a la base de datos Domino Notes Session Notes Database Notes View Notes DocumentCollection Notes Document Notes Item
Clase NotesSession Permite crear una sesión de trabajo. Dimss as New NotesSession
Clase NotesDatabase Permite acceder a la base de datos. Dimss as New NoteeSession Dimdb as NotesDatabase Set db = ss.CurrentDatabase
Clase NotesView Representa una vista o carpeta que contiene documentos. Dimss as New NotesSession Dimdb as Notesdatabase Dimview as NotesView Set db = ss.Currentdatabase Set view = db.GetView(“Nombre o Alias de una vista”)
Clase NotesDocumentCollection Representa una collección de documentos de las base de datos. Dimss as New NotesSession Dimdb as Notesdatabase Dimdc as NotesDocumentCollection Set db = ss.currentdatabase Set dc = db.UnprocessedDocument
Clase NotesDocument Representa un documento de la base de datos. Dimss as New NotesSession Dimdb as Notesdatabase Dimview as NotesView Dimdoc as NotesDocument Set db = ss.Currentdatabase Set view = db.GetView(“Nombre o Alias de una vista”) Set doc = view.GetFirstDocument
Clase NotesItem Permite acceder a un campo del documento. Dimss as New NotesSession Dimdb as NotesDatabase Dimview as NotesView Dimdoc as NotesDocument DimItem as NotesItem Set db = ss.Currentdatabase Set view = db.GetView(“Nombre Vista o carpeta”) Set doc = view.GetFirstDocument Set item = doc.GetFirstItem(“NombreCampos”)
Ejemplo de recorrer una vista. Dimss as New NotesSession Dimdb as NotesDatabase Dim View as NotesView Dimdoc as NotesDocument DimItem as NotesItem Set  db = ss.CurrentDatabase    ‘asocia a la variable db la actual base de datos Set view = db.GetView(“NombreVista”) ‘a la var. View  asocia una de las vistas de la base de datos Set doc = view.GetFirstDocument  ‘apunta al primer documento de la vista Whilenot(docisnothing) ‘determina si hay un documento asociado a la variable doc 	set item = doc.GetFirstItem(“Campo”) ‘obtiene en la variable Item el o los valores de un campo Forall x In Item.Values  ‘es como un For para sacar los valores contenidos en la variable Item Msgbox x     EndForall 	Set doc = view.GetNextDocument(doc)  ‘permite avanzar al siguiente documento en la vista Wend
Modificar un campo en todos los documentos contenidos en una vista SUPONGAMOS QUE EXISTE EN LOS DOCUMENTOS CONTENIDOS EN UNA VISTA UN CAMPO LLAMADO ESTADO QUE NECESITAMOS CAMBIARLO A FINALIZADO. Dimss as New NotesSession Dimdb as NotesDatabase Dim View as NotesView Dimdoc as NotesDocument DimItem as NotesItem Set  db = ss.CurrentDatabase    ‘asocia a la variable db la actual base de datos Set view = db.GetView(“NombreVista”) ‘a la var. View  asocia una de las vistas de la base de datos Set doc = view.GetFirstDocument  ‘apunta al primer documento de la vista Whilenot(docisnothing) ‘determina si hay un documento asociado a la variable doc 	set item = doc.ReplaceItemValue(“Estado”,”Finalizado”)  ‘Estado es el nombre del campo y Finalizado es el nuevo valor calldoc.save(false,false) 	Set doc = view.GetNextDocument(doc)  ‘permite avanzar al siguiente documento en la vista Wend
Enviar por correo información de documentos que cambiaros de estado Vamos a cambiar el estado de los documento de la vista y vamos a notificar por correo a los creadores de los documentos que se ha realizado el cambio de estado. Dimss as New NotesSession Dimdb as NotesDatabase Dim View as NotesView Dimdoc as NotesDocument DimItem as NotesItem Set  db = ss.CurrentDatabase    ‘asocia a la variable db la actual base de datos Set view = db.GetView(“NombreVista”) ‘a la var. View  asocia una de las vistas de la base de datos Set doc = view.GetFirstDocument  ‘apunta al primer documento de la vista Whilenot(docisnothing) ‘determina si hay un documento asociado a la variable doc 	set item = doc.ReplaceItemValue(“Estado”,”Finalizado”)  ‘Estado es el nombre del campo y Finalizado es el nuevo valor calldoc.save(false,false) dimdocMail as New NotesDocument(db)  ‘decimos que vamos a crear un nuevo documento en la actual base de datos docMail.Form = “Memo” ‘ al nuevo documento le asociamos un formulario en esta caso el Memo que esta asoc. Al correo docMail.SendTo = doc.Authors(0)  ‘Asocio al campo sendTo el autor del documento docMail.Subject = “Documento que cambio de estado”   ‘asocio al campo Asunto(Subject) un texto docMail.Body = “Se ha modificado el documento ” & cstr(doc.Numero(0)) calldocMail.Send(false) ‘se envía el documento sin que se grabe en la base actual el mensaje TRUE hace que se grabe 	Set doc = view.GetNextDocument(doc)  ‘permite avanzar al siguiente documento en la vista Wend
Borrar documentos que cumplen una condición Revisamos que el documento tenga un estado de Borrador y procedemos a borrar los documentos. Dimss as New NotesSession Dimdb as NotesDatabase Dim View as NotesView Dimdoc as NotesDocument Dimdocsig as NotesDocument DimItem as NotesItem Set  db = ss.CurrentDatabase    ‘asocia a la variable db la actual base de datos Set view = db.GetView(“NombreVista”) ‘a la var. View  asocia una de las vistas de la base de datos Set doc = view.GetFirstDocument  ‘apunta al primer documento de la vista Whilenot(docisnothing) ‘determina si hay un documento asociado a la variable doc ifdoc.Estado(0) = “Borrador” then 		set docsig = View.GetNextDocument(doc) doc.Remove(true) 		set doc = docsig else 		set doc = view.GetNextDocument(doc) endif Wend
Borrar documentos seleccionados en una vista Revisamos que el documento tenga un estado de Borrador y procedemos a borrar los documentos. Dimss as New NotesSession Dimdb as NotesDatabase Dimdc as NotesDocumentCollection Dimdoc as NotesDocument DimItem as NotesItem Set  db = ss.CurrentDatabase    ‘asocia a la variable db la actual base de datos Set dc = db.UnprocessedDocument ‘determina los documentos que están seleccionados en la vista ifdc.Count > 0 then   ‘Count determina el número de documentos seleccionados en la vista for i = 1 todc.Count doc = dc.GetNthDocument(i)  ‘ accesa al documento doc.Remove(true) ‘si es TRUE borra físicamente, si es False queda marcado para eliminación next Endif
Clases para acceder al front-end . Notes UIWorkspace Notes UIDocument
Clase NotesUIWorkspace Representa la actual área de trabajo de Lotus. Dim  WS as New NotesUIWorkspace
Clase NotesUIDocument Representa el actual documento que se encuentra abierto en el área de trabajo. Dimws as New NotesUIWorkspace Dimuidoc as NotesDocument 	set uidoc = ws.CurrentDocument
Validar si un documento contiene información antes de grabar Supones que hay un documento abierto que contiene los campos Nombres, Apellidos, Cedula y EstadoCivil, se desea verificar que haya datos en los campos Nombres, Apellidos y  Cedula. Esta validación la podemos hacer desde el evento QuerySave que tiene ya definidas las variables asociadas a la clase NotesUIDocument,  hemos de suponer que se envía la acción de grabar desde un objeto Action que contiene el comando @command([FileSave]). Sub  QuerySave(Source as NotesUIDocument, Continue as variant) IfSource.IsNewDocthen  ‘verifico si el documento es nuevo o sea no ha sido grabado nunca. Dim Mensaje as string ifTrim(Source.FieldGetText(“Nombres”)) = “” then    ‘FuncionTrim permite eliminar espacios en blanco 		  Mensaje = “No ha ingresado los Nombres” Endif ifTrim(Source.FieldGetText(“Apellidos”)) = “” then if Mensaje = “” then 		  Mensaje = “No ha ingresado los Apellidos” else 		    Mensaje = Mensaje + chr(13) + “No ha ingresado los Apellidos” endif Endif ifTrim(Source.FieldGetText(“Cedula”)) = “” then 		   ‘Identico la validación al campo Apellidos Endif if Mensaje <> “” then MsgBox Mensaje Continue = False     ‘ Cuando Continue es FALSE detiene el proceso de grabado similar @failure endif Endif End Sub
Cómo evitar que un documento se Edite de acuerdo al valor de un campo? Supongamos que los documento van cambiando de estado y el estado final es Cerrado, entonces se desea evitar que un documento sea editado si el estado ya esta Cerrado. QueryModeChange( Source as NotesUIDocument , Continue as Variant ) ifnot(Source.IsNewDoc) then ‘verifico que el documento no sea nuevo ifSource.FieldGetText(“Estado”) = “Cerrado” then  ‘verifico el estado del documento MsgBox “Documento no puede ser editado” Continue = false endif endif End Sub
Notificar al propietario de un documento que ha sido abierto y si es Editado creamos un documento con información al estilo log SE EJECUTA SOLO SI EL DOCUMENTO EXISTE SI NO EXISTE NO EJECUTA EL SCRIPT Sub Postopen(Source As Notesuidocument) ifnot(Source.IsNewDoc) then dimss as New NotesSession dimdb as NotesDatabase dimdoc as NotesDocument dimdocMail as NotesDocument 		set db = ss.Currentdatabase 		set doc = Source.Document ‘relaciono el documento del back-end con el doc editable 		set docMail = new NotesDocument(db) docMail.Form = “Memo” docMail.SendTo = doc.Authors(0) docMail.Subject = “Su documento ha sido abierto” docMail.Body = “El documento ha sido abierto el ” + cstr(now) + “ por el usuario” + ss.UserName calldocMail.send(false)  endif EndSub
Creamos un documento LOG que indique que un documento ha sido editado SE EJECUTA SOLO SI EL DOCUMENTO EXISTE SI NO EXISTE NO EJECUTA EL SCRIPT Sub PostModeChange(Source As Notesuidocument) ifnot(Source.IsNewDoc) then ifSource.EditModethen dimss as New NotesSession dimdb as NotesDatabase dimdoc as NotesDocument dimdocLog as NotesDocument 			set db = ss.Currentdatabase 			set doc = Source.Document ‘relaciono el documento del back-end con el doc editable 			set docLog = new NotesDocument(db) docLog.Form = “LOG” docLog.QuienEdito = ss.UserName docLog.FechaApertura = now 			calldocLog.save(false,false) endif endif EndSub

Weitere ähnliche Inhalte

Andere mochten auch

今日から始める XPages アプリケーション開発!(オープンセミナー 2016 ハンズオン XPagesDay 出張セッション)
今日から始める XPages アプリケーション開発!(オープンセミナー 2016 ハンズオン XPagesDay 出張セッション)今日から始める XPages アプリケーション開発!(オープンセミナー 2016 ハンズオン XPagesDay 出張セッション)
今日から始める XPages アプリケーション開発!(オープンセミナー 2016 ハンズオン XPagesDay 出張セッション)
Takeshi Yoshida
 
Correo Red Hat Enterprise Linux 6.2
Correo Red Hat Enterprise Linux 6.2Correo Red Hat Enterprise Linux 6.2
Correo Red Hat Enterprise Linux 6.2
cyberleon95
 
Trabajo IOS de CISCO
Trabajo IOS de CISCOTrabajo IOS de CISCO
Trabajo IOS de CISCO
cyberleon95
 
OPENLDAP Red Hat Enterprise Linux 6.2
OPENLDAP Red Hat Enterprise Linux 6.2OPENLDAP Red Hat Enterprise Linux 6.2
OPENLDAP Red Hat Enterprise Linux 6.2
cyberleon95
 
Sendero del Hacker
Sendero del HackerSendero del Hacker
Sendero del Hacker
cyberleon95
 
Herramientas Administrativas de Red
Herramientas Administrativas de RedHerramientas Administrativas de Red
Herramientas Administrativas de Red
cyberleon95
 
Gestión del Talento Humano
Gestión del Talento HumanoGestión del Talento Humano
Gestión del Talento Humano
cyberleon95
 
Servidor web server
Servidor web serverServidor web server
Servidor web server
cyberleon95
 
Usuarios , grupos y unidades organizativas de active
Usuarios , grupos y unidades organizativas de activeUsuarios , grupos y unidades organizativas de active
Usuarios , grupos y unidades organizativas de active
Saul Curitomay
 
Manual servicio dns bajo windows server 2008 r2
Manual servicio dns bajo windows server 2008 r2Manual servicio dns bajo windows server 2008 r2
Manual servicio dns bajo windows server 2008 r2
cyberleon95
 
Contratación de Tecnología para Call Center
Contratación de Tecnología para Call CenterContratación de Tecnología para Call Center
Contratación de Tecnología para Call Center
cyberleon95
 
Instalación y Configuración SSH CentOS 6.5 / RHEL 6.2
Instalación y Configuración SSH CentOS 6.5 / RHEL 6.2Instalación y Configuración SSH CentOS 6.5 / RHEL 6.2
Instalación y Configuración SSH CentOS 6.5 / RHEL 6.2
cyberleon95
 

Andere mochten auch (20)

Notes DB 85
Notes DB 85Notes DB 85
Notes DB 85
 
今日から始める XPages アプリケーション開発!(オープンセミナー 2016 ハンズオン XPagesDay 出張セッション)
今日から始める XPages アプリケーション開発!(オープンセミナー 2016 ハンズオン XPagesDay 出張セッション)今日から始める XPages アプリケーション開発!(オープンセミナー 2016 ハンズオン XPagesDay 出張セッション)
今日から始める XPages アプリケーション開発!(オープンセミナー 2016 ハンズオン XPagesDay 出張セッション)
 
ノーツアプリケーション開発 Hint & tips 101連発
ノーツアプリケーション開発 Hint & tips 101連発ノーツアプリケーション開発 Hint & tips 101連発
ノーツアプリケーション開発 Hint & tips 101連発
 
Correo Red Hat Enterprise Linux 6.2
Correo Red Hat Enterprise Linux 6.2Correo Red Hat Enterprise Linux 6.2
Correo Red Hat Enterprise Linux 6.2
 
Trabajo IOS de CISCO
Trabajo IOS de CISCOTrabajo IOS de CISCO
Trabajo IOS de CISCO
 
OPENLDAP Red Hat Enterprise Linux 6.2
OPENLDAP Red Hat Enterprise Linux 6.2OPENLDAP Red Hat Enterprise Linux 6.2
OPENLDAP Red Hat Enterprise Linux 6.2
 
Sendero del Hacker
Sendero del HackerSendero del Hacker
Sendero del Hacker
 
Practica active directory
Practica active directoryPractica active directory
Practica active directory
 
Herramientas Administrativas de Red
Herramientas Administrativas de RedHerramientas Administrativas de Red
Herramientas Administrativas de Red
 
Actividad ITIL
Actividad ITIL Actividad ITIL
Actividad ITIL
 
Manual WDS - Windows Server 2008 R2
Manual WDS - Windows Server 2008 R2Manual WDS - Windows Server 2008 R2
Manual WDS - Windows Server 2008 R2
 
Documentación ACL - Firewall ASA
Documentación ACL - Firewall ASADocumentación ACL - Firewall ASA
Documentación ACL - Firewall ASA
 
Gestión del Talento Humano
Gestión del Talento HumanoGestión del Talento Humano
Gestión del Talento Humano
 
Centos 6.5 Servidor Básico
Centos 6.5 Servidor BásicoCentos 6.5 Servidor Básico
Centos 6.5 Servidor Básico
 
Servidor web server
Servidor web serverServidor web server
Servidor web server
 
Usuarios , grupos y unidades organizativas de active
Usuarios , grupos y unidades organizativas de activeUsuarios , grupos y unidades organizativas de active
Usuarios , grupos y unidades organizativas de active
 
Manual servicio dns bajo windows server 2008 r2
Manual servicio dns bajo windows server 2008 r2Manual servicio dns bajo windows server 2008 r2
Manual servicio dns bajo windows server 2008 r2
 
Contratación de Tecnología para Call Center
Contratación de Tecnología para Call CenterContratación de Tecnología para Call Center
Contratación de Tecnología para Call Center
 
Instalación y Configuración Firewall ENDIAN
Instalación y Configuración Firewall ENDIANInstalación y Configuración Firewall ENDIAN
Instalación y Configuración Firewall ENDIAN
 
Instalación y Configuración SSH CentOS 6.5 / RHEL 6.2
Instalación y Configuración SSH CentOS 6.5 / RHEL 6.2Instalación y Configuración SSH CentOS 6.5 / RHEL 6.2
Instalación y Configuración SSH CentOS 6.5 / RHEL 6.2
 

Ähnlich wie Lotus script

Framework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetosFramework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetos
Antonio Palomares Sender
 
Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02
kevinwm17
 
Objeto relacional bases datos 2
Objeto relacional bases datos 2Objeto relacional bases datos 2
Objeto relacional bases datos 2
Velmuz Buzz
 
Realizarmanipulacion
RealizarmanipulacionRealizarmanipulacion
Realizarmanipulacion
deniizz
 
unidad 3
unidad 3unidad 3
unidad 3
deniizz
 
Barras de herramientas de microsoft office
Barras de herramientas de microsoft officeBarras de herramientas de microsoft office
Barras de herramientas de microsoft office
D_sanchez
 

Ähnlich wie Lotus script (20)

Visual basic.net
Visual basic.netVisual basic.net
Visual basic.net
 
Visual basic 1º Año
Visual basic  1º AñoVisual basic  1º Año
Visual basic 1º Año
 
Visual basic
Visual basicVisual basic
Visual basic
 
Persistencia de un modelo de objetos
Persistencia de un modelo de objetosPersistencia de un modelo de objetos
Persistencia de un modelo de objetos
 
2. ssis 2008 r2
2. ssis 2008 r22. ssis 2008 r2
2. ssis 2008 r2
 
Framework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetosFramework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetos
 
Ambiente
 Ambiente Ambiente
Ambiente
 
Ambiente de programación en pascal
Ambiente de programación en pascalAmbiente de programación en pascal
Ambiente de programación en pascal
 
Ambiente de programacin en pascal
Ambiente de programacin en pascalAmbiente de programacin en pascal
Ambiente de programacin en pascal
 
Ambiente de programación en pascal
Ambiente de programación en pascalAmbiente de programación en pascal
Ambiente de programación en pascal
 
Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02
 
Semana i plataforma
Semana i plataformaSemana i plataforma
Semana i plataforma
 
Uni3m
Uni3mUni3m
Uni3m
 
Objeto relacional bases datos 2
Objeto relacional bases datos 2Objeto relacional bases datos 2
Objeto relacional bases datos 2
 
Programacion
ProgramacionProgramacion
Programacion
 
Tarea_Investigacion programacion .pdf
Tarea_Investigacion programacion .pdfTarea_Investigacion programacion .pdf
Tarea_Investigacion programacion .pdf
 
Realizarmanipulacion
RealizarmanipulacionRealizarmanipulacion
Realizarmanipulacion
 
unidad 3
unidad 3unidad 3
unidad 3
 
Ddl
DdlDdl
Ddl
 
Barras de herramientas de microsoft office
Barras de herramientas de microsoft officeBarras de herramientas de microsoft office
Barras de herramientas de microsoft office
 

Kürzlich hochgeladen

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
241521559
 

Kürzlich hochgeladen (10)

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Lotus script

  • 1. Lotus Script Por Carlos Abril
  • 2. Qué es Lotus Script? Es un potente lenguaje que permite desarrollar aplicaciones orientado a Objetos. LotusScript y su conjunto de herramientas de desarrollo proporcionan un entorno de programación común para todas las aplicaciones de Lotus en todas las plataformas soportadas por el software Lotus (como Windows, AIX, Linux).
  • 3. Ventajas de Lotus Script Superset of BASIC . Cross-platform. Object-oriented. Included in Lotus software applications. OLE support. Interoperabilitywithotherlanguages. IntegratedDevelopmentEnvironment LotusScriptlibraries Extendable through Lotus Software Extensions (LSXs)
  • 4. Reglas de construcción Cada declaración de script esta compuesta de líneas de texto. Cada elemento de texto es una palabra clave de Lotus Script, operadores, identificadores, literales, o caracteres especiales. Puede incluir líneas en blanco sin que afecte el sentido. El texto en una línea puede iniciar del lado izquierdo. Dentro de una declaración, los elementos estarán separados por espacios en blanco o tabuladores. Espacios extras pueden ser usados para hacer una declaración más legible sin afectar su significado. Una declaración, a excepción de un bloque de sentencias, debe aparecer en una sola línea a menos que incluya el carácter de continuación de línea subrayado(_) precedidos por espacios en blanco. El carácter de continuación de línea (_) debe aparecer al final de una linea, precedido al menos de un espacio o tabulación. Una nueva línea marca el final de una declaración. Múltiples declaraciones en una línea deben ser separadas por (:).
  • 5. Reglas para construcción de cadenas Una cadena en Lotus Script puede encerrarse en uno de los siguientes delimitadores: Un par de doble comillas (“” “”) “Esta es una cadena entre comillas” Un par de barras verticales (||) |esta es una cadena entre barras verticales| Con llaves abiertas y cerradas ({}) {esta es una cadena entre llaves} Cadenas encerradas entre barras verticales pueden separa múltiples líneas. |Una cadena en dos líneas|.
  • 6. Reglas para construir identificadores Un identificador es el nombre que le da a una variable, constante, tipo, clase, función, procedimiento o propiedad. El primer carácter debe ser una letra mayúscula o minúscula. Los restantes caracteres deben ser letras, dígitos o el carácter subrayado. Un sufijo para los tipos de datos(%,&,!,#,@, o $) pueden estar al final, pero no es parte del identificador. El tamaño máximo es 40 caracteres, no incluye los sufijos. Los nombres pueden ser mayúsculas o minúsculas.
  • 7. Tipos de datos Boolean True(1) o False(0) Byte 0 a 255 Integer Long Single Double Currency String
  • 8. Tipos de datos Soporta los siguientes tipos de datos y estructuras: Array.- conjunto de elementos que tienen el mismo tipo de datos, puede tener hasta 8 dimensiones. List.- de una sola dimensión que tienen el mismo tipo de datos. Variant .- Un especial tipo de dato que puede contener valores escalares, arreglos, lista, u objetos de referencia. Variant.-puede ser también booleano o fechas. User-defined data type.- Tipo de datos definidos por el usuario. User-definedclass.- definición de clases . Objectreference.- Punteros a objetos de automatización OLE.
  • 9. Conversión de tipos de dato Lotus Script implícitamente convierte de un tipo de dato a otro en las siguientes situaciones: Operaciones numéricas .- Operaciones con diferentes tipos de datos numéricos , Lotus Script convierte los valores a un mismo tipo de dato para evaluación. Paso de argumentos .- Cuando un argumento numérico es pasado por valor (byvalue) a un procedimiento, Lotus Script trata de convertir el valor si no es el tipo de dato esperado. Si el valor es más grande, la operación genera un error. Variables Variant.- Cuando un valor es contenido en una variable Variant, Lotus Script trata de convertir el valor a numérico o cadena dependiendo del contexto.
  • 10. Conversión explícita de tipos de datos Lotus Script provee varias funciones para convertir explícitamente el valor de un tipo de dato: Cbool CByte Ccur Cdat CDbl Cint CLng CSng Cstr CVar
  • 11. Automática conversión de tipos de datos. Se puede asignar un valor de un tipo de dato numérico a una variable de un tipo de dato numérico diferente. Puede ejecutar operaciones aritméticas o comparaciones que involucran diferentes tipos de datos numéricos. Puede incrementar el valor de una variable Variant de algún tipo numérico más allá de los límites permitidos del tipo de dato. Puede añadir o concatenar los valores de dos variables variant, uno de los cuales es cadena y el otro es numérico.
  • 12. Constantes y variables Se puede manipula varios tipos de datos a través del uso de constantes y variables. Las constantes y variables tienen un alcance y tiempo de vida. El alcance se refiere al área en el cual un identificador puede ser referenciado. El límite se refiere al período durante el cual el identificador esta disponible en la aplicación. Cuando define una constante o variable, Lotus script asigna un alcance y tiempo de vida.
  • 13. Alcance de las declaraciones. LS reconoce tres tipos de alcance: Módulo .- Una variable es declarada dentro de un módulo si esta fuera de algún procedimiento, clase o definición de tipo. Procedimiento.- Una variable es declarada dentro de un procedimiento, si es declarada dentro de una función, procedimiento o propiedad. Solamente dentro del procedimiento el nombre de la variable tiene significado. El nombre de la variable es visible en cualquier parte del procedimiento. Type o Class.- Una variable esta declarada dentro de un Tipo o Clase, el alcance esta dentro de la definición del tipo o clase.
  • 14. Clases para acceder a la base de datos Domino Notes Session Notes Database Notes View Notes DocumentCollection Notes Document Notes Item
  • 15. Clase NotesSession Permite crear una sesión de trabajo. Dimss as New NotesSession
  • 16. Clase NotesDatabase Permite acceder a la base de datos. Dimss as New NoteeSession Dimdb as NotesDatabase Set db = ss.CurrentDatabase
  • 17. Clase NotesView Representa una vista o carpeta que contiene documentos. Dimss as New NotesSession Dimdb as Notesdatabase Dimview as NotesView Set db = ss.Currentdatabase Set view = db.GetView(“Nombre o Alias de una vista”)
  • 18. Clase NotesDocumentCollection Representa una collección de documentos de las base de datos. Dimss as New NotesSession Dimdb as Notesdatabase Dimdc as NotesDocumentCollection Set db = ss.currentdatabase Set dc = db.UnprocessedDocument
  • 19. Clase NotesDocument Representa un documento de la base de datos. Dimss as New NotesSession Dimdb as Notesdatabase Dimview as NotesView Dimdoc as NotesDocument Set db = ss.Currentdatabase Set view = db.GetView(“Nombre o Alias de una vista”) Set doc = view.GetFirstDocument
  • 20. Clase NotesItem Permite acceder a un campo del documento. Dimss as New NotesSession Dimdb as NotesDatabase Dimview as NotesView Dimdoc as NotesDocument DimItem as NotesItem Set db = ss.Currentdatabase Set view = db.GetView(“Nombre Vista o carpeta”) Set doc = view.GetFirstDocument Set item = doc.GetFirstItem(“NombreCampos”)
  • 21. Ejemplo de recorrer una vista. Dimss as New NotesSession Dimdb as NotesDatabase Dim View as NotesView Dimdoc as NotesDocument DimItem as NotesItem Set db = ss.CurrentDatabase ‘asocia a la variable db la actual base de datos Set view = db.GetView(“NombreVista”) ‘a la var. View asocia una de las vistas de la base de datos Set doc = view.GetFirstDocument ‘apunta al primer documento de la vista Whilenot(docisnothing) ‘determina si hay un documento asociado a la variable doc set item = doc.GetFirstItem(“Campo”) ‘obtiene en la variable Item el o los valores de un campo Forall x In Item.Values ‘es como un For para sacar los valores contenidos en la variable Item Msgbox x EndForall Set doc = view.GetNextDocument(doc) ‘permite avanzar al siguiente documento en la vista Wend
  • 22. Modificar un campo en todos los documentos contenidos en una vista SUPONGAMOS QUE EXISTE EN LOS DOCUMENTOS CONTENIDOS EN UNA VISTA UN CAMPO LLAMADO ESTADO QUE NECESITAMOS CAMBIARLO A FINALIZADO. Dimss as New NotesSession Dimdb as NotesDatabase Dim View as NotesView Dimdoc as NotesDocument DimItem as NotesItem Set db = ss.CurrentDatabase ‘asocia a la variable db la actual base de datos Set view = db.GetView(“NombreVista”) ‘a la var. View asocia una de las vistas de la base de datos Set doc = view.GetFirstDocument ‘apunta al primer documento de la vista Whilenot(docisnothing) ‘determina si hay un documento asociado a la variable doc set item = doc.ReplaceItemValue(“Estado”,”Finalizado”) ‘Estado es el nombre del campo y Finalizado es el nuevo valor calldoc.save(false,false) Set doc = view.GetNextDocument(doc) ‘permite avanzar al siguiente documento en la vista Wend
  • 23. Enviar por correo información de documentos que cambiaros de estado Vamos a cambiar el estado de los documento de la vista y vamos a notificar por correo a los creadores de los documentos que se ha realizado el cambio de estado. Dimss as New NotesSession Dimdb as NotesDatabase Dim View as NotesView Dimdoc as NotesDocument DimItem as NotesItem Set db = ss.CurrentDatabase ‘asocia a la variable db la actual base de datos Set view = db.GetView(“NombreVista”) ‘a la var. View asocia una de las vistas de la base de datos Set doc = view.GetFirstDocument ‘apunta al primer documento de la vista Whilenot(docisnothing) ‘determina si hay un documento asociado a la variable doc set item = doc.ReplaceItemValue(“Estado”,”Finalizado”) ‘Estado es el nombre del campo y Finalizado es el nuevo valor calldoc.save(false,false) dimdocMail as New NotesDocument(db) ‘decimos que vamos a crear un nuevo documento en la actual base de datos docMail.Form = “Memo” ‘ al nuevo documento le asociamos un formulario en esta caso el Memo que esta asoc. Al correo docMail.SendTo = doc.Authors(0) ‘Asocio al campo sendTo el autor del documento docMail.Subject = “Documento que cambio de estado” ‘asocio al campo Asunto(Subject) un texto docMail.Body = “Se ha modificado el documento ” & cstr(doc.Numero(0)) calldocMail.Send(false) ‘se envía el documento sin que se grabe en la base actual el mensaje TRUE hace que se grabe Set doc = view.GetNextDocument(doc) ‘permite avanzar al siguiente documento en la vista Wend
  • 24. Borrar documentos que cumplen una condición Revisamos que el documento tenga un estado de Borrador y procedemos a borrar los documentos. Dimss as New NotesSession Dimdb as NotesDatabase Dim View as NotesView Dimdoc as NotesDocument Dimdocsig as NotesDocument DimItem as NotesItem Set db = ss.CurrentDatabase ‘asocia a la variable db la actual base de datos Set view = db.GetView(“NombreVista”) ‘a la var. View asocia una de las vistas de la base de datos Set doc = view.GetFirstDocument ‘apunta al primer documento de la vista Whilenot(docisnothing) ‘determina si hay un documento asociado a la variable doc ifdoc.Estado(0) = “Borrador” then set docsig = View.GetNextDocument(doc) doc.Remove(true) set doc = docsig else set doc = view.GetNextDocument(doc) endif Wend
  • 25. Borrar documentos seleccionados en una vista Revisamos que el documento tenga un estado de Borrador y procedemos a borrar los documentos. Dimss as New NotesSession Dimdb as NotesDatabase Dimdc as NotesDocumentCollection Dimdoc as NotesDocument DimItem as NotesItem Set db = ss.CurrentDatabase ‘asocia a la variable db la actual base de datos Set dc = db.UnprocessedDocument ‘determina los documentos que están seleccionados en la vista ifdc.Count > 0 then ‘Count determina el número de documentos seleccionados en la vista for i = 1 todc.Count doc = dc.GetNthDocument(i) ‘ accesa al documento doc.Remove(true) ‘si es TRUE borra físicamente, si es False queda marcado para eliminación next Endif
  • 26. Clases para acceder al front-end . Notes UIWorkspace Notes UIDocument
  • 27. Clase NotesUIWorkspace Representa la actual área de trabajo de Lotus. Dim WS as New NotesUIWorkspace
  • 28. Clase NotesUIDocument Representa el actual documento que se encuentra abierto en el área de trabajo. Dimws as New NotesUIWorkspace Dimuidoc as NotesDocument set uidoc = ws.CurrentDocument
  • 29. Validar si un documento contiene información antes de grabar Supones que hay un documento abierto que contiene los campos Nombres, Apellidos, Cedula y EstadoCivil, se desea verificar que haya datos en los campos Nombres, Apellidos y Cedula. Esta validación la podemos hacer desde el evento QuerySave que tiene ya definidas las variables asociadas a la clase NotesUIDocument, hemos de suponer que se envía la acción de grabar desde un objeto Action que contiene el comando @command([FileSave]). Sub QuerySave(Source as NotesUIDocument, Continue as variant) IfSource.IsNewDocthen ‘verifico si el documento es nuevo o sea no ha sido grabado nunca. Dim Mensaje as string ifTrim(Source.FieldGetText(“Nombres”)) = “” then ‘FuncionTrim permite eliminar espacios en blanco Mensaje = “No ha ingresado los Nombres” Endif ifTrim(Source.FieldGetText(“Apellidos”)) = “” then if Mensaje = “” then Mensaje = “No ha ingresado los Apellidos” else Mensaje = Mensaje + chr(13) + “No ha ingresado los Apellidos” endif Endif ifTrim(Source.FieldGetText(“Cedula”)) = “” then ‘Identico la validación al campo Apellidos Endif if Mensaje <> “” then MsgBox Mensaje Continue = False ‘ Cuando Continue es FALSE detiene el proceso de grabado similar @failure endif Endif End Sub
  • 30. Cómo evitar que un documento se Edite de acuerdo al valor de un campo? Supongamos que los documento van cambiando de estado y el estado final es Cerrado, entonces se desea evitar que un documento sea editado si el estado ya esta Cerrado. QueryModeChange( Source as NotesUIDocument , Continue as Variant ) ifnot(Source.IsNewDoc) then ‘verifico que el documento no sea nuevo ifSource.FieldGetText(“Estado”) = “Cerrado” then ‘verifico el estado del documento MsgBox “Documento no puede ser editado” Continue = false endif endif End Sub
  • 31. Notificar al propietario de un documento que ha sido abierto y si es Editado creamos un documento con información al estilo log SE EJECUTA SOLO SI EL DOCUMENTO EXISTE SI NO EXISTE NO EJECUTA EL SCRIPT Sub Postopen(Source As Notesuidocument) ifnot(Source.IsNewDoc) then dimss as New NotesSession dimdb as NotesDatabase dimdoc as NotesDocument dimdocMail as NotesDocument set db = ss.Currentdatabase set doc = Source.Document ‘relaciono el documento del back-end con el doc editable set docMail = new NotesDocument(db) docMail.Form = “Memo” docMail.SendTo = doc.Authors(0) docMail.Subject = “Su documento ha sido abierto” docMail.Body = “El documento ha sido abierto el ” + cstr(now) + “ por el usuario” + ss.UserName calldocMail.send(false) endif EndSub
  • 32. Creamos un documento LOG que indique que un documento ha sido editado SE EJECUTA SOLO SI EL DOCUMENTO EXISTE SI NO EXISTE NO EJECUTA EL SCRIPT Sub PostModeChange(Source As Notesuidocument) ifnot(Source.IsNewDoc) then ifSource.EditModethen dimss as New NotesSession dimdb as NotesDatabase dimdoc as NotesDocument dimdocLog as NotesDocument set db = ss.Currentdatabase set doc = Source.Document ‘relaciono el documento del back-end con el doc editable set docLog = new NotesDocument(db) docLog.Form = “LOG” docLog.QuienEdito = ss.UserName docLog.FechaApertura = now calldocLog.save(false,false) endif endif EndSub