FoxPro/Visual FoxPro - origenes de datos

   
Vista:

origenes de datos

Publicado por manu (2 intervenciones) el 25/11/2014 13:42:25
hola, estoy intentando editar un modulo para una aplicación contable, que muestre gráficos estadísticos tomando datos de bases de datos dbf. la aplicación principal consiste en un menú desde el cual se crean usuarios para cada modulo (gestión, etc.), cuando damos de alta un usuario el sistema te crea automáticamente una carpeta con el nombre del usuario y las bases de datos (DBF) que va a usar, mis inconvenientes son los siguientes:


*el modulo que estoy editando tiene que poder detectar que usuario se esta ejecutando y en base al usuario que se esta ejecutando poder buscar la ubicación de la base de datos de ese usuario


ya tengo editado la parte de los gráficos, solo necesito una idea de como localizar la ubicación de las bases de datos del usuario en ejecución, desde ya muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

origenes de datos

Publicado por Fidel José (558 intervenciones) el 25/11/2014 15:46:41
No se si es lo que buscas, pero va el comentario.

Yo utilizo una tabla de registro de usuarios activos. Cada vez que un usuario abre el sistema crea o modifica su registro de usuario en la tabla (pone una marca de activo, datetime() de apertura y limpia el datetime() de cierre). Ahí podría poner la carpeta en la que tiene los archivos propios, temporales, etc.
Para saber qué usuarios están activos, haces un SCAN FOR ACTIVO de la tabla de registro.

Como puede ocurrir que el sistema se haya cerrado incorrectamente, también se puede poner una tabla testigo:
Cuando el usuario abre el sistema crea una tabla que se cerrará cuando cierre el sistema.

lcDirServer="\\192.168.1.250\MiSistema\RegUser" && regUser se utiliza solamente para estos archivos
lcTabla=GETWORDNUM(SYS(0),1,"#")
lcCreate=Addbs(lcDirServer)+lcTabla
Create table &lcCreate free ("FEAPER" T)
INSERT INTO (lcTabla) (feaper) VALUES (datetime())

Luego podría saber quienes están verdaderamente activos, por ejemplo
lnFiles=Adir(gaFiles,addbs(lcDirServer)+"*.dbf")
For i=1 to lnFiles
TRY
lcFile=addbs(lcDirSErver)+gaFiles[i]
lcAlias=JustStem(lcFile)
use (lcFile) EXCLUSIVE
CATCH TO loError
Messagebox("Usuario "+lcAlias+" Activo.")
FINALLY
* quedará abierto si el usuario no está activo
IF USED(lcAlias)
select (lcAlias)
USE
ENDIF
ENDTRY
NEXT
Con este test se puede también actualizar el registro de usuarios, quitando la marca de activo de aquellos que no lo estén (si su tabla de registro se pudo abrir es poque no está activo).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

origenes de datos

Publicado por manu (2 intervenciones) el 25/11/2014 16:17:43
tengo una tabla de usuarios con los campos "nombre de usuario" "modulo que utiliza" "nombre de la carpeta donde estan sus archivos" "fecha de ultimo acceso" lo unico que necesito es encontrar la forma de detectar si la carpeta del sistema esta en la particion C: o en cual
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

origenes de datos

Publicado por Juan (100 intervenciones) el 25/11/2014 23:45:45
Y la carpeta la crea el propio módulo? Si es así puedes hacer un SET TO DEFAULT lo que sea y hacer que en un directorio concreto se creen todas las carpetas de usuario y después enlazar según el usuario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar