Date post: | 02-Apr-2015 |
Category: |
Documents |
Upload: | paco-rufino |
View: | 106 times |
Download: | 0 times |
Visual Basic Wrapper o DLL
ALVB.DLL es un componente desarrollado por Unisys que encapsula todas las propiedades y métodos del Component Enabler COM y los empaqueta en una DLL de tipo Visual Basic. De esta forma podemos utilizar de manera fácil la interfase COM en una aplicación construida con ActiveLinc.
Las ventajas de usar este paquete son:
• La interfase es y se comporta como otra interfaz Visual Basic
• El desarrollador no necesita ser experto en ActiveLinc para construir una aplicación.
Instalación de la DLL
Debes realizar dos pasos antes de usar Visual Basic Wrapper :
• Registrar el Component Enabler usando el programa JAVAREG desde el Kit de programas Microsoft Java Development.
• Registrar la DLL usando REGSVR32
Registrar el componente Enabler Component
Debes ejecutar el siguiente comando desde DOS.(debes estar ubicado en el directorio que contenga a JAVAREG.exe)
“JAVA/register/class:com\unisys\jellybeans\LINCEnvironment /prodig:LINCEnvironment.Java.1 ”
Instalación de la DLL
El segundo paso que debes efectuar es Registrar a ALVB.DLL
Para esto debes Ejecutar el siguiente comando desde DOS :
REGSVR32 <path name>\ALVB.DLL
Instalación de la DLL
Después de registrar ALVB.DLL podemos utilizar el componente desde Visual Basic, para hacer esto, solo debes hacer una referencia al componte ALVB
Imagen 1
Declaración del ActiveLINCConnection
La llamada del ActiveLINCConnection es declarada de la siguiente forma:
Public LINCApp As ActiveLINCConnection
Nota: La versión actual de Component Enabler es sincrónico, esto quiere decir que el programa es hasta recibir una respuesta desde el host. En otras palabras, la ejecución del programa es suspendida hasta recibir una respuesta, por lo que no es posible ejecutar procesos adicionales mientras se espera una respuesta.
Abriendo una Conexión
El siguiente código Visual Basic usa las propiedades del objeto ActiveLINCConnection para conectarse a una aplicación residente en el host:
Dim result As ResponseCode alOK = 100 With LINCApp ApplicationName = “SAMPLE 1" PackagePrefix = "com.unisys" BundleName = "all" IPAddress = "190.190.1.1.252" PortNo = "2449" ViewName = “SAMPLE" End With result = LINCApp.Connect If result <> alOK Then MsgBox "Falló a Conexión Error Nº " & Str$(result) Else MsgBox "Enlace con NX Exitoso", vbInformation End If
Después de abrir una conexión
Después de ejecutar el código anterior, la aplicación Visual Basic se conectará la aplicación residente en el host y referenciada por la variable viewname, Una vez que el cliente se conecta, la aplicación retornará la pantalla inicial (Ispec Fireup) para la aplicación cliente, si el sistema no tiene pantalla inicial necesitaras cargar un primer Ispec, o modificar la versión de la dll para que esta cargue el Ispec que tu quieras.
Métodos
Método Connect
El método Connect abre una conexión entre aplicación cliente y el sistema residente en el host usando las propiedades anteriormente señaladas. Estas propiedades deben ser llenadas antes de utilizar el método connect, de lo contrario la conexión fallará.
Propiedad Descripción
ApplicationPrefix Define el prefijo de la Classe Java
ApplicationName Define el nombre Classe Java
TCP/IP Addres Nº IP del Host en que reside la Aplicación
ViewName Define el nombre usado por la aplicación cliente
Métodos
Método Connect
Sintaxis : Object.Connect
Retorno : un código de respuesta indica el resultado del intento de conexión.
Dim result As ResponseCode alOK = 100 With LINCApp ApplicationName = “SAMPLE2" PackagePrefix = "com.unisys" BundleName = "all" IPAddress = "190.190.1.1.252" PortNo = "2449" ViewName = “SAMPLE2" End With result = LINCApp.Connect If result <> alOK Then MsgBox "Falló a Conexión Error Nº " & Str$(result) Else MsgBox "Enlace con NX Exitoso", vbInformation End If
Métodos
Método CreateIspec
El método CreateIspec crea una nueva instancia de un Ispec. Esto le permite al programador trabajar con Ispec distintos en una misma formulario Visual Basic.
Sintaxis: Object.CreateIspec( Ispecname )
Retorno: Un objeto tipo LINCIspec conteniendo la información del Ispec.
Ejemplo: (Crea nevas instancias para 2 objetos Ispec)Dim objCustIspec as LINCIspecDim objProdtIspec as LINCIspecSet objCustIspec = LINCAPP.CreateIspec(“CUST”)Set objProdtIspec = LINCAPP.CreateIspec(“PROD”)Set LINCAPP.CurrentIspec = objCustIspec ‘Obtiene próximo nombre del producto LINCAPP![MAINT] = “NEX”LINCAPP.Transmit msgbox LINCAPP![NAME]Set LINCAPP.CurrentIspec = objProdtIspec‘Obtiene próximo nombre del clienteLINCAPP![MAINT] = “NEX”LINCAPP.Transmit msgbox LINCAPP![NAME]
Métodos
Método GetError
Este método retorna un mensaje de error enviado desde la aplicación host.
Sintaxis : Object.GetError( ErrorNo )
Retorno : Un string conteniendo el mensaje de error
Ejemplo : (Muestra todos los Errores asociados al objeto LINCAPP en mensajes distintos)
For Icount = 1 to LINCAPP.NoErrors
MsgBox LINCAPP.GetError(ICount)
Next ICount
Métodos
Método Page2Recall
El método Page2Recall provee una manera de hacer volver un ispec usando el nombre de la página2. Es equivalente al método CreateIspec pero utilizando un Ispec Existente.
Sintaxis : Object.Pae2Recall(<nombre del ispec>)
Retorno : Un valor booleano indicado si el Ispec fue llamado. True si el Ispec fue llamado correctamente y False si el Ispec no fue llamado.
Ejemplo :
LINCAPP.Page2Recall(“MENU”)
Métodos
Método Transmit
El método Transmit se usa para enviar el Ispec actual a la aplicación en el servidor para su procesamiento.
Sintaxis : Object.Transmit
Retorno : Un código de respuesta indicando el resultado de la trasmisión.
Ejemplo :LINCAPP![CUSTNO] = 1234LINCAPP![MENU] = “INQ”LINCAPP.Transmit MsgBox LINCAPP![CUSTNAME]
Este Ejemplo setea los campos CUSTO y MENU en el Ispec Actual, Envía el Ispec Actual para que el host lo procese y la aplicación cliente espera por la respuesta del servidor. Cuando el host contesta la aplicación cliente despliega el contenido del campo CUSTNAME en un menssage box.
Propiedades
Propiedad ActiveIspecName
La propiedad ActiveIspecName retorna el nombre de el Ispec actual activo, Que es esto, El ultimo Ispec enviado desde la aplicación en el host.
Sintaxis : Object.ActiveIspecName
Retorno : El nombre de el último Ispec enviado por el servidor
Ejemplo :If LINCAPP.ActiveIspecName <> “MENU” ThenLINCAPP![NXTSCREEN] = “MENU” LINCAPP.TransmitEnd If
Este Ejemplo checkea si el nombre del Ispec actual es “MENU”. Si este no es “MENU”, se setea un campo llamado NXTSCRENN con MENU y se envía el Ispec Actual a la aplicación en el Host.
Propiedades
Propiedad ApplicactionName
Esta propiedad especifica el nombre de la aplicación y debe ser seteada antes de llamar al método de conexión.
Sintaxis : Object.ApplicationName
Retorno : Nombre de la aplicación Actual
Ejemplo :
LINCAPP.ApplicationName = “MYSYS”
Propiedades
Propiedad ApplicationPrefix
La propiedad ApplicationPrefix especifica el nombre del prefijo de la aplicación. Esta opción es utilizada en conjunto con la propiedad ApplicationName para localizar las classes Java los que describen la información de los Ispec in la aplicación host.
Sintaxis : Object.ApplicactionPrefix
Retorno : El prefijo de la aplicación actual.
Ejemplo :
LINCAPP.ApplicationPrefix = “com.unisys”
Propiedades
Propiedad BundleName
La propiedad BundleName especifica el Nombre de un subconjunto de classes Java para ser usadas cuando se acceda a la aplicación Host. Su valor por defecto es “ALL”.
Sintaxis : Object.Bundlename
Retorno : El nombre del Bundle Actual
Ejemplo :
LINCAPP.BundleName = “ALL”
Propiedades
Propiedad colLINCFields
La propiedad colLINCFields retorna una colección de objetos en el Ispec Actual. Cada Objeto en el interior de de la colección es un Objeto LINCFields describiendo un campo en el Ispec Actual.
Sintaxis : Object.colLINCFields
Retorno : Una colección de Objetos LINCFields
Propiedades
Propiedad DomainName
La propiedad DomainName especifica el nombre del dominio para usarlo cuando conectamos Enterprise Appplication System a Windows NT o 2000.
Sintaxis : Object.DomainName
Retorno : El nombre del Dominio Actual
Ejemplo :
LINCAPPP.DomainName = “.”
Propiedades
Propiedad FireUp
Esta es una propiedad opcional que setea el nombre del primer Ispec para que sea llamado inmediatamente después que se establezca la conexión con la aplicación host. Si la propiedad no esa establecida la aplicación hace un “HI” la aplicación host y espera el FireUp definido por esta.
Sintaxis : Object.FireUpIspec
Retorno : El nombre del Ispec FireUp
Ejemplo :
LINCAPP.FireUpIspec = “PROD”
Propiedades
Propiedad IspecCount
La propiedad es de solo lectura e indica la cantidad de Ispec que conforman la aplicación cliente.
Sintaxis : Object.IspecCount
Retorno : El número de de Ispec que conforman la aplicación cliente
Ejemplo :
iIspec = LINCAPP.IspecCount
Propiedades
Propiedad IspecName
Esta propiedad es de solo lectura y retorna el nombre del Ispec en la posición especificada en el conjunto de Ispec de la aplicación cliente (Bundle).
Sintaxis : Object.IspecName(<Ispec Number>)
Retorno : Un string con el nombre del ispec correspondiente a la posición especificada en la propiedad o bien un string vacío si el número del Ispec es mas grande que el numero de Ispec Especificados en el conjunto de Ispec asociados a la aplicación cliente (Bundle)
Errores
Códigos de Errores de conexión
Códigos de conexión exitosa
Código Código de Respuesta Descripción
99 HIFailed El mensaje HI fallo durante el inicio de la sesión.
100 OK La conexión solicitada se completo correctamente.
101 OKLogin La conexión solicitada fue exitosa pero l usuario y la password son requeridas para completar la conexión.
102 OKSecureLogin
103 OKMoreInfoLogin Es necesaria más información para completar el inicio de sesión.
Errores
Códigos de Errores de conexión
Códigos de conexión exitosa
Código
Código de Respuesta Descripción
201 NoSuchSystem Nombre del sistema no encontrado
202 CannotStartSystem El sistema especificado no puede comenzar
203 SystemNotResponding La aplicación host no responde
204 AccessDenied El acceso al host a sido denegado
205 AccessDeniedClosing El acceso al host a sido denegado por que hha sido cerrada la conexión
301 CannootChangeLanguage Intento de cambio a un lenguaje indefinido
302 ProtocolError Error en el protocolo
303 ServerError Error en el Servidor
Errores
Códigos de Errores en las Transacciones
Códigos de respuesta para las transacciones
Código Código de Respuesta Descripción
100 OK El Ispec fue procesado sin errores
801 TransactionHadError Errores detectados en la última transacción
802 OKBye Desconexión exitosa del host
911 TransactionFailed La transacción falló en el host
912 TransactionVetoed La transacción fue vetada por el host
Errores
Códigos de Error en el Protocolo
Códigos de respuesta para errores en el protocolo:
Código Código de Respuesta Descripción
901 Exception Error
902 FatalException Error Fatal
903 ClientPotocolError Error en el protocolo
904 CannotConnect No se pudo conectar al sistema en el host
905 TransportError Error de transporte
906 TimedOut Respuesta no recibida entre un intervalo de tiempo
Propiedades
Propiedad PortNo
Esta propiedad especifica el numero del puerto TCP/IP de la aplicación host. El puerto por defecto es el 2449.
Sintaxis : Object.PortNo
Retorno : El numero del puerto TCP/IP actual
Ejemplo :
LINCAPP.PortNo = 2449
Propiedades
Propiedad StatusLIne
La propiedad StatusLine retorna el valor actual de la situación de la aplicación host.
Sintaxis : Object.StatusLine
Retorno : La situación actual de la aplicación host
Ejemplo :
sbSttatusBar.SimpliText = LINCAPP.StatusLine
El ejemplo anterior setea el texto de la barrar de status de una aplicación Visual Basic con la información extraída de la aplicación host.
Propiedades
Propiedad TCPIPAddress
La propiedad TCPIPAddress especifica la dirección TCP/IP del host y aplicación o sistema que esta corriendo en este. Esta propiedad debe ser seteada antes de hacer la llamada al método Connect.
Sintaxis : Object.IPAddress
Retorna : El numero IP del host actual
Ejemplo :
LINCAPP.IPAdress =“102.39.46.230”
Propiedades
Propiedad Usercode
La propiedad Usercode define el código de usuario para usar cuando la aplicación cliente se conecte a la aplicación host.
Sintaxis : Object.Usercode
Retorno : El usercode actual
Ejemplo :
LINCAPP.Usercode = “LINCUSER”
Propiedades
Propiedad ViewName
La propiedad ViewName especifica el nombre de la View usada para conectarse a la aplicación host. El nombre de la View define el actual sistema host en uso. Esta también puede definir detalles como el idioma del código usado, el usuario y la password.
Sintaxis : Object.ViewName
Retorno : El nombre actual de la View
Ejemplo :
LINCAPP.ViewName = “MYSYS”
Propiedades
Propiedad LINCFields
La propiedad LINCFields describe un objeto en un Ispec. Un Ispec contiene una colección de objetos LINCFileds. Donde cada objeto LINCFileds describe las propiedades de un campo en el Ispec. El índice para cada objeto LINCField en un Ispec es su dataname. Esto les permite a los atributos de un LINCFields que sean accedidos usando técnicas de procesamiento de colecciones estándar de Visual Basic.
Por ejemplo el siguiente ejemplo recorre todos los campos en un Ispec usando un loop, desplegando el nombre y el contenido del campo en un message box.
Dim LINCField as LINCFieldFor Each LINCField in LINCAPP.colLINCFields
Msgbox LINCField.name & “=” & LINCField.valueNext LINCFieldTambién podemos accesar al valor de un campo de las siguientes formastxtCustName.text = LINCAPP.colLINCFields(“CUSTNAME”) .valuetxtCustName.text = LINCAPP![CUSTNAME]
Propiedades
Propiedad CopyFrom Fields
El componente Enabler le asigna a cada campo en un “Copy.From area” un unico nombre. Por ejemplo, determinando al campo llamado CUSTNO en un “Copy.From area”, la copy de CUSTO en la segunda linea de el Copy.From area va a ser determinado con el nombre CUSTNO_AT_01, y la copia en la tercera linea será CUSTNO_AT_02. De esta manera el campo dentro de un Copy.From area debiera ser accesado directamente por el nombre del campo usando una sintaxis similar a la sintaxis descrita anteriormente y a la que se indica a continuación:
txtCustNo.text = LINCAPP![CUSTNO_AT_01]txtCustNo.text = LINCAPP![CUSTNO_AT_02] ...
Alternativamente podemos obtener el valor de la variable de la siguiente forma.
txtCustNo.text = LINCAPP.colLINCFields(“CUSTNO”,1).value
Esta segunda forma nos permite acceder a los valores de los campos fácilmente a través de un loop.
Propiedades de la Propiedad LINCField
Propiedad FieldLength
La propiedad FielLength retorna el largo del campo LINCField seleccionado.
Sintaxis : Objectname.FieldLength
Retorna : El largo del campo LINCField seleccionado
Ejemplo :
msgbox “CUSTNAME es de” &
LINCAPP.colLINCFields(“CUSTNAME”).FieldLength & _
“ caracteres de largo”
Propiedades de la Propiedad LINCFieldPropiedad FieldType
La propiedad FieldType retiorna el tipo de campo LINCFields seleccionado.
Sintaxis : Objectname.FieldType
Retorna : El tipo de campo LINCFields
Ejemplo :
If LINCAPP.colLINCFields(“CUSTNAME“).Fields =“A” ThenMsgbox “Custname es un campo alfabético”
End If
Propiedades de la Propiedad LINCFieldPropiedad Name
La propiedad Name retorna el nombre del campo LINCField.
Sintaxis : ObjectName.Name
Retorna : El nombre del campo LINCField
Ejemplo :
Msgbox “El nombre del primer campo es :” & _
LINCAPP.colLINCFields(1).Name
Propiedades de la Propiedad LINCFieldPropiedad Value
La propiedad Value retorna el valor del campo LINCField.
Sintaxis : ObjectName.Value
Retorna : El valor del campo LINCFields
Ejemplo :
Msgbox “El valor del el campo CUSTNO es ” & _LINCAPP.colLINCFields(“CUSTNO”).value
También puede ser escrito de la siguiente forma: Msgbox “El valor del el campo CUSTNO es ” & LINCAPP![CUSTNO]
Propiedades de la Propiedad LINCFieldPropiedad DecimalPlaces
La propiedad DecimalPlaces retorna el número de posiciones decimales del campo LINCFields seleccionado.
Sintaxis : Objectname.DecimalPlaces
Retorno : El número de posiciones decimales del campo LINCFields
Ejemplo :
If LINCAPPFilelds(“BALANCE”).Fileype = “N” Then magbox “El campo BALANCE cuenta con ” & _ LILNCAPP.colLINCFields(“BALANCE”).DecimalPlaces End If
Ejemplo Visual Basic Consulta de Exhortos
Después de generar la aplicación cliente del sistema de juzgado se hizo una prueba utilizando ALVB.DLL
Ejemplo Visual Basic
Consulta de Exhortos
El código fuente que se utilizó para la conexión fue el siguiente:
Private Sub Co_Conectar_Click() Dim result As ResponseCode LINCApp.ApplicationName = "LCJUZB" LINCApp.PackagePrefix = "com.unisys" LINCApp.BundleName = "all" LINCApp.IPAddress = "190.190.1.252" LINCApp.PortNo = "2449" LINCApp.ViewName = "LCJUZB" result = LINCApp.Connect If result <> alOK Then MsgBox "Falló a Conexión Error Nº " & Str$(result) Else MsgBox "Enlace con NX Exitoso", vbInformation End IfEnd Sub
Ejemplo Visual Basic
Consulta de Exhortos
Luego para parametrizar los datos del primer Ispec Se utilizó el siguiente codigo:
Private Sub Command1_Click() Dim Ini00Ispec As LINCIspec Set Ini00Ispec = LINCApp.CreateIspec("INI00") Set LINCApp.CurrentIspec = Ini00Ispec Gl_Trans = LINCApp.Name LINCApp![sistema] = "J" LINCApp![codjuz] = "3" LINCApp![codusu] = " 1-9" LINCApp![pasusu] = "JU3" LINCApp.Transmit If Erc% <> 0 Then Exit SubEnd Sub
Ejemplo Visual Basic
Consulta de Exhortos
Después que que fue seteada la página de inicio se accedió directamente a la página de Exhortos y se espero hasta que el usuario ingresar el año y el rut, para de esta forma poder ir a buscar los datos solicitados. Para esto se utilizó el siguiente código Visual Basic.
Private Sub transmite() Dim Ini00Ispec As LINCIspec Set Ini00Ispec = LINCApp.CreateIspec("MEXHO") Set LINCApp.CurrentIspec = Ini00Ispec Gl_Trans = LINCApp.Name LINCApp![mant] = "INQ" LINCApp![tippro] = "S" LINCApp![ano] = Form1.Text_ANO.Text LINCApp![numrol] = Form1.text_ROL.Text LINCApp.Transmit verifica-error If Erc% <> 0 Then Call llenaFormConsulta Exit Sub End IfEnd Sub
Ejemplo Visual Basic
Consulta de Exhortos
Luego de recibir la respuesta desde el host con la información solicitada teníamos que desplegarla por pantalla y para eso utilizamos la siguiente función en Visual Basic:Private Sub llenaFormConsulta()Dim strform As Form1 Form1.Text_FECHAINGRESO.Text = LINCApp.colLINCFields("FECING").Value Form1.Text_NOMBRE.Text = LINCApp.colLINCFields("NOMBRE").Value Form1.Text_RUT.Text = LINCApp.colLINCFields("RUT").Value Form1.Text_SENTECIA.Text = LINCApp.colLINCFields("SENTEN").Value Form1.Text_FECHASENTENCIA.Text = LINCApp.colLINCFields("FECRES").Value Form1.Text_MULTA.Text = LINCApp.colLINCFields("MULTA").Value Form1.Text_SUSPENCION.Text = LINCApp.colLINCFields("DIASUS").Value Form1.Text_VALEVISTA.Text = LINCApp.colLINCFields("VALEVI").Value Form1.Text_FECENVVAL.Text = LINCApp.colLINCFields("FENVALE").Value Form1.Text_BANCO.Text = LINCApp.colLINCFields("BANCO").Value Form1.Text_SUCURSAL.Text = LINCApp.colLINCFields("SUCUR").Value Form1.Text_NJUZGADO.Text = LINCApp.colLINCFields("NUMJUZ").Value Form1.Text_ANTECEDENTES.Text = LINCApp.colLINCFields("ANTECE").Value Form1.Text_OBSERVACIONES.Text = LINCApp.colLINCFields("OBSERV").Value Form1.Text_DIRECCION.Text = LINCApp.colLINCFields("CALLE").Value & _ LINCApp.colLINCFields("NUMERO").Value & LINCApp.colLINCFields("ACLARA").Value Form1.Text_COMUNA.Text = LINCApp.colLINCFields("COMUNA").ValueEnd Sub