Page 1 of 1

Requiere Bloqueo

Posted: Fri Jun 21, 2019 5:56 pm
by leandro
Buenos Dias para todos,

Como dice el encabezado tengo problemas al momento de actualizar _ en una DBF compartida de otra aplicación. El problema radica al momento de actualizar, ya que me lanza un error que dice: requiere bloqueo.

Si lo hago de esta manera no realiza _, ya que no se cumple la condición y no ingresa.

Code: Select all

IF dbRLock() 
  d_info->HPESTADO:=2
  d_info->HPFRANUM:=val(factur)
  d_info->HPTIPDOC:=tipodoc
ENDIF
dbUnlock()
 
Sin embargo si lo hago forzado

Code: Select all

dbRLock() //
d_info->HPESTADO:=2
d_info->HPFRANUM:=val(factur)
d_info->HPTIPDOC:=tipodoc
dbUnlock()
 
Pummm Error: "Requiere Bloqueo",alguien sabe en que puedo estar fallando?

Por otro lado cabe comentar que solo sucede en algunos computadores, en mi PC personal funciona de maravilla, pero en el equipo del cliente, nada :(

De antemano gracias

Función Completa

Code: Select all

*ACTUALIZAMOS EL ESTADO Y NUMERO DE LA FACTURA
FUNCTION actualizaEstado(placa,fecFac,factur,tipodoc)
//RUTAS DE LOS ARCHIVOS UTILIZADOS
Local ruta1 := "\bascula\dbf\info"
//ABRIMOS LA TABLA DE REGISTRO 
USE (ruta1) INDE (ruta1) ALIAS d_info NEW SHARED VIA 'DBFCDX'
LOCATE FOR d_info->HPEFECHAS=fecFac .AND. d_info->HPESTADO=1 .AND. d_info->HPEPLACAS=alltrim(placa) 
IF FOUND()
    IF dbRLock() //
        d_info->HPESTADO:=2
        d_info->HPFRANUM:=val(factur)
        d_info->HPTIPDOC:=tipodoc
    ENDIF
    dbUnlock()
ELSE
    MsgInfo("Placa No Encontrada","Error Datos")
    retorno:=.f.
ENDIF
d_info->(DBCloseArea())
return nil 
 

Re: Requiere Bloqueo

Posted: Fri Jun 21, 2019 6:06 pm
by Armando
Leandro:

Y si te vas a pie?

Code: Select all

    IF (cAlias)->(RLOCK())
 
Yo lo uso así y sin problemas.

Saludos

Re: Requiere Bloqueo

Posted: Fri Jun 21, 2019 7:16 pm
by karinha

Code: Select all

FUNCTION actualizaEstado(placa,fecFac,factur,tipodoc)

   //RUTAS DE LOS ARCHIVOS UTILIZADOS
   Local ruta1 := "\bascula\dbf\info"
   //ABRIMOS LA TABLA DE REGISTRO
   USE (ruta1) INDEX (ruta1) ALIAS d_info NEW SHARED // VIA 'DBFCDX' ponga en el menu principal


   LOCATE FOR d_info->HPEFECHAS=fecFac .AND. d_info->HPESTADO=1 .AND. d_info->HPEPLACAS=alltrim(placa)


 
   IF FOUND()

      RLOCK()

      d_info->HPESTADO:=2
      d_info->HPFRANUM:=val(factur)
      d_info->HPTIPDOC:=tipodoc

      COMMIT
      UNLOCK

   ELSE

       MsgInfo("Placa No Encontrada","Error Datos")

       retorno:=.f.

   ENDIF

   d_info->(DBCloseArea())

return nil
 

Re: Requiere Bloqueo

Posted: Wed Jun 26, 2019 12:19 pm
by leandro
Gracias karinha y Armando :D

Voy a realizar pruebas y comento.

Re: Requiere Bloqueo

Posted: Wed Jun 26, 2019 1:20 pm
by nageswaragunupudi

Code: Select all

if d_info->( Found() )
   if d_info->( FW_FieldsPut( "HPESTADO,HPFRANUM,HPTIPDOC", ;
                { 2, Val( FACTUR ), tipodoc } ) )  == 0
      ? "Error writing"
   endif
else
  ? "not found"
endif