Page 1 of 1

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

PostPosted: 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 ?

PostPosted: 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 ?

PostPosted: 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 ?

PostPosted: 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 ?

PostPosted: 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 ?

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

Code: Select all  Expand view

   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 ?

PostPosted: 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 ?

PostPosted: Wed Jun 28, 2023 10:10 pm
by cnavarro
Code: Select all  Expand view

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

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

PostPosted: 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 ?

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

Si usas alias esto te puede servir...

Code: Select all  Expand view
#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 ?

PostPosted: 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.