Siguiendo el ejemplo de RF (uno algo antiguo pero que aún funciona) armé un pequeño programa para hacer la conexión.
Lo primero que me pasó fué que tengo que crear si o si el diccionario, es imprescindible para hacer la conexion con AdsConnect60(). Me llamó la atención porque eso es diferente y para acceder a tablas que accedía directamente, con AIS no puedo.
El problema que tengo es que para poder acceder a una tabla tengo que declararla en el diccionario, y en el use solo indico el nombre sin el path. Eso es diferente de como lo hace René en su código. Para mas claridad, adjunto mi código:
- Code: Select all Expand view
ANNOUNCE RDDSYS
FUNCTION aisdem32()
LOCAL oBar
SET DELETE ON
REQUEST ADS, ADSKeyCount, ADSKeyNo, OrdKeyCount, OrdKeyNo
RddRegister("ADS",1)
RddSetDefault("ADS")
AdsRightsCheck(.F.)
AdsSetServerType(4) //SET SERVER AIS
AdsSetFileType(2)
IF AdsConnect60( "\\pluton\disco-d\instalar\inciden.add", 4 , "inciden", "inciden" )
Alert("Esta ahora conectado al Sevidor AIS de ATISA;;"+;
"You are now connected to ATISA Server","Bienvenido / Welcome")
ELSE
Alert("Se ha rechazado la conexión al servidor AIS de Atisa, por favor intente mas tarde;;"+;
"Conection to Atisa's AIS Server rejected, please, try again later","AIS Error")
QUIT
ENDIF
AbreDbfs()
RETURN (.T.)
FUNCTION AbreDbfs()
// USE "\\PLUTON\DISCO-D\instalar\LIFTPINT\Empresas.Dbf" SHARED NEW Esto no funciona pero asi es como lo hace René en su ejemplo
// USE "W:\instalar\LIFTPINT\Empresas.Dbf" SHARED NEW esto tampoco ambos dan error 5132
USE "Empresas" SHARED NEW // esto si
browse()
RETURN (.T.)
Sin embargo en el código de René la apertura se hace especificando el path:
- Code: Select all Expand view
FUNCTION AbreDbfs()
cAliCat := "CATCUE"
USE \\googleserver\cursos\adsdemo\cibconwn\stc\CATCUE.cat SHARED NEW ALIAS (cAliCat)
(cAliCat)->(AdsCacheRecords(50))
(cAliCat)->(OrdSetFocus("NUMCUENTA"))
(cAliCat)->(DBGOTOP())
cAliCatPol := "CAT1"
USE \\googleserver\cursos\adsdemo\cibconwn\stc\CATCUE.CAT SHARED NEW ALIAS (cAliCatPol)
(cAliCatPol)->(OrdSetFocus("NUMCUENTA"))
cAliPol := "ENEPOL"
USE \\googleserver\cursos\adsdemo\cibconwn\stc\ENEPOL.POL SHARED NEW ALIAS (cAliPol)
(cAliPol)->(OrdSetFocus("POLIZA")) // seleccion del indice / index selection
(cAliPol)->(ADSCACHERECORDS(50)) // lectura de registros por adelantado / record "in advance" reading
cAliPol2 := "POLENE"
USE \\googleserver\cursos\adsdemo\cibconwn\stc\POLENE.POL SHARED NEW ALIAS (cAliPol2)
(cAliPol2)->(OrdSetFocus("POLIZA")) // seleccion del indice / index selection
(cAliPol2)->(ADSCACHERECORDS(50) ) // idem
(cAliPol2)->(QuickScope((cAliPol)->tipopoli2+STR((cAlipol)->numpoli2,4))) // Filtro sobre el detalle en base al maestro / Detail filtering based on the master
(cAliPol2)->(DBGOTOP())
SET RELATION TO numcta+numsubcta+numssubcta+numauxil INTO (cAliCatPol)
RETURN (.T.)
Lo que se me complica es que tengo que crear algunas dbfs cuyo nombre cambia segun diversos parámetros como la fecha y cosas por el estilo, y con el diccionario no se me ocurre como manejarlo.
Un saludo,
Carlos.