Page 1 of 1

¿ Existe una función que indique si una tabla esta abierta ?

Posted: Tue Jun 27, 2023 10:28 pm
by wyerco613
Por ejemplo :

USE Clientes

/* Clientes está abierta +/

var:=TablaAbierta("Clientes")

var -> .T. o O o cualquier respuesta

Saludos y gracias por la ayuda.

Re: ¿ Existe una función que indique si una tabla esta abierta ?

Posted: Wed Jun 28, 2023 11:14 am
by Antonio Linares
Puedes usar:

USE Clientes
? Used()
? Alias()

Re: ¿ Existe una función que indique si una tabla esta abierta ?

Posted: Wed Jun 28, 2023 1:44 pm
by jbrita
Hola Waldemar, tienes algun email

Saludos

Re: ¿ Existe una función que indique si una tabla esta abierta ?

Posted: Wed Jun 28, 2023 7:53 pm
by wyerco613
Estimado Antonio
Muchas gracias por la respuesta, pero me refiero cuando hay muchas tablas abiertas y quiero saber si una en particular esta abierta.

Saludos

Re: ¿ Existe una función que indique si una tabla esta abierta ?

Posted: Wed Jun 28, 2023 8:18 pm
by wyerco613
jbrita

Si, mi correo es easycomp613@gmail.com

Saludos

Re: ¿ Existe una función que indique si una tabla esta abierta ?

Posted: Wed Jun 28, 2023 8:21 pm
by karinha
Mira...

Code: Select all | Expand

   IF .NOT. FUSE("80","CADPARAM") // CADPARAM.DBF

      MsgStop( OemToAnsi( "ATEN€ÇO:          MANUTEN€ÇO DO PLENO:" ) +CRLF+ ;
               OemToAnsi( "SISTEMA EM MANUTEN€ÇO...   PAR¶METROS." ) +CRLF+ ;
               OemToAnsi( "ENQUANTO NÇO SAIREM DA MANUTEN€ÇO,    " ) +CRLF+ ;
               OemToAnsi( "NENHUM USUµRIO PODERµ ENTRAR NO PLENO." ) +CRLF+ ;
               OemToAnsi( "PE€A PARA SAIREM DA MANUTEN€ÇO->PLENO." ) +CRLF+ ;
               OemToAnsi( "PAR¶METROS DO PLENO BLOQUEADO.  OOOPS!" ) +CRLF+ ;
               OemToAnsi( "TECLE <ENTER> PARA SAIR DO PROGRAMA.  " ),       ;
               OemToAnsi( "SISTEMA EM MANUTEN€ÇO - PAR¶METROS.   " ) )

      LIBERA_TUDO()

      RETURN NIL

   ENDIF

FUNCTION FUSE( W_SEL, W_ARQ, C_ALIAS )

   PRIVATE W_TEM

   IF C_ALIAS=NIL

      IF SUBS(W_ARQ,1,4)="AAUX"
         c_Alias:= "AAUX"+W_SEL
      ELSE
         IF RAT("\",W_ARQ)>0
            c_Alias:= SUBS(W_ARQ,RAT("\",W_ARQ)+1,LEN(W_ARQ)-(RAT("\",W_ARQ)+IF(AT(".",W_ARQ)>0,4,0)))
         ELSE
            c_Alias:= SUBS(W_ARQ,1,LEN(W_ARQ)-IF(RAT(".",W_ARQ)>0,4,0))
         ENDIF
      ENDIF

   ENDIF

   IF WFILIAL
      WTARQ="CADCLIEN;CADTRANS;CADVENDE;CADREGIO;CADPRODU;CADCLAES;CADIPIES;" + ;
            "CADTRIES;CADCOMPO;CADFORPR;CADFORNE;CADOBRIG;CADTPFOR;CADOBSER;" + ;
            "CADTPSER;CADCUSTO;CADCONDI;CADHISBA;CADTPCLI;CADETIQU;CADFICHA;" + ;
            "CADEMPGD;CADASTCO;CADEXMED;CADREAJU;CADATCON;CADSINDI;CADPENDE;" + ;
            "CADEXAUD;CADEXPER;CADEXUNI;CADENDER;CADPROFI;CADAVULS;CADMEDIC;" + ;
            "CADJUSTI;CADSENHA;CADBANCO;CADMOVBA;CADCCVEN;CADDESCO;"                // CADMOEDA;"

      IF AT(W_ARQ,WTARQ)#0
         W_ARQ="..\"+W_ARQ
      ENDIF

   ENDIF

   SELE &W_SEL

   USE(W_ARQ) SHARED ALIAS(c_Alias) VIA "DBFCDX"

   IF.NOT.NETERR()
      RETURN( .T. )
   ENDIF

   W_TEM=0

   WHILE W_TEM <= 3

      SYSREFRESH()

      USE(W_ARQ) SHARED ALIAS(c_Alias) VIA "DBFCDX"

      IF.NOT.NETERR()
         RETURN( .T. )
      ENDIF

      W_TEM := W_TEM + 1

      SysWait( .5 )

   ENDDO

RETURN( .F. )
Regard, saludos.

Re: ¿ Existe una función que indique si una tabla esta abierta ?

Posted: Wed Jun 28, 2023 9:07 pm
by wyerco613
Karinha

Muchas gracias por tu aporte, pero estoy buscando una función (de FW) que me muestre si una tabla esta abierta.

Regards, saludos.

Re: ¿ Existe una función que indique si una tabla esta abierta ?

Posted: Wed Jun 28, 2023 10:10 pm
by cnavarro

Code: Select all | Expand

Select( "tabla" )  // si tabla es el alias
? Used()
 

Re: ¿ Existe una función que indique si una tabla esta abierta ?

Posted: Thu Jun 29, 2023 6:39 am
by wyerco613
cnavarro

Estimado era exactamente lo que necesitaba muchas gracias y bendiciones.

Regards, Saludos

Re: ¿ Existe una función que indique si una tabla esta abierta ?

Posted: Thu Jun 29, 2023 11:22 am
by Carles
Bones,

Si usas alias esto te puede servir...

Code: Select all | Expand

#include 'fivewin.ch'

#xcommand TRY  => BEGIN SEQUENCE WITH {| oErr | Break( oErr ) }
#xcommand CATCH [<!oErr!>] => RECOVER [USING <oErr>] <-oErr->
#xcommand FINALLY => ALWAYS 

function main()

    local cError := ''

    USE states SHARED ALIAS 'ALIAS12345'
    
    if IsOpen( 'states.dbf', @cError )
        ? cError
    else
        ? 'Table no opened'
    endif   

return nil 

function IsOpen( cFile, cError )

    local lOpen := .f.
    local o
    
    cError := ''
    
    TRY 
        USE (cFile) NEW
        ( Alias() )->( dbclosearea() )      
    CATCH o 
        cError := o:description
        lOpen := .t.
    END 

return lOpen
Feliz verano a todos !

C.

Re: ¿ Existe una función que indique si una tabla esta abierta ?

Posted: Thu Jun 29, 2023 5:30 pm
by wyerco613
Carles

Buenisimo ejemplo para manejar los errores de apertura de una tabla, muchas gracias y bendiciones.

Regards, Saludos.