Comprobar DBF abierta

Comprobar DBF abierta

Postby servicomver » Thu Aug 19, 2021 2:02 am

Estoy tratando de comprobar si una base de datos esta abierta desde otro programa, uso:

Select 1
Use C:\Datos\Mesa_1 ALIAS aMesa_1 Exclusive
if !NetErr() ////compruebo si puedo abrirla o no
Select 2 ///uso otra base datos para poner el resultado
Go Registro
if Rlock() ///NUNCA LO BLOQUEA CUANDO LA BASE DE DATOS PRIMERA ESTA OCUPADA
aDatos->Enuso:=.T.
Endif
Else
? "no hago nada"
Endif

¿ Porque después de que Neterr() da .T. ya no se puedo bloquear un registro de otra base de datos ?

¿ Que estoy haciendo mal ?

Gracias. Saludos
servicomver
 
Posts: 190
Joined: Fri Nov 18, 2005 7:34 pm

Re: Comprobar DBF abierta

Postby artu01 » Thu Aug 19, 2021 3:34 am

Prueba asi:
Code: Select all  Expand view

Select 1
Use C:\Datos\Mesa_1 ALIAS aMesa_1 Exclusive
lerror:=NetErr()


Select 2 ///uso otra base datos para poner el resultado
Go Registro
if Rlock()
    aDatos->Enuso:=iif(lerror,.T.,.F.)
Else
    ?'no se pudo bloquear 2da BD'
Endif
 
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: Comprobar DBF abierta

Postby jvtecheto » Thu Aug 19, 2021 8:42 am

Hola Servicomver:

Yo utilizo la funcion Used()

Code: Select all  Expand view

IF(aMesa_1->(Used() ), Select("aMesa_1"),dbUseArea( .T., , "Mesa_1", "aMesa_1", .T. )    )
 


Saludos.

Jose
Fwh 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64
User avatar
jvtecheto
 
Posts: 597
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Re: Comprobar DBF abierta

Postby hmpaquito » Thu Aug 19, 2021 8:49 am

En entorno compartido se utiliza la funcion de apertura Net_Use() o similar que permite una manera suave de comprobacion y apertura
Se usa algo asi como:

Code: Select all  Expand view
IF !Net_Use(cFileDbf, .f., 5)
   MsgInfo("Nos se pudo abrir !", cFileDbf)
ENDIF
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Comprobar DBF abierta

Postby karinha » Thu Aug 19, 2021 1:14 pm

hmpaquito wrote:En entorno compartido se utiliza la funcion de apertura Net_Use() o similar que permite una manera suave de comprobacion y apertura
Se usa algo asi como:

Code: Select all  Expand view
IF !Net_Use(cFileDbf, .f., 5)
   MsgInfo("Nos se pudo abrir !", cFileDbf)
ENDIF


Code: Select all  Expand view

// ------------------------------------------------------------------------
// Fun‡Æo.....: NetUse
// Descri‡Æo..: Abre um Arquivo DBF, em modo EXCLUSIVE (.F.), ou SHARED (.T.)
// Par metros : cDbf      -> Nome da Base de Dados
//              lShared   -> SHARED (.T.), EXCLUSIVE (.F.)
// Devolve ..: .T.       -> Si se ha podido abrir.
//             .F.       -> Si no se ha podido abrir.
// ------------------------------------------------------------------------
FUNCTION NetUse( cDbf, lShared )

   LOCAL cAlias := cFileName( cDbf )
   LOCAL bAlias := cFileName( cDbf )

   // CONTROLE DE PARAMETROS DE ENTRADA =====================
   If cDbf = NIL .OR. !File( cDbf + ".DBF" )
      MsgStop( "NOME DO ARQUIVO INCORRETO" + CRLF + CRLF + ;
               "NÃO ACHEI BANCO DE DADOS." + CRLF + CRLF + ;
               cDbf + ".DBF", "ERRO FATAL!!" )
      RETURN( .F. )
   ENDIF

   IIf( lShared = NIL, lShared := .F., lShared )
   // ======================================================

   IF lShared = .T.

      USE ( cDbf ) ALIAS ( cAlias := GetNewAlias( cAlias ) ) ;
         VIA "DBFCDX" SHARED NEW

   ELSE
      USE ( cDbf ) ALIAS ( cAlias ) VIA "DBFCDX" EXCLUSIVE NEW
   ENDIF

   IF !NetErr()
      RETURN( .T. )
   ENDIF

   MsgStop( "IMPOSSIVEL ABRIR BANCO DE DADOS: " + cAlias + CRLF + ;
            OemToAnsi( "BLOQUEADO POR OUTRO USUµRIO." ), ;
            "ERRO FATAL DE REDE! FECHAR BANCO DE DADOS." )

RETURN( .F. )
 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7824
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Comprobar DBF abierta

Postby servicomver » Thu Aug 19, 2021 6:21 pm

Muchisimas gracias, Problema resuelto
servicomver
 
Posts: 190
Joined: Fri Nov 18, 2005 7:34 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot], jvtecheto and 46 guests