El tema de crear y leer archivos "Temporales"

Post Reply
VitalJavier
Posts: 188
Joined: Mon Jun 10, 2013 6:40 pm

El tema de crear y leer archivos "Temporales"

Post by VitalJavier »

Tal vez a alguien ya paso por esto, y me podrían echar un hilo.
(Uso ADS, con tablas libres)

-Mi sistema esta en un Servidor
-En todas las maquinas les instale el sistema direccionando de donde abrir las tablas "\\servidor\…."
-Ahora toca que los temporales se creen en la PC local

1.- Con DbCreate - no crea nada
pues como no lo creaba , decidi poner un archivo "temporal.adt" en la maquina local
2.- Con DbUseArea - no puede abrir
pues no abre el temporal que puse manualmente

DbUseArea(.T.,DbSetDriver(),"C:\NUEVO\TEMPORAL\TEMPORALV","TEMPORALV",.F.,.F.)

y pues no me funciona crear y abrir archivos que están el la PC local.

Saludos.
russimicro
Posts: 179
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: El tema de crear y leer archivos "Temporales"

Post by russimicro »

Mi experiencia..

1. ADS, con tablas libres ADSCDX, en servidor remoto
2. Temporales en formato DBFCDX
3. Temporales en disco local
4. Filtros especiales , con indices en disco local y temporary

Johnson Russi
Loren
Posts: 458
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: El tema de crear y leer archivos "Temporales"

Post by Loren »

Russimicro, buenas:

Yo hago siempre uso de 2 variables declaradas como públicas: "Path_Servidor" y "Path_PC_local", donde guardo los path respectivos de uno y otro PC.

Cuando quiero usar las DBF o CDX del servidor utilizo:

Code: Select all

 set default to &Path_Servidor
...
 use mitablaDbf1 shared index ...
 use mitablaDbf2 shared index ...
...
 
Cuando quiero usar las DBF o CDX del PC_Local utilizo:

Code: Select all

 set default to &Path_PC_local
...
 use mitablaDbfLocal1 shared index ...
 use mitablaDbfLocal2 shared index ...
 index on ....
...
 
saludos.
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: El tema de crear y leer archivos "Temporales"

Post by hmpaquito »

Hola,

Sería bueno tener la descripcion y codigos de error para asi poder dar una mejor ayuda.

Saludos
russimicro
Posts: 179
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: El tema de crear y leer archivos "Temporales"

Post by russimicro »

Code: Select all


cPatTab := path local o remoto, etc
cNomTab := alias de la tabla
vIndTab:=  vector con nombre del indices
lModTab := modo compartido, exclusivo
cNomDri := driver : DBFCDX, ADS, SQLRDD, ETC

FUNCTION lUsaTab( cPatTab,cNomTab,cAliTab,vIndTab,lModTab,cNomDri)

LOCAL cDriVer  := cNomDri
local lShared := lModTab

