Visual Foxpro 10 : clase sqldata / psqllog - psqllogusuario - logtabla

Fecha Publicación:       26 de Diciembre de 2023
Fecha Modificación:       14 de Enero de 2024

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

Nota : Si no se especifica una tabla se grabara en el txt 

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

Nota : para que el log se grabe en una tabla de la base de datos debe especificarse:
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:

Recuerda : la tabla puede tener cualquier nombre no es necesario que se llame  "logtabla

 

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

 

Articulo : 631 - Veces Leidas
Compartir Articulo: