Constantes

De GrialWIKI

(Diferencias entre revisiones)
(Botones de comando y clase Grialbuttons)
(Archivos Comunes)
Línea 240: Línea 240:
=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==

Revisión de 20:24 31 ago 2009

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

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

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:

? 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)

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