IF M->lSerAds .AND. cDriVer == "ADS"  // SERVIDOR ADS ACTIVO

   DO WHILE .T.

      IF SELECT(cAliTab) == 0

         TRY
           IF !lAdsRemInt  // NO INTERNET

              IF ( LEN(vIndTab) > 0 ) .AND. FILE(cPatTab+vIndTab[1])

                 IF lShared
                    USE (cPatTab+cNomTab) ALIAS &cAliTab SHARED    NEW  VIA (cDriVer) INDEX (cPatTab+vIndTab[1])  CONNECTION  oConSql
                 ELSE
                    USE (cPatTab+cNomTab) ALIAS &cAliTab EXCLUSIVE NEW  VIA (cDriVer) INDEX (cPatTab+vIndTab[1])  CONNECTION  oConSql
                 ENDIF

              ELSE

                 IF lShared
                    USE (cPatTab+cNomTab) ALIAS &cAliTab SHARED    NEW  VIA (cDriVer)   CONNECTION oConSql
                 ELSE
                    USE (cPatTab+cNomTab) ALIAS &cAliTab EXCLUSIVE NEW  VIA (cDriVer)   CONNECTION oConSql
                 ENDIF

              ENDIF

           ELSE   // ADSREM - INTERNET

              IF ( LEN(vIndTab) > 0 )

                 IF lShared
                    USE (cPatTab+cNomTab) ALIAS &cAliTab SHARED    NEW  VIA (cDriVer) INDEX (cPatTab+vIndTab[1]) CONNECTION  oConSql
                 ELSE
                    USE (cPatTab+cNomTab) ALIAS &cAliTab EXCLUSIVE NEW  VIA (cDriVer) INDEX (cPatTab+vIndTab[1]) CONNECTION  oConSql
                 ENDIF

              ELSE

                 IF lShared
                    USE (cPatTab+cNomTab) ALIAS &cAliTab SHARED    NEW  VIA (cDriVer)  CONNECTION oConSql
                 ELSE
                    USE (cPatTab+cNomTab) ALIAS &cAliTab EXCLUSIVE NEW  VIA (cDriVer)  CONNECTION oConSql
                 ENDIF

              ENDIF

           ENDIF


         CATCH

            IF cVerMen == NIL
               MYMEN("Error 1. En apertura de tablas. Verifique si hay procesos en ejecuci¢n : "+cAliTab+"-"+cPatTab+cNomTab)
            ENDIF
            RETURN .F.

         END


         TRY

            IF NETERR()
               MENSAJES('Error. Tabla abierta por otra estaci¢n : "'+cNomTab+'".','Verif¡quelo','N')
               USE
               SW := 1
            ENDIF

         CATCH

            IF cVerMen == NIL
               MYMEN("Error 2. En apertura de tablas. Verifique si hay procesos en ejecuci¢n : "+cAliTab+"-"+cPatTab+cNomTab)
            ENDIF

            RETURN .F.

         END

      ELSE
         SELECT ( SELECT(cAliTab) )
         SET FILTER TO
         SET RELATION TO
      ENDIF

      IF cDriVer == "ADS"

         IF cAliTab == "SET" .OR. cAliTab == "SET_OTR" .OR. cAliTab == "SE2"
             // NO ENCRIPTA
         ELSE

            PARAMETRO(42,@cEncTab) // activa modo encriptacion 

            IF cEncTab == "D"  .OR. lDesCri <> NIL
               IF RDDSETDEFAULT() == "ADS"
                  IF (cAliTab)->( AdsIsTableEncrypted() )

                       IF lShared // SI FUERON ABIERTAS EN MODO COMPORTIDO .. LAS CIERRA Y ABRE EN EXCLUSIVO
                           CLOSE (cAliTab)

                           TRY
                             IF !lAdsRemInt  // NO INTERNET

                                IF ( LEN(vIndTab) > 0 ) .AND. FILE(cPatTab+vIndTab[1])

                                   USE (cPatTab+cNomTab) ALIAS &cAliTab EXCLUSIVE NEW  VIA (cDriVer) INDEX (cPatTab+vIndTab[1])  CONNECTION  oConSql

                                ELSE

                                   USE (cPatTab+cNomTab) ALIAS &cAliTab EXCLUSIVE NEW  VIA (cDriVer)   CONNECTION oConSql

                                ENDIF

                             ELSE   // ADSREM - INTERNET

                                IF ( LEN(vIndTab) > 0 )

                                   USE (cPatTab+cNomTab) ALIAS &cAliTab EXCLUSIVE NEW  VIA (cDriVer) INDEX (cPatTab+vIndTab[1]) CONNECTION  oConSql

                                ELSE

                                   USE (cPatTab+cNomTab) ALIAS &cAliTab EXCLUSIVE NEW  VIA (cDriVer)  CONNECTION oConSql

                                ENDIF

                             ENDIF

                           CATCH

                              IF cVerMen == NIL
                                 MYMEN("Error 1.1. En apertura de tablas. Verifique si hay procesos en ejecuci¢n : "+cAliTab+"-"+cPatTab+cNomTab)
                              ENDIF
                              RETURN .F.

                           END
                       ENDIF
                     //  ALERTA("DESENCRIPTO : "+cAliTab)
                       (cAliTab)->( AdsEnableEncryption(cClaDbf) )
                       (cAliTab)->( AdsDecryptTable() )
                       lDesCri := NIL
                       SW_ENCRIPTAR := .F.
                       LOOP

                  ENDIF
               ENDIF
            ENDIF

            IF cEncTab == "E" .AND. lDesCri == NIL .AND. SW_ENCRIPTAR

               IF RDDSETDEFAULT() == "ADS"

                  IF M->lEncTabADS // EXEPCION PARA TABLA DE PARAMETROS

                     IF (cAliTab)->( AdsIsTableEncrypted() )

                        AdsEnableEncryption(cClaDbf)

                       // alertA("ENABLED : "+cAliTab)
                     ELSE

                       CLOSE (cAliTab)

                       TRY
                         IF !lAdsRemInt  // NO INTERNET

                            IF ( LEN(vIndTab) > 0 ) .AND. FILE(cPatTab+vIndTab[1])

                               USE (cPatTab+cNomTab) ALIAS &cAliTab EXCLUSIVE NEW  VIA (cDriVer) INDEX (cPatTab+vIndTab[1])  CONNECTION  oConSql

                            ELSE

                               USE (cPatTab+cNomTab) ALIAS &cAliTab EXCLUSIVE NEW  VIA (cDriVer)   CONNECTION oConSql

                            ENDIF

                         ELSE   // ADSREM - INTERNET

                            IF ( LEN(vIndTab) > 0 )

                               USE (cPatTab+cNomTab) ALIAS &cAliTab EXCLUSIVE NEW  VIA (cDriVer) INDEX (cPatTab+vIndTab[1]) CONNECTION  oConSql

                            ELSE

                               USE (cPatTab+cNomTab) ALIAS &cAliTab EXCLUSIVE NEW  VIA (cDriVer)  CONNECTION oConSql

                            ENDIF

                         ENDIF

                       CATCH

                          IF cVerMen == NIL
                             MYMEN("Error 1.1. En apertura de tablas. Verifique si hay procesos en ejecuci¢n : "+cAliTab+"-"+cPatTab+cNomTab)
                          ENDIF
                          RETURN .F.

                       END

                       (cAliTab)->( AdsEnableEncryption(cClaDbf) )
                       (cAliTab)->( AdsEncryptTable() )

                     //  alertA("ENCRIPTA : "+cAliTab)

                       CLOSE (cAliTab)
                       LOOP
                     ENDIF
                  ENDIF
               ENDIF

            ENDIF

         ENDIF

      ENDIF

      EXIT

   ENDDO

ELSE     // SQLRDD Y DBFCDX

  IF cDriVer == NIL
     cDriVer := RDDSETDEFAULT()
  ENDIF

  IF SELECT(cAliTab) == 0

     TRY
        SW := 0


        IF ( cDriVer == "SQLRDD" .OR. cDriVer == "SQLEX" )
           //cNomTab := LOWER(cNomTab)
           DBUSEAREA(.T.,cDriVer,cPatTab+cNomTab,cAliTab,lShared,lReaOnl,NIL,oConSql)  // oConSql = OBJETO DE CONEXION AL SERVER SQLRDD
        ELSE
           DBUSEAREA(.T.,cDriVer,cPatTab+cNomTab,cAliTab,lShared,lReaOnl,NIL)
        ENDIF


     CATCH

        IF cVerMen == NIL
           MYMEN("Error. En apertura de tablas. Verifique si hay otros procesos en ejecuci¢n o si tiene permisos en la empresa destino : "+cAliTab+"-"+cPatTab+cNomTab)
        ENDIF

        RETURN .F.

    END

    TRY

        IF NETERR()
           IF cVerMen == NIL
              MENSAJES("Error. Tabla abierta por otra estaci¢n : "+cNomTab,"Verif¡quelo","N")
           ENDIF
           USE
           SW := 1
        ENDIF

     CATCH

        IF cVerMen == NIL
           MYMEN("Error 4. En apertura de tablas. Verifique si hay otros procesos en ejecuci¢n : "+cAliTab+"-"+cPatTab+cNomTab)
        ENDIF

        RETURN .F.

     END

     IF SW == 1
        SW := 0
        RETURN .F.
     ENDIF

  ELSE

     SELECT ( SELECT(cAliTab) )
     SET FILTER TO
     SET RELATION TO

  ENDIF


ENDIF

RETURN .T.

 
VitalJavier
Posts: 188
Joined: Mon Jun 10, 2013 6:40 pm

Re: El tema de crear y leer archivos "Temporales"

Post by VitalJavier »

Al tratar de abrir , este es el error que me marca

Code: Select all

Application
===========
   Path and name: C:\nuevo\admin.exe (32 bits)
   Size: 6,452,736 bytes
   Time from start: 0 hours 0 mins 7 secs 
   Error occurred at: 20/08/2018, 10:59:48
   Error description: Error ADSADT/5024  Open error: C:\temporal\TEMPORALV
 
Puse ese archivo "TEMPORALV" en la carpeta local "C:\TEMPORAL"

Ya vi ese erro y me dice :

Code: Select all

5024 AE_INVALID_CONNECTION_HANDLE
Advantage Error Guide
Advantage does not have a connection open with the specified handle.
 
Alguien sabe como resolverlo.
VitalJavier
Posts: 188
Joined: Mon Jun 10, 2013 6:40 pm

Re: El tema de crear y leer archivos "Temporales"

Post by VitalJavier »

Hice pruebas asi :

Code: Select all

cPathDAT := "\\servidor\sistema\datos\"
hConnec := ADSConnect(cPathDAT)   // Esto me Retorna un .T.
cPathTEM := "c:\nuevo\temporal\"
bConnec := ADSConnect(cPathTEM)   // Esto me retorna un .F.
Algo esta mal ?
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: El tema de crear y leer archivos "Temporales"

Post by hmpaquito »

Como ha comentado algun compañero, puedes utilizar el driver DBFCDX para los archivos locales.
VitalJavier
Posts: 188
Joined: Mon Jun 10, 2013 6:40 pm

Re: El tema de crear y leer archivos "Temporales"

Post by VitalJavier »

Pues como dijeron "DBFCDX" solo asi se pudo

Tablas en el servidor "ADT"
Temporales en PC local "DBF"

Code: Select all

Para Crearlo asi :
DbCreate(cCrea,aTempora,"DBFCDX")

Para Abrirlo asi :
DbUseArea(.T.,"DBFCDX",cPathTEM +"TEMPORALV","TEMPORALV",.F.,.F.)
 

Y pues funcionando, gracias por su ayuda.
Post Reply