Constantes

De GrialWIKI

(Diferencias entre revisiones)
(Imagenes Existentes en el GrialImages)
(Parametros de Sesion)
 
(6 ediciones intermedias no se muestran.)
Línea 1: Línea 1:
'''Referencia Grial  
'''Referencia Grial  
-
=Sintaxis Extendida del Servidor de Datos=
 
-
==Sintaxis extendida para ejecución de Stored Procedures en el entorno Grial==
+
=Imagenes Existentes en el GrialImages=
-
El GrialDataServer provee una sintaxis extendida para ejecutar Stored Procedures en un servidor de datos, que incluye la posibilidad de recuperar parámetros de output o Input/Output.
+
==Lista de Keys para las ImageList==
 +
*ToolbarNormal,ToolbarHot y ToolbarDisabled
 +
**Alta,Baja,Modificacion,Consulta,Reporte,Informe,Aceptar,Cancelar
-
La sintaxis es la siguiente
+
Son los íconos que se observan en los botones del GrialApl
-
  Txn.Cmd "Execute: ''procedure_name'';param;param..."
+
*TreeImages
 +
**Leaf, Baja, Root, Branch, CRPc, CRPa, IMP, INST0, INST1, INST2, DIRECTA
-
Donde :
+
[[Image:Iconos_GrialTree.JPG]]
-
''procedure_name:'' Es el nombre del Stored Procedure en el servidor de datos.
+
Notas:
 +
*"CRPc" es como Leaf pero en rojo
 +
*"CRPa" en como Branch (un folder) con un "+" indicando continuación
-
y cada "param" es un parámetro de dicho SP con la sigiente sintaxis:
 
-
"IOType:Name[=Value][:DataType][:Size]"
+
*GridImages
 +
**ABM, Expandir SE, Input Verde Grande, Input Verde, Flecha SE, Refresh, Invocar, Marca Verde, Marca Rojo Amarillo, Marca Rojo Blanco, Input Verde Doble
-
Donde:
+
[[Image:Iconos_GrialGrid.JPG]]
-
*IOType = puede ser: ''IO'' u ''O'', donde IO=Input-output y O=Output
+
-
*Name = nombre a asignar al campo del Rst con los resultados
+
-
*Value = valor inicial para el parametro (solo para IOtype=IO)
+
-
*DataType = puede ser: Number , Varchar, String o Date. (“String” es equivalente a “Varchar”)
+
-
Para parámetros de input, sólo es necesario colocar el valor del Parámetro.
+
==Código de la Función GetImage==
-
Si el valor que se especifica es alfanumérico debe encerrarse entre comillas dobles o simples, "" o '', con lo que se asume que el parámetro es de tipo "Varchar2"
+
<code>
 +
Public Function GetImage(ByVal RequestCode As String, Optional ByVal SubCode As String) As Object
 +
Select Case RequestCode
 +
   
 +
        Case "Toolbar"
 +
            Select Case SubCode
 +
                Case "Normal"
 +
                        Set GetImage = ToolbarNormal ' ImageList
 +
                Case "Hot"
 +
                        Set GetImage = ToolbarHot ' ImageList
 +
                Case "Disabled"
 +
                        Set GetImage = ToolbarDisabled ' ImageList
 +
            End Select
 +
           
 +
        Case "BackgroundImage"
 +
            Set GetImage = BackgroundImage ' Picture
 +
                       
 +
        Case "TreeImages"
 +
            Set GetImage = TreeImages ' ImageList
-
Si se omite "datatype", se determina el tipo del parámetro ("Number" o "Varchar") según el resultado de la función IsNumeric(Value). Esto último debe tenerse muy en cuenta si no se sabe bien que tipo de valores se pasarán en un parámetro alfanumérico. Es aconsejable especificar siempre "DataType" como "Varchar", o encerrrar el valor entre comillas, cuando se tiene un parámetro alfanumérico definido en el Stored Procedure.
+
        Case "GridImages"
 +
            Set GetImage = GridImages ' ImageList
 +
       
 +
        Case "Report"
 +
            Select Case SubCode
 +
                Case "Header"
 +
                        Set GetImage = ReportHeader ' Picture, Escudo
 +
                Case "AntiCopia"
 +
                        Set GetImage = AntiCopia ' Picture, Escudo en gris, watermark
 +
            End Select
-
Por ejemplo:
+
End Select
 +
End Function
 +
</code>
-
Tenemos en el servidor de datos un Stored Procedure :
+
===Ejemplo de uso:===
 +
Para asignar una imagen a un boton... al final del userdocumen_show
-
Procedure Prueba_Ejemplo ( Param1 in Varchar2
+
    On Error Resume Next ' Ignoro Errores
-
                            ,Param2 in  Number
+
    VerCompromisoCmd.Picture = GrialCont.GetImage("GridImages").ListImages("ABM").Picture
-
                            ,Param3 in out Varchar2
+
-
                            ,Param4 in out Number
+
-
                            ,Param5 out Varchar2
+
-
                            ,ParamFecha IN Date )
+
-
is
+
-
Begin
+
-
  Param3:= substr(Param1,1,2);
+
-
  Param4:= Param2 + 10;
+
-
  Param5:= to_char(ParamFecha,'mmm');
+
-
End;
+
-
y lo llamamos desde el módulo:
 
-
<code>
+
=Constantes Predefinidas=
-
Dim Grq as New GrialQuery
+
-
Grq.Init "Execute:Prueba_Ejemplo; 'UNO'; 2; IO:Param3=1024:Varchar; " & _
+
-
          "IO:Param4=2003; O:Param5; " & DateParam(Now)
+
-
Grialcont.LoadData Grq
+
-
</code>
+
-
En esta llamada:
+
==Niveles de acceso==
-
*el primer parametro es de tipo varchar, con valor "UNO"
+
El entorno de desarrollo Grial permite definir nueve niveles de acceso distintos para cada usuario y establecer un correlato entre estos niveles y los componentes visuales de las aplicaciones. Los niveles de acceso puede consultarse desde el GrialCont de la aplicación con:
-
*el segundo parametro es de tipo number con valor 2
+
-
*el tercer parametro es de entrada/salida (IO), su nombre es "Param3", valor de entrada "1024" y su tipo "Varchar2"
+
-
*el cuarto parametro es de entrada/salida (IO), su nombre es "Param4", valor de entrada 2003 y su tipo "Number" (por ser el valor asignado un numero)
+
-
*el quinto parametro es de salida (O), su nombre es "Param5"
+
-
*el sexto parametro es de tipo "Date" y su valor inicial es la fecha y hora actuales
+
-
Nota: La función "DateParam(Fecha)" (componente del GrialUtilP), formatea el parámetro de tipo fecha según el standard esperado por el Grial Data Server (formato: "yyyy-mm-dd HH.nn.ss").
+
Val(GrialCont.Parameter(MENU_ALTA_ROT))
-
Luego de la ejecución del comando, se devuelve como resultado un recordset con tantos campos como parámetros de tipo OUTPUT/IO se hallan especificado. Los nombres de los campos son los indicados mediante el codigo "name" en la especificación de parámetros.
+
Que retorna -1 si el usuario tiene habilitado el acceso y 0 en caso contrario
 +
 +
* MENU_ALTA_ROT : Asociado al botón de comando BUTTON_NEW  del GrialApl.
 +
* MENU_BAJA_ROT : Asociado al botón de comando BUTTON_DELETE
 +
* MENU_MODIFICACION_ROT : Asociado al botón de comando BUTTON_MODIFICATION
 +
* MENU_CONSULTA_ROT : Asociado al botón de comando BUTTON_CONSULT
 +
* MENU_REPORTE_ROT : Asociado al botón de comando BUTTON_REPORT
 +
* MENU_INFORME_ROT : Asociado al botón de comando BUTTON_INFORM
 +
* MENU_FRM1_ROT : Acceso especial configurable para cada módulo.
 +
* MENU_FRM2_ROT : Acceso especial configurable para cada módulo.
 +
* MENU_FRM3_ROT : Acceso especial configurable para cada módulo.
-
Luego de la ejecución (LoadData), Grq.Rst tendrá un solo registro con los siguientes campos:
 
-
? Grq.Rst!Param3.Value
+
==Botones de comando y clase Grialbuttons==
-
  UN
+
-
+
-
? Grq.Rst!Param4.Value
+
-
  12
+
-
+
-
? Grq.Rst!Param5.Value
+
-
  mar
+
-
Donde cada valor será aquel que el SP haya establecido durante su ejecución para cada parámetro de OUTPUT/IO.
+
El GrialApl tiene incorporados ocho botones de comando. Seis en la barra de herramientas superior y dos en la inferior. Las constantes definidas para cada botón son:
-
===Utilizando nuevos IDs de la misma transacción===
+
En la barra superior  
-
Es posible utilizar dentro de una transacción, un valor de nuevo ID calculado por la base de datos correspondiente a un alta realizada en un ítem previo de la misma transacción.
+
-
Esto se realiza colocando la macro: '''[Last_ID] '''en cualquier lugar del comando, esta macro será reemplazada por el ultimo valor de ID dado de alta en el ítem de la transacción especificado.
+
-
Por default la referencia es al ítem de la transacción inmediatamente superior, pero puede modificarse la referencia utilizando las propiedades '''''Name= ''''' y '''''Header='' ''' del parámetro secundario del método Cmd.
+
-
Por Ejemplo:
+
* BUTTON_NEW 
 +
* BUTTON_DELETE
 +
* BUTTON_MODIFICATION
 +
* BUTTON_CONSULT
 +
* BUTTON_REPORT
 +
* BUTTON_INFORM
-
  Case BUTTON_NEW
+
Cuando el usuario presiona alguno de estos botones, el GrialApl genera un evento ButtonClick, y si se ejecuta correctamente visualiza el área de trabajo (ContainerFrm_show).
-
+
-
        PreEjec10_grq.PrepareAddNew
+
-
        CargarRegistroNuevoPreventivo
+
-
        Txn.Cmd PreEjec10_grq.Rst, "Name=Header_preventivo:ID_PREEJEC10"
+
-
        Txn.Cmd PreEjec11_grq.Rst, "ID_PREEJEC11;RELA_PREEJEC10"
+
-
                   
+
-
        Txn.Cmd "Execute: PREEJEC10_IMPUTAR;'''[Last_ID]'''", "Header=Header_preventivo"
+
 +
En la barra inferior :
-
En este ejemplo, el procedimiento PREEJEC10_IMPUTAR tiene un solo parámetro de entrada, el cual será el ID del registro dado de alta en el ítem 0 (Name=Header_Preventivo) de la transacción.
+
* BUTTON_ACCEPT
 +
* BUTTON_CANCEL
-
El reemplazo de la macro '''[Last_ID]''''' funciona en cualquier comando de texto ''que se envíe en una transacción, sean comandos SQL directos (Select,update,ect) o llamadas a procedimientos de la base.
+
Cuando el usuario presiona alguno de estos botones, el GrialApl genera un evento BottomButtonClick y si se ejecuta correctamente invisibiliza el área de trabajo (ContainerFrm_Hide)
 +
 
 +
==Marcos Contenedores==
 +
Los marcos contenedores son objetos frame de visual basic. El GrialApl reserva para funciones específicas los frames que se denominan con los siguientes nombres :
 +
 
 +
* Container_Frm : Es el frame contenedor de todos los objetos visuales asociados a una transacción. Este frame permanece invisible mientras el usuario no presione ninguno de los [botones de comando-] de la barra superior. Asimismo una vez visualizado vuelve a quedar invisible cuando el usuario confirma o cancela la transacción con los botones de la barra inferior. Este Frame debe existir obligatoriamente en todo VisualDocument que utilice el Grialapl, de no ser así se producirá un error.
 +
 
 +
 
 +
* Menu1_frm : En este frame quedan contenidos todos los controles asociados al nivel de acceso Frame_1.Todos los controles contenidos en este Frame quedarán deshabilitados si el usuario no tiene asignado el nivel de acceso configurable MENU_FRM1_ROT
 +
 
 +
* Menu2_frm : En este frame quedan contenidos todos los controles asociados al nivel de acceso Frame_2.Todos los controles contenidos en este Frame quedarán deshabilitados si el usuario no tiene asignado el nivel de acceso configurable MENU_FRM2_ROT
 +
 
 +
* Menu3_frm : En este frame quedan contenidos todos los controles asociados al nivel de acceso Frame_3.Todos los controles contenidos en este Frame quedarán deshabilitados si el usuario no tiene asignado el nivel de acceso configurable MENU_FRM3_ROT
 +
 
 +
 
 +
==Estados del GrialApl==
 +
 
 +
    Los diferentes estados en que puede encontrarse un GrialApl son :
 +
 
 +
* '''INITIAL_STATUS :''' Es el estado inicial del Grialapl. En este estado, el [marco contenedor-] container_frm y [los botones de comando-] de la barra inferior se encuentran invisibles. Para salir de este estado el usuario debe presionar alguno de los botones de comando de la barra superior. Cuando se sale de este estado se disparan los eventos [ButtonClick-] y [ContainerFrmShow-] en ese orden.  
 +
 +
* '''CONTROLS_ENABLED  :''' Es el estado por default al que se arriba luego que se ha presionado alguno de los botones de comando de la barra superior. En este estado el marco contenedor Container_Frm y los botones de comando de la barra inferior se encuentran visibles y los botones de la barra superior deshabilitados. Para salir de este estado y volver al estado inicial, el usuario debe presionar alguno de los dos botones de la barra inferior (CANCELAR o ACEPTAR).Cuando se sale de este estado se disparan los eventos  [BottomButtonClick-]  y [ContainerFrmHide-] en ese orden.
 +
 +
 +
* '''VIEW_MODE :  '''Es un estado alternativo al  anterior. Para arribar a este estado basta cambiar el valor del parámetro NewState del evento [ButtonClick-] que se ha disparado cuando el usuario presionó un botón de comando de la barra superior. En este estado los botones de comando de la barra superior y el marco contenedor container_frm se encuentran visibles pero deshabilitados y los botones de la barra inferior habilitados. Para salir de este estado el usuario debe presionar alguno de los dos botones de la barra inferior (CANCELAR o ACEPTAR) .Cuando se sale de este estado se disparan los eventos  [BottomButtonClick-]  y [ContainerFrmHide-] en ese orden.
=Archivos Comunes=
=Archivos Comunes=
 +
 +
Los archivos comunes son rutinas que se incluyen en todos los módulos y unifican el manejo de errores y facilitan la depuración del código.
 +
;CommonFunctions.BAS
 +
:Contiene el manejo de errores
 +
 +
;Debug_SQL_bas.BAS
 +
:Contiene rutinas de apoyo para, por ejemplo, mostrar el contenido de un recordset
==CommonFunctions.BAS==
==CommonFunctions.BAS==
Línea 300: Línea 339:
</code>
</code>
-
=Imagenes Existentes en el GrialImages=
+
[[Category:Manual de Programación]]
-
 
+
-
==Lista de Keys para las ImageList==
+
-
*ToolbarNormal,ToolbarHot y ToolbarDisabled
+
-
**Alta,Baja,Modificacion,Consulta,Reporte,Informe,Aceptar,Cancelar
+
-
 
+
-
Son los íconos que se observan en los botones del GrialApl
+
-
 
+
-
*TreeImages
+
-
**Leaf, Baja, Root, Branch, CRPc, CRPa, IMP, INST0, INST1, INST2, DIRECTA
+
-
 
+
-
[[Image:Iconos_GrialTree.JPG]]
+
-
 
+
-
Notas:
+
-
*"CRPc" es como Leaf pero en rojo
+
-
*"CRPa" en como Branch (un folder) con un "+" indicando continuación
+
-
 
+
-
 
+
-
*GridImages
+
-
**ABM, Expandir SE, Input Verde Grande, Input Verde, Flecha SE, Refresh, Invocar, Marca Verde, Marca Rojo Amarillo, Marca Rojo Blanco, Input Verde Doble
+
-
 
+
-
[[Image:Iconos_GrialGrid.JPG]]
+
-
 
+
-
==Código de la Función GetImage==
+
-
<code>
+
-
Public Function GetImage(ByVal RequestCode As String, Optional ByVal SubCode As String) As Object
+
-
Select Case RequestCode
+
-
   
+
-
        Case "Toolbar"
+
-
            Select Case SubCode
+
-
                Case "Normal"
+
-
                        Set GetImage = ToolbarNormal ' ImageList
+
-
                Case "Hot"
+
-
                        Set GetImage = ToolbarHot ' ImageList
+
-
                Case "Disabled"
+
-
                        Set GetImage = ToolbarDisabled ' ImageList
+
-
            End Select
+
-
           
+
-
        Case "BackgroundImage"
+
-
            Set GetImage = BackgroundImage ' Picture
+
-
                       
+
-
        Case "TreeImages"
+
-
            Set GetImage = TreeImages ' ImageList
+
-
 
+
-
        Case "GridImages"
+
-
            Set GetImage = GridImages ' ImageList
+
-
       
+
-
        Case "Report"
+
-
            Select Case SubCode
+
-
                Case "Header"
+
-
                        Set GetImage = ReportHeader ' Picture
+
-
            End Select
+
-
 
+
-
End Select
+
-
End Function
+
-
</code>
+
-
 
+
-
===Ejemplo de uso:===
+
-
Para asignar una imagen a un boton... al final del userdocumen_show
+
-
 
+
-
    On Error Resume Next ' Ignoro Errores
+
-
    VerCompromisoCmd.Picture = GrialCont.GetImage("GridImages").ListImages("ABM").Picture
+
-
 
+
-
=Parametros de Sesion=
+
-
Los siguentes datos se pueden acceder a través del parametro IDENTIDAD_ACTIVA del GrialApl
+
-
Nota: Se recomienda acceder a estos datos utilizando las propiedades del control GrialFunctionFrame siempre que sea posible.
+
-
 
+
-
Por Ejemplo, para obtener el nombre del usuario:
+
-
GrialCont.Parameter(“IDENTIDAD_ACTIVA”).Retorna(“USUA_NOMBRE”)
+
-
 
+
-
 
+
-
==DATOS en (GrialCont.ParamRecibidos – GrialCont.Parameter)==
+
-
Para vero todos los parámetros, hacer, en la ventana de Debug:
+
-
 
+
-
? grialcont.ParamRecibidos.Contenido
+
-
 
+
-
<code>
+
-
SERVER_LOCATION ---> |http://200.41.229.187| (del tipo 8)
+
-
SERVEROBJ_CLASS ---> |GrialData.Server| (del tipo 8)
+
-
USUARIO ---> |LTATO| (del tipo 8)
+
-
CONEXION ---> |LTATO:PROD;WMMNFpnwqtFmvwn| (del tipo 8)
+
-
DB_INSTANCE ---> |PROD| (del tipo 8)
+
-
RELA_SOCUSUA15 ---> |1| (del tipo 8)
+
-
ID_SOCUSUA01 ---> |1| (del tipo 8)
+
-
SOCUSUA01_NOMBRE ---> |LTATO| (del tipo 8)
+
-
SOCUSUA15_ENTIDAD ---> |TATO, LUCIO| (del tipo 8)
+
-
SOCUSUA15_NRODOC ---> |20-21796978-7| (del tipo 8)
+
-
SOCUSUA01_FBAJA ---> || (del tipo 8)
+
-
SOCUSUA01_TIPO ---> |2| (del tipo 8)
+
-
SOCUSUA01_TIENEUSERDB ---> |1| (del tipo 8)
+
-
RELA_PREFORM02_BASE ---> |105| (del tipo 8)
+
-
ENTIDAD ---> |Tato, Lucio| (del tipo 8)
+
-
SU02_1 ---> |objeto| (del tipo 9)
+
-
SU02_2 ---> |objeto| (del tipo 9)
+
-
SU02_3 ---> |objeto| (del tipo 9)
+
-
SU02_4 ---> |objeto| (del tipo 9)
+
-
SU02_5 ---> |objeto| (del tipo 9)
+
-
SU02_6 ---> |objeto| (del tipo 9)
+
-
SU02_7 ---> |objeto| (del tipo 9)
+
-
SU02_ACTIVA ---> |1| (del tipo 2)
+
-
DISKSESSION_CONNINDEX ---> |1| (del tipo 3)
+
-
INSTALACIONES_ROOT ---> |http://200.41.229.187| (del tipo 8)
+
-
CONNECTION_INDEX ---> |0| (del tipo 8)
+
-
ID_SYSFUNC03 ---> |3784| (del tipo 3)
+
-
ID_FUNC ---> |3784| (del tipo 3)
+
-
FUNC_URL ---> |/instalaciones| (del tipo 8)
+
-
FUNC_DESCRI ---> |Proceso Respuesta Banco Lotes Transferencias| (del tipo 8)
+
-
FUNC_DESCRI_ROT ---> |Proceso Respuesta Banco Lotes Transferencias| (del tipo 8)
+
-
FUNC_CODDUPL ---> || (del tipo 8)
+
-
SOCUSUA21 ---> |153| (del tipo 3)
+
-
SYSFUNC03 ---> |3784| (del tipo 3)
+
-
PUEDEEJECUTAR ---> |0| (del tipo 3)
+
-
MENU_ALTA ---> |-1| (del tipo 3)
+
-
MENU_BAJA ---> |-1| (del tipo 3)
+
-
MENU_MODI ---> |-1| (del tipo 3)
+
-
MENU_CONSULTA ---> |-1| (del tipo 3)
+
-
MENU_REPORTE ---> |-1| (del tipo 3)
+
-
MENU_INFORME ---> |-1| (del tipo 3)
+
-
MENU_FRM1 ---> -1 si el usuario esta habilitado, 0 en otro caso
+
-
MENU_FRM2 ---> -1 si el usuario esta habilitado, 0 en otro caso
+
-
MENU_FRM3 ---> -1 si el usuario esta habilitado, 0 en otro caso
+
-
MENU_ACEPTAR ---> |-1|  si el usuario tiene el boton aceptar
+
-
</code>
+
-
 
+
-
Para Acceder a cualquiera de estos parámetros utilizar '''GrialCont.Parameter'''.
+
-
Ejemplo:
+
-
    > ? GrialCont.Parameter(“SOCUSUA01_NOMBRE”)
+
-
    > LTATO
+
-
 
+
-
Para Acceder a los datos del Puesto activo (Soc_Usua_02) usar “SU02_ACTIVA”:
+
-
 
+
-
Ejemplo:
+
-
 
+
-
    Dim IndiceSu02Activa as Integer
+
-
    IndiceSu02Activa = Val(GrialCont.Parameter("SU02_ACTIVA"))
+
-
    Dim SU02Activa As Object
+
-
    Set SU02Activa = GrialCont.ParamRecibidos("SU02_" & IndiceSu02Activa)
+
-
    Debug.Print "Su U.Organica es " & SU02Aciva!PREFORM11_DESCRI
+
-
 
+
-
Para ver todo el contenido del subgrupo de parámetros, realice en la ventana de Debug:
+
-
 
+
-
<code>
+
-
? SU02Activa.Contenido
+
-
 
+
-
ID_SOCUSUA02 ---> |3666| (del tipo 8)
+
-
RELA_SOCUSUA01 ---> |261| (del tipo 8)
+
-
RELA_SOCUSUA21 ---> |161| (del tipo 8)
+
-
RELA_PREFORM02 ---> |1825| (del tipo 8)
+
-
RELA_PREFORM11 ---> |2301| (del tipo 8)
+
-
RELA_PREFORM12 ---> |1681| (del tipo 8)
+
-
SOCUSUA02_FBAJA ---> || (del tipo 8)
+
-
PREFORM02_CODIGO ---> |1| (del tipo 8)
+
-
PREFORM02_DESCRI ---> |Administración Central| (del tipo 8)
+
-
PREFORM11_CODIGO ---> |GN.02| (del tipo 8)
+
-
PREFORM11_DESCRI ---> |Organo Rector Presupuesto| (del tipo 8)
+
-
PREFORM12_CODIGO ---> |AB| (del tipo 8)
+
-
PREFORM12_DESCRI ---> |Administrador de la Base| (del tipo 8)
+
-
RELA_PREFORM01 ---> |688| (del tipo 8)
+
-
ID_PREFORM03 ---> |1931| (del tipo 8)
+
-
PERI_DESCRI ---> |Período 2006| (del tipo 8)
+
-
PERI_ANO ---> |2006| (del tipo 8)
+
-
SYSFORM02_COD ---> |FOR| (del tipo 8)
+
-
PREFORM02_CODRECTOR ---> |1| (del tipo 8)
+
-
EJE_RELA_PREFORM01 ---> |686| (del tipo 8)
+
-
EJE_ID_PREFORM03 ---> |1853| (del tipo 8)
+
-
EJE_PERI_DESCRI ---> |Período 2005| (del tipo 8)
+
-
EJE_PERI_ANO ---> |2005| (del tipo 8)
+
-
EJE_SYSFORM02_COD ---> |EJE| (del tipo 8)
+
-
</code>   
+
-
 
+
-
=Constantes Predefinidas=
+
-
 
+
-
==Niveles de acceso==
+
-
El entorno de desarrollo Grial permite definir nueve niveles de acceso distintos para cada usuario y establecer un correlato entre estos niveles y los componentes visuales de las aplicaciones. Los niveles de acceso puede consultarse desde el GrialCont de la aplicación con:
+
-
 
+
-
Val(GrialCont.Parameter(MENU_ALTA_ROT))
+
-
 
+
-
Que retorna -1 si el usuario tiene habilitado el acceso y 0 en caso contrario
+
-
+
-
* MENU_ALTA_ROT : Asociado al botón de comando BUTTON_NEW  del GrialApl.
+
-
* MENU_BAJA_ROT : Asociado al botón de comando BUTTON_DELETE
+
-
* MENU_MODIFICACION_ROT : Asociado al botón de comando BUTTON_MODIFICATION
+
-
* MENU_CONSULTA_ROT : Asociado al botón de comando BUTTON_CONSULT
+
-
* MENU_REPORTE_ROT : Asociado al botón de comando BUTTON_REPORT
+
-
* MENU_INFORME_ROT : Asociado al botón de comando BUTTON_INFORM
+
-
* MENU_FRM1_ROT : Acceso especial configurable para cada módulo.
+
-
* MENU_FRM2_ROT : Acceso especial configurable para cada módulo.
+
-
* MENU_FRM3_ROT : Acceso especial configurable para cada módulo.
+
-
 
+
-
 
+
-
==Botones de comando y clase Grialbuttons==
+
-
 
+
-
El GrialApl tiene incorporados ocho botones de comando. Seis en la barra de herramientas superior y dos en la inferior. Puede hacerse referencia a estos botones a través de un objeto de  la clase GrialButtons.Las constantes definidas para cada botón son :
+
-
 
+
-
En la barra superior
+
-
 
+
-
* BUTTON_NEW 
+
-
* BUTTON_DELETE
+
-
* BUTTON_MODIFICATION
+
-
* BUTTON_CONSULT
+
-
* BUTTON_REPORT
+
-
* BUTTON_INFORM
+
-
 
+
-
Cuando el usuario presiona alguno de estos botones , el GrialApl visualiza la transacción y genera un evento ButtonClick
+
-
 
+
-
En la barra inferior :
+
-
 
+
-
* BUTTON_ACCEPT
+
-
* BUTTON_CANCEL
+
-
 
+
-
Cuando el usuario presiona alguno de estos botones , el GrialApl invisibiliza la transacción y genera un evento BottomButtonClick
+
-
 
+
-
==Marcos Contenedores==
+
-
Los marcos contenedores son objetos frame de visual basic. El GrialApl reserva para funciones específicas los frames que se denominan con los siguientes nombres :
+
-
 
+
-
* Container_Frm : Es el frame contenedor de todos los objetos visuales asociados a una transacción. Este frame permanece invisible mientras el usuario no presione ninguno de los [botones de comando-] de la barra superior. Asimismo una vez visualizado vuelve a quedar invisible cuando el usuario confirma o cancela la transacción con los botones de la barra inferior. Este Frame debe existir obligatoriamente en todo VisualDocument que utilice el Grialapl, de no ser así se producirá un error.
+
-
 
+
-
 
+
-
* Menu1_frm : En este frame quedan contenidos todos los controles asociados al nivel de acceso Frame_1.Todos los controles contenidos en este Frame quedarán deshabilitados si el usuario no tiene asignado el nivel de acceso configurable MENU_FRM1_ROT
+
-
 
+
-
* Menu2_frm : En este frame quedan contenidos todos los controles asociados al nivel de acceso Frame_2.Todos los controles contenidos en este Frame quedarán deshabilitados si el usuario no tiene asignado el nivel de acceso configurable MENU_FRM2_ROT
+
-
 
+
-
* Menu3_frm : En este frame quedan contenidos todos los controles asociados al nivel de acceso Frame_3.Todos los controles contenidos en este Frame quedarán deshabilitados si el usuario no tiene asignado el nivel de acceso configurable MENU_FRM3_ROT
+
-
 
+
-
 
+
-
==Estados del GrialApl==
+
-
 
+
-
    Los diferentes estados en que puede encontrarse un GrialApl son :
+
-
 
+
-
* '''INITIAL_STATUS :''' Es el estado inicial del Grialapl. En este estado, el [marco contenedor-] container_frm y [los botones de comando-] de la barra inferior se encuentran invisibles. Para salir de este estado el usuario debe presionar alguno de los botones de comando de la barra superior. Cuando se sale de este estado se disparan los eventos [ButtonClick-] y [ContainerFrmShow-] en ese orden.
+
-
 
+
-
 
+
-
* '''CONTROLS_ENABLED  :''' Es el estado por default al que se arriba luego que se ha presionado alguno de los botones de comando de la barra superior. En este estado el marco contenedor Container_Frm y los botones de comando de la barra inferior se encuentran visibles y los botones de la barra superior deshabilitados. Para salir de este estado y volver al estado inicial, el usuario debe presionar alguno de los dos botones de la barra inferior (CANCELAR o ACEPTAR).Cuando se sale de este estado se disparan los eventos  [BottomButtonClick-]  y [ContainerFrmHide-] en ese orden.
+
-
 
+
-
 
+
-
* '''VIEW_MODE :  '''Es un estado alternativo al  anterior. Para arribar a este estado basta cambiar el valor del parámetro NewState del evento [ButtonClick-] que se ha disparado cuando el usuario presionó un botón de comando de la barra superior. En este estado los botones de comando de la barra superior y el marco contenedor container_frm se encuentran visibles pero deshabilitados y los botones de la barra inferior habilitados. Para salir de este estado el usuario debe presionar alguno de los dos botones de la barra inferior (CANCELAR o ACEPTAR) .Cuando se sale de este estado se disparan los eventos  [BottomButtonClick-]  y [ContainerFrmHide-] en ese orden.
+

última version al 16:57 27 mar 2013

Referencia Grial


Contenido

Imagenes Existentes en el GrialImages

Lista de Keys para las ImageList

  • ToolbarNormal,ToolbarHot y ToolbarDisabled
    • Alta,Baja,Modificacion,Consulta,Reporte,Informe,Aceptar,Cancelar

Son los íconos que se observan en los botones del GrialApl

  • TreeImages
    • Leaf, Baja, Root, Branch, CRPc, CRPa, IMP, INST0, INST1, INST2, DIRECTA

Image:Iconos_GrialTree.JPG

Notas:

  • "CRPc" es como Leaf pero en rojo
  • "CRPa" en como Branch (un folder) con un "+" indicando continuación


  • GridImages
    • ABM, Expandir SE, Input Verde Grande, Input Verde, Flecha SE, Refresh, Invocar, Marca Verde, Marca Rojo Amarillo, Marca Rojo Blanco, Input Verde Doble

Image:Iconos_GrialGrid.JPG

Código de la Función GetImage

Public Function GetImage(ByVal RequestCode As String, Optional ByVal SubCode As String) As Object
Select Case RequestCode
 
        Case "Toolbar"
            Select Case SubCode
                Case "Normal"
                        Set GetImage = ToolbarNormal ' ImageList
                Case "Hot"
                        Set GetImage = ToolbarHot ' ImageList
                Case "Disabled"
                        Set GetImage = ToolbarDisabled ' ImageList
            End Select
 
        Case "BackgroundImage"
            Set GetImage = BackgroundImage ' Picture
 
        Case "TreeImages"
            Set GetImage = TreeImages ' ImageList
 
        Case "GridImages"
            Set GetImage = GridImages ' ImageList
 
        Case "Report"
            Select Case SubCode
                Case "Header"
                        Set GetImage = ReportHeader ' Picture, Escudo
                Case "AntiCopia"
                        Set GetImage = AntiCopia ' Picture, Escudo en gris, watermark
            End Select
 
End Select
End Function

Ejemplo de uso:

Para asignar una imagen a un boton... al final del userdocumen_show

   On Error Resume Next ' Ignoro Errores
   VerCompromisoCmd.Picture = GrialCont.GetImage("GridImages").ListImages("ABM").Picture


Constantes Predefinidas

Niveles de acceso

El entorno de desarrollo Grial permite definir nueve niveles de acceso distintos para cada usuario y establecer un correlato entre estos niveles y los componentes visuales de las aplicaciones. Los niveles de acceso puede consultarse desde el GrialCont de la aplicación con:

Val(GrialCont.Parameter(MENU_ALTA_ROT))

Que retorna -1 si el usuario tiene habilitado el acceso y 0 en caso contrario

  • MENU_ALTA_ROT : Asociado al botón de comando BUTTON_NEW del GrialApl.
  • MENU_BAJA_ROT : Asociado al botón de comando BUTTON_DELETE
  • MENU_MODIFICACION_ROT : Asociado al botón de comando BUTTON_MODIFICATION
  • MENU_CONSULTA_ROT : Asociado al botón de comando BUTTON_CONSULT
  • MENU_REPORTE_ROT : Asociado al botón de comando BUTTON_REPORT
  • MENU_INFORME_ROT : Asociado al botón de comando BUTTON_INFORM
  • MENU_FRM1_ROT : Acceso especial configurable para cada módulo.
  • MENU_FRM2_ROT : Acceso especial configurable para cada módulo.
  • MENU_FRM3_ROT : Acceso especial configurable para cada módulo.


Botones de comando y clase Grialbuttons

El GrialApl tiene incorporados ocho botones de comando. Seis en la barra de herramientas superior y dos en la inferior. Las constantes definidas para cada botón son:

En la barra superior

  • BUTTON_NEW
  • BUTTON_DELETE
  • BUTTON_MODIFICATION
  • BUTTON_CONSULT
  • BUTTON_REPORT
  • BUTTON_INFORM

Cuando el usuario presiona alguno de estos botones, el GrialApl genera un evento ButtonClick, y si se ejecuta correctamente visualiza el área de trabajo (ContainerFrm_show).

En la barra inferior :

  • BUTTON_ACCEPT
  • BUTTON_CANCEL

Cuando el usuario presiona alguno de estos botones, el GrialApl genera un evento BottomButtonClick y si se ejecuta correctamente invisibiliza el área de trabajo (ContainerFrm_Hide)

Marcos Contenedores

Los marcos contenedores son objetos frame de visual basic. El GrialApl reserva para funciones específicas los frames que se denominan con los siguientes nombres :

  • Container_Frm : Es el frame contenedor de todos los objetos visuales asociados a una transacción. Este frame permanece invisible mientras el usuario no presione ninguno de los [botones de comando-] de la barra superior. Asimismo una vez visualizado vuelve a quedar invisible cuando el usuario confirma o cancela la transacción con los botones de la barra inferior. Este Frame debe existir obligatoriamente en todo VisualDocument que utilice el Grialapl, de no ser así se producirá un error.


  • Menu1_frm : En este frame quedan contenidos todos los controles asociados al nivel de acceso Frame_1.Todos los controles contenidos en este Frame quedarán deshabilitados si el usuario no tiene asignado el nivel de acceso configurable MENU_FRM1_ROT
  • Menu2_frm : En este frame quedan contenidos todos los controles asociados al nivel de acceso Frame_2.Todos los controles contenidos en este Frame quedarán deshabilitados si el usuario no tiene asignado el nivel de acceso configurable MENU_FRM2_ROT
  • Menu3_frm : En este frame quedan contenidos todos los controles asociados al nivel de acceso Frame_3.Todos los controles contenidos en este Frame quedarán deshabilitados si el usuario no tiene asignado el nivel de acceso configurable MENU_FRM3_ROT


Estados del GrialApl

   Los diferentes estados en que puede encontrarse un GrialApl son :
  • INITIAL_STATUS : Es el estado inicial del Grialapl. En este estado, el [marco contenedor-] container_frm y [los botones de comando-] de la barra inferior se encuentran invisibles. Para salir de este estado el usuario debe presionar alguno de los botones de comando de la barra superior. Cuando se sale de este estado se disparan los eventos [ButtonClick-] y [ContainerFrmShow-] en ese orden.


  • CONTROLS_ENABLED  : Es el estado por default al que se arriba luego que se ha presionado alguno de los botones de comando de la barra superior. En este estado el marco contenedor Container_Frm y los botones de comando de la barra inferior se encuentran visibles y los botones de la barra superior deshabilitados. Para salir de este estado y volver al estado inicial, el usuario debe presionar alguno de los dos botones de la barra inferior (CANCELAR o ACEPTAR).Cuando se sale de este estado se disparan los eventos [BottomButtonClick-] y [ContainerFrmHide-] en ese orden.


  • VIEW_MODE : Es un estado alternativo al anterior. Para arribar a este estado basta cambiar el valor del parámetro NewState del evento [ButtonClick-] que se ha disparado cuando el usuario presionó un botón de comando de la barra superior. En este estado los botones de comando de la barra superior y el marco contenedor container_frm se encuentran visibles pero deshabilitados y los botones de la barra inferior habilitados. Para salir de este estado el usuario debe presionar alguno de los dos botones de la barra inferior (CANCELAR o ACEPTAR) .Cuando se sale de este estado se disparan los eventos [BottomButtonClick-] y [ContainerFrmHide-] en ese orden.

Archivos Comunes

Los archivos comunes son rutinas que se incluyen en todos los módulos y unifican el manejo de errores y facilitan la depuración del código.

CommonFunctions.BAS
Contiene el manejo de errores
Debug_SQL_bas.BAS
Contiene rutinas de apoyo para, por ejemplo, mostrar el contenido de un recordset

CommonFunctions.BAS

Public Function VBErrorText() As String
    Dim Source As String
    Source = Err.Source
    If Source Like App.EXEName & "*" Then
        Source = ""
    Else
        Source = Source & ": "
    End If
    VBErrorText = "Ha ocurrido un error." & vbCrLf & vbCrLf & _
                     Source & Err.Description
End Function
 
Sub MsgError(GrialCont As Object)
    Dim s As String, AppVersion As String
    s = VBErrorText()
    On Error Resume Next
        AppVersion = " v" & App.Major & "." & App.Minor & "." & App.Revision
        MsgBox s, vbCritical, App.Title & AppVersion
        GrialCont.AddErrLog App.EXEName & AppVersion & ": " & s
    Err.Clear
End Sub

Debug_SQL_bas.BAS

Option Explicit
Option Compare Text
 
Sub ascii(a As String)
Dim n As Integer
For n = 1 To Len(a)
    Debug.Print Asc(Mid(a, n, 1)); ",";
    If n Mod 10 = 0 Then Debug.Print
Next
Debug.Print
End Sub
 
Sub cutprint(ByVal s As String)
Do While Len(s)
    If Len(s) > 40 Then
        Dim cutp As Integer
        cutp = InStr(30, s, ",")
        If cutp = 0 Then cutp = InStr(30, s, ";")
        If cutp = 0 Then cutp = Max(InStr(20, s, " "), 80)
        Debug.Print Left$(s, cutp - 1)
        'Add Left$(s, cutp - 1)
        s = Mid$(s, cutp)
    Else
        Debug.Print s
'        Add s
        Exit Do
    End If
 
Loop
 
End Sub
 
Sub sql(ComandoSQL)
sqlprint ComandoSQL
'Clipboard.SetText MsgText
End Sub
 
Sub sqlprint(ByVal s As String)
Dim cutp As Integer
'Msg ""
Do
    cutp = InStr(10, s, "FROM")
    If cutp = 0 Then cutp = InStr(10, s, "WHERE")
    If cutp = 0 Then cutp = InStr(10, s, "and")
    If cutp = 0 Then cutp = InStr(10, s, "GROUP")
    If cutp = 0 Then cutp = InStr(10, s, "ORDER")
    If cutp = 0 Then cutp = Len(s) + 1
    cutprint Left$(s, cutp - 1)
    s = Mid$(s, cutp)
Loop While Len(s)
 
End Sub
 
Sub ShowRec(r As Recordset)
On Error Resume Next
Dim F As Field
For Each F In r.Fields
    Debug.Print F.Name; ": ", , F.Value;
    If Err Then Debug.Print "("; Err.Description; ")";
    Debug.Print
Next
Err.Clear
End Sub
 
Sub Show(r)
On Error Resume Next
 
Dim SaveFilter, SaveBmk
SaveFilter = r.Filter
If Err Then
    Debug.Print Err.Description
    Exit Sub
End If
 
If Not (r.EOF Or r.BOF Or (r.Status And adRecDeleted) <> 0) Then
    SaveBmk = r.Bookmark
End If
 
'R.Filter = adFilterPendingRecords
If r.RecordCount = 0 Then
    Debug.Print " RecordCount = 0"
    GoTo Salida
End If
 
Dim F As Field
r.MoveFirst
Do While Not r.EOF
    Debug.Print "REC:"; r.AbsolutePosition; " "; ' " ["; R.Status; "]:";
     For Each F In r.Fields
        Debug.Print F.Name; ":"; 'F.OriginalValue;
        Debug.Print "|"; F.Value; "| ";
        If Err Then
            Debug.Print "("; Left$(Err.Description, 15); "...) ";
            Err.Clear
        End If
    Next
    Debug.Print
    r.MoveNext
Loop
 
Salida:
r.Filter = SaveFilter
if not IsEmpty(SaveBmk) then r.Bookmark = SaveBmk
Err.Clear
End Sub
 
Sub Pend(r)
 
On Error Resume Next
 
Dim SaveFilter, SaveBmk
SaveFilter = r.Filter
If Err Then
    Debug.Print Err.Description
    Exit Sub
End If
 
If Not (r.EOF Or r.BOF Or (r.Status And adRecDeleted) <> 0) Then
    SaveBmk = r.Bookmark
End If
r.Filter = ""
r.Filter = adFilterPendingRecords
If r.RecordCount = 0 Then
    Debug.Print Err.Description
    Debug.Print " adFilterPendingRecords, RecordCount = 0"
    GoTo Salida
End If
 
 
Dim F As Field
r.MoveFirst
Do While Not r.EOF
    Debug.Print "REC:"; r.AbsolutePosition; "["; r.Status; ":";
    If r.Status And adRecDeleted Then Debug.Print "Del ";
    If r.Status And adRecModified Then Debug.Print "Mod ";
    If r.Status And adRecNew Then Debug.Print "New ";
    Debug.Print "] ";
     For Each F In r.Fields
        Debug.Print LCase$(F.Name); ":|"; F.OriginalValue;
        If r.Status And adRecDeleted Then
            Debug.Print "| ";
        Else
            Debug.Print "|"; F.Value; "| ";
            If Err Then
                Debug.Print "("; Left$(Err.Description, 5); "...) ";
                Err.Clear
            End If
        End If
    Next
    Debug.Print
    Err.Clear
    r.MoveNext
    If Err Then
            Debug.Print "Movenext: ("; Err.Description & ")"
            Exit Do
    End If
Loop
Err.Clear
 
Salida:
r.Filter = SaveFilter
If Not IsEmpty(SaveBmk) Then r.Bookmark = SaveBmk
Err.Clear
 
End Sub
Herramientas personales