Visual Foxpro 10 : clase sqldata / psqllog - psqllogusuario - logtabla
Documentacion Oficial :
C:\Program Files\LEVELVFP ARGENTINA\manuales sqldata y sqldata2> log.rtf
Se habla en el CURSO 1 SQLDATA Y SQLDATA CURSO DE INCIO en el tiempo 00:23:02
Funcion psqllogusuario
La funcion psqllogusuario, que lo pueden colocar dentro de su programa para determinar que usuario esta ingresando al sistema.
y psqlogdatos, que devuelve todos los movimientos hecho por todos los usuarios en la pc local por dia, esto lo pueden ejecutar en la pc local y grabarla en el servidor si lo desean
osqldata.psqllogusuario(_screen,"1","german")
//establece el usuario que se registrara en el log
Ver el registro log
Se genera en archivo log por dia con la fecha en %appdata%\log , se graba en el log , lo siguiente:
hora de la transaccion,tabla,tipo de operacion,usuario,codigo unico de registro, fecha y hora anterior de operacion sobre el registro, nombre computadora anterior donde se modifico el registro, instruccion generada, instruccion que deshace la operacion
→ Presionamos las teclas [ Windows ] + [ R ] para abrir el formulario Ejecutar -> escribimos el comando %localAppData%
→ Buscamos la carpeta sqldata2
Instruccion para que log se grabe en una tabla de la base de datos
osqldata.psqllog(_screen,"1","automatico","logtabla")
Donde:
logtabla = Nombre de la tabla donde se registrara los cambios que hace el usuario al sistema
Donde Declararlo
Codigo que se puede Inicializar en un prg por ejemplo inicio.prg
SET SYSMENU TO
SET PATH TO clases
SET CLASSLIB TO "sqldata2"
LOCAL osqldata2 as sqldata2 OF sqldata2.sqldata2
osqldata2=CREATEOBJECT("sqldata2.sqldata2")
osqldata2.psqlresetear(_screen)
osqldata2.pversioncomp(_screen,VERSION(4))
osqldata2.psqlcargar(_screen,"1",CREATEOBJECT("custom"))
osqldata2.psqlcadena(_screen,"1","fox","C:\descargas\sqldata2odbc\empresa migrar\datos","","","spanish","read uncommitted","empresa","","")
osqldata2.psqlestructura(_screen,"1","automatico","c:\descargas\sqldata2odbc\empresa migrar\estructura")
osqldata2.psqllog(_screen,"1","automatico","logtabla")
osqldata2.psqllogproyecto(_screen,"1","empresa")
osqldata2.psqlcache(_screen,"1","automatico","maestros")
DO FORM ingreso
READ EVENTS
Modo de uso
codigo que se puede agregar en el Formulario Ingreso boton ingresar:
LOCAL osqldata2 as sqldata2 OF sqldata2.sqldata2
osqldata2=CREATEOBJECT("sqldata2.sqldata2")
SELECT usuarios
osqldata2.psqllogusuario(_screen,"1",nombre)
_screen.AddProperty("vusuario",nombre)
_screen.AddProperty("vrolespermitidos",rolespermitidos)
_screen.AddProperty("vrolesnopermitidos",rolesnopermitidos)
DO inicio.mpr
thisform.release()
Donde:
nombre = Es el campo de la tabla usuarios , el contenido se grabara en la tabla logtabla en el campo logusuario
En este ejemplo la tabla usuarios el campo Nombre contiene el registro Germam Valdez que se grabara en la tabla logtabla en el campo logusuario
Tabla Usuarios
Contenido de la tabla logtabla
Extructura para la tabla logtabla
La tabla "logtabla" debe tener la siguiente estructura:
Nombre Campo | Tipo campo | Descripcion |
id | integer (autonumerico) | autonumerico identity |
logtabla | char (30) | tabla |
logid | numeric(15,0) | id del registro cuando es autoincremental y es modificado o borrado, no insertado |
logtipo | char(1) | Tipo de operacion update (u) , delete (d) , insert (i) |
logfecha | datetime | Fecha de ejecucion del comando |
logproyecto | char(30) | Proyecto o modulo |
logpc | char(30) | nombre de pc y usuario de windows |
logtran | char(36) | Codigo unico de transaccion. un mismo valor para todos los comandos |
logusuario | char(30) | Usuario configurado en sus programas de logueo |
logui | char(36) | Valor unico de identificacion de registro. si buscan en el log por este valor veran todos los movimientos |
logfechap | datetime | Fecha anterior en la que se hizo el cambio del registro |
logpcp | char (30) | Computadora y usuario de windows usada la vez anterior que se modifico el registro |
loginstruccion | memo | Instruccion completa enviada al servidor con campos y datos |
loginstruccionr | memo | Instruccion completa que revierte la operacion realizada con campos y datos |
Deben completarse todas las columnas de la tablalog de movimientos.
Ahora el ancho de logtabla, logusuario, logproyecto, Logpc=logpcp, son de de ancho sugerido, pueden ampliar al ancho que desean tanto en la tabla “clientes” como en la “tablalog” y no necesariamente logpc de “clientes” deba user igual logpc de “logtabla”
Funcion psqlogdatos
psqlogdatos, que devuelve todos los movimientos hecho por todos los usuarios en la pc local por dia,
esto lo pueden ejecutar en la pc local y grabarla en el servidor si lo desean, es un log.
MESSAGEBOX(osqldata.psqllogdatos(_screen,"1",date()))
//devuelve el log de la fecha indicada
MESSAGEBOX(osqldata.psqllogultimo(_screen,"1"))
//devuelve el ultimo log despues de psqlfinal
MESSAGEBOX(osqldata.psqlgrabarT(_screen,"1",thisform,"clientes"))
//devuelve la cantidad de registros que se modificaron, antes de grabar.
osqldata.psqllogproyecto(_screen,"1","german")
//establece el nombre del programa que se esta usando por defecto es "unico"
Preguntas psqllogusuario
Pregunta : Colegas, una pregunta relacionada con el log de transacciones con SqlData2 ¿Qué aspectos tengo que tomar en cuenta para guardar en la tabla log el Id y no el Nombre del usuario? Gracias de antemano.
Respuestas : La misma funcion psqlusuario en lugar del nombre pones el numero con transform