Page 1 of 1

Leer una base sin permiso

Posted: Thu May 21, 2009 3:50 pm
by acuellar
Hola a todos

Tengo un programa que se ejecuta al iniciar sesion. El programa resisde el la carpeta NETLOGON, en el perfil del usuario se coloca el nombre del programa y lo ejecuta.

Existe una carpeta compartida donde se encuentra la base a leer y solo tiene permiso un usuario. La idea es darle permiso mediante el NET USE, la lee y luego desactiva.

Funciona, pero solo si hago un print Ej: ?BASE, no se con que reemplazarlo para que no se detenga

Aqui va el fuente

Code: Select all

REQUEST DBFCDX

Function Main()
    
   RddSetDefault( "DBFCDX" )
   SET RESOURCES TO "CUMPLE.DLL"
 
   Store 0 To BdrCtos,vBdr,vBdr1
 
   Lin=50;  Col=150
   
   WinExec("Net use \\FOSERVER\RRHH clave /user:acuellar",0)
   
   ViaRRHH:="\\FOSERVER\RRHH\DATA\"
   
   vFecAyer:=Left(dtoc(date()-1),5)
   
   Base:=ViaRRHH+"DATPER" 
   ?Base  // [b]SI NO COLOCO ESTA LINEA NO FUNCIONA[/b]

   Use (Base) Inde (Base) Alias EMPL NEW SHARED
   SET ORDER TO TAG DATPER2
   Set Filt to Left(dtoC(FechaNac),5)=Left(dtoC(date()),5)
   dbGoTop()
   
   Define window oWnd from 0,1 to 0,1 STYLE WS_POPUP
   Activate Window oWnd On Init Nota()
   
   WinExec("Net use \\FOSERVER\RRHH /delete",0)
  
  EMPL->( dBCloseArea() )
  
  
Retu nil
*
Func Nota()
   nVen:=1
   Do while !Eof()
    mcual=Str(nVen,1)
    Public ownd&mcual
    Define Window ownd&mcual from Lin/16,Col/8 to Lin/16+8,Col/8+30 Color CLR_GREEN,CLR_YELLOW STYLE nOr(WS_POPUP,WS_BORDER) of oWnd
    ownd&mcual:cargo:=mcual
    Activate Window oWnd&mcual on init Botones(ownd&mcual,1)
    DbSkip()
    nVen++
    Lin=Lin+70
    Col=Col+70
    BdrCtos=BdrCtos+1
  Endd
   
Retu nil
*
Func Botones(Vent1,vNr)
   @ 0,0 BITMAP resource "Esquina" NOBORDER OF Vent1 PIXEL SIZE 80,21 
   @ 1.7,Vent1:nWidth()-20 BITMAP resource "Quitar" NOBORDER OF Vent1 PIXEL SIZE 15,14 ON LEFT CLICK Cierra(Vent1)
   mTexto(Vent1,vNr)
Retu nil
*
Func Cierra(Vent2)
    mcual:=Vent2:cargo
     If BdrCtos=1
       oWnd:End()
       Set Resources to
       Close data
    Else
       ownd&mcual:End()
       BdrCtos=BdrCtos-1
    Endi
Retu nil

Func mTexto(Vent3,vNr)
    cNOM:=OemToAnsi(Alltrim(NOMBRE))+" "+OemToAnsi(Alltrim(APELLIDOS))
     @ 1.7,.4 SAY oSay PROMPT "Hoy es cumpleaños de:" OF Vent3 SIZE 173,14 COLOR CLR_HRED
     @ 3.2,.5 SAY  oSay PROMPT cNOM OF Vent3 SIZE 173,13 COLOR CLR_HBLUE
Retu nil

El programa muestra el cumpleañero del día en un Postit.
Quizas alquien tenga otra idea.

Gracias de antemano por sus aportes

Saludos

Adhemar

Re: Leer una base sin permiso

Posted: Thu May 21, 2009 4:07 pm
by jrestojeda
Hola amigo...
Prueba declarar la variable base como privada.

Code: Select all

Private Base

...
...
...

Base:=ViaRRHH+"DATPER" 

Use (&Base) Inde (&Base) Alias EMPL NEW SHARED
SET ORDER TO TAG DATPER2
Set Filt to Left(dtoC(FechaNac),5)=Left(dtoC(date()),5)
dbGoTop()
 
Espero te sirva.
Saludos,

Re: Leer una base sin permiso

Posted: Thu May 21, 2009 4:21 pm
by acuellar
Gracias Distinguido, lo probe y no funciona.

Funciona sólo si se detiene, o dandole permiso al usuario para acceder a la carpeta, que es lo que no quiero porque cada vez que creamos un nuevo usuario hay que darle permiso, además que en la carpeta hay otras bases a las cuales no deberian acceder.

Saludos

Adhemar

Re: Leer una base sin permiso

Posted: Tue May 26, 2009 6:22 pm
by ADBLANCO
No creo que tenga nada que ver, pero el orden de las instrucciones no debiera ser:


EMPL->( dBCloseArea() )
WinExec("Net use \\FOSERVER\RRHH /delete",0)

en lugar de:


WinExec("Net use \\FOSERVER\RRHH /delete",0)

EMPL->( dBCloseArea() )

Re: Leer una base sin permiso

Posted: Wed May 27, 2009 12:32 pm
by acuellar
Gracias Distinguido Angel.

Tiene razón, primero debo cerrar las bases, luego quitar la carpeta compartida.

Saludos

Adhemar