FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Pruebas con AIS
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Pruebas con AIS
Posted: Thu Apr 26, 2007 04:18 PM
He empezado a experimentar con la conexion de internet del servidor ADS de la empresa, un ADS 7.1.

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:

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:
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.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
鈥淚f you think education is expensive, try ignorance"
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Pruebas con AIS
Posted: Thu Apr 26, 2007 04:34 PM
Carlos

Debes tener en cuenta que ADS tambien utiliza el archivo ADS.INI

ADS.INI

[SETTINGS]

DEFAULT_PROTOCOL = 1


[SERVIDOR] //AQUI VA EL NOMBRE DEL SERVIDOR

INTERNET_PORT=2000
INTERNET_IP=xx.xx.xx.xx

LAN_IP=xx.xx.xx.xx
LAN_PORT=6262


cuando abras una tabla ponle solo el noMbre

use clientes new


Espero que te sirva
Saludos
Patricio
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Pruebas con AIS
Posted: Thu Apr 26, 2007 04:46 PM

Patricio,

Gracias por la respuesta.

Si, eso est谩 bien y de hecho ya est谩 funcionando. El punto es que solo puedo abrir las dbfs usando el alias que defin铆 en el diccionario de datos, pero no especificando el path en el servidor tal como lo hace Ren茅.

Esto falla:
USE "\PLUTON\DISCO-D\instalar\LIFTPINT\Empresas.Dbf" SHARED NEW

da error ADS 5132

Esto funciona bien

USE "Empresas.Dbf" SHARED NEW

Todo usando AIS.

Sabes a que se puede deber?

UN saludo y gracias por responder,

Carlos.

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
鈥淚f you think education is expensive, try ignorance"
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Pruebas con AIS
Posted: Thu Apr 26, 2007 07:49 PM

Carlos

Cuando utilizaba la version de xharbour 0.99.3 me funcionabacolocando la ruta completa donde esta dbf, luego cuando cambie de version de xharbour ya no funciono, si que tuve que colocar el nombre y para mi es mas comodo creo yo

Saludos
Patricio

Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 840
Joined: Thu Oct 13, 2005 07:05 PM
Pruebas con AIS
Posted: Thu Apr 26, 2007 11:05 PM

Carlos:

Efectivamente, la version del ejemplo de FW que tienes esta compilada con xHarbour 0.99.5.... y las versiones anteriores tenian ese GRAVE PROBLEMA.

En realidad es un BUG del tama帽o del planeta que fue corregido en el RDDADS a partir de la version 99.6.

A partir de la version 99.6 y superiores, necestias el diccionario de datos y que la tabla este registrada en el diccionario.

En:

www.google.d2g.com/ads/demos/

hay otro ejemplo AISX... que esta compilado con la version mas reciente de xHarbour y no requiere que pongas la ruta completa

Saludos

R.F.
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Pruebas con AIS
Posted: Fri Apr 27, 2007 07:35 AM

Hola compa帽eros,
Gracias por las respuestas, calman la ansiedad del que se mete con cosas nuevas (nuevas para uno ;) )

Ren茅,

que sucede cuando quiero crear una tabla desde el cliente, como es mi caso? Estan todas en ficheros separados, en directorios separados dentro de la misma base.

Saludos,

Carlos.

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
鈥淚f you think education is expensive, try ignorance"
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Pruebas con AIS
Posted: Fri Apr 27, 2007 09:12 AM
Ren茅,

Efectivamente, con xHarbour 0.99.5 este c贸digo funciona:

    USE "\\PLUTON\DISCO-D\instalar\LIFTPINT\Empresas.Dbf" SHARED NEW
    dBCreate( "\\PLUTON\DISCO-D\instalar\LIFTPINT\Empre.Dbf", dBStruct() )
    Use ("\\PLUTON\DISCO-D\instalar\LIFTPINT\Empre.Dbf") Exclusive NEW
    dBAppend()


Para hacerlo con xHarbour 0.99.6 o 0.99.7 he intentado y he logrado crear una nueva dbf, pero no s茅 como hacer para abrirla:

    USE "Empresas" SHARED NEW
    dBCreate( "\\PLUTON\DISCO-D\instalar\LIFTPINT\Empre.Dbf", dBStruct() ) // Funciona con 0.99.6!
    Use ("\\PLUTON\DISCO-D\instalar\LIFTPINT\Empre.Dbf") Exclusive NEW 
    // Ac谩 casca con:
    // Error ADSCDX/5132  Open error: \\PLUTON\DISCO-D\instalar\LIFTPINT\Empre.Dbf
    dBAppend()


Como puedo hacer con las bases nuevas creadas?


Para aclarar la consulta
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
鈥淚f you think education is expensive, try ignorance"
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Pruebas con AIS
Posted: Fri Apr 27, 2007 12:01 PM

Hola,

si las tablas que utilizaras son temporales, vigentes solo para la conexion puedes utilizar SQL, ahora si las tablas deben quedarse, puedes utilizar la funcion AdsADDTable que te a~nade una tabla existente al diccionario, pero el problema sera llevar la tabla al server donde esta el diccionario, si ya lo tienes alli entonces no habra problema.

No se si entendi tu pregunta.

saludos

Marcelo

Posts: 840
Joined: Thu Oct 13, 2005 07:05 PM
Pruebas con AIS
Posted: Fri Apr 27, 2007 03:47 PM

Atencion:

El AIS es una herramienta para consulta y actualizacion de bases de datos, no para creacion de las mismas con instrucciones XBase.

En el manual de ADS indica que el uso de ais debe de evitar la creacion (dbcreate()) y la comprobacion de existencia de archivos (FILE()) por una razon muy simple, tu no estas accediendo fisicamente al disco duro del servidor remoto, sino estas escribiendo a un puerto de internet, realmente no tienes acceso fisico al disco duro remoto como seria en el caso de una vpn, con AIS tu estas leyendo y escribiendo a un puerto, lo que tu leas y escribas en el puerto sera procesado por el servidor de Advantage y de ahi enviado al disco.

Si deseas crear tablas temporales, por ejemplo para informes o cosas asi, que luego van a desaparecer, puedes hacerlo EN TU DISCO DURO LOCAL, eso se puede hacer usando el servidor local de ADS en combinacion con el servidor AIS, de hecho asi lo hacemos nosotros. Debes seleccionar el tipo de server 7, para que puedas utilizar tanto servidor local, como remoto, como AIS simultaneamente.

Si tu quieres crear tablas en el servidor, que van a ser de uso permanente, entonces puedes hacerlo via SQL con la instruccion CREATE TABLE (obviamente tienes que estar conectado al diccionario de datos).

Saludos

R.F.
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Pruebas con AIS
Posted: Fri Apr 27, 2007 06:00 PM

Holas,

Rene esta en lo correcto como siempre, para que utilices AdADDTable, debes de tener la DB (Diccionario) en el mismo disco donde esta la aplicacion, en mi caso no es muy problematico ya que utilizo Linux. Pero tienes aun todad la potencia de SQL, con lo que podrias hacer muchas cosas.

un saludo

Marcelo

Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Pruebas con AIS
Posted: Fri Apr 27, 2007 08:29 PM
Carlos

Yo lo utilizo asi para tablas temporales

cFileTemp := cNewFileName( ViewUsu():cPathTmp + "\TEMPO", "DBF" )
cFileCdx  := cNewFileName( ViewUsu():cPathTmp + "\TEMPO", "CDX" )

dbCreate( cFileTemp, ;
						{ { "cod_prod", "c", 15,0},;
						  { "des_prod", "C", 40,0},;
						  { "fecha",    "d", 08,0},;
						  { "hora",     "C", 10,0},;
						  { "cant",     "n", 10,0},;
						  { "usuario",  "C", 30,0}}, "DBFCDX" )

SELE 0 ; USE (cFileTemp) NEW ALIAS TEMP VIA "DBFCDX"
INDEX ON FIELD->COD_PROD TAG CODIGO TO (cFileCdx)
SET INDEX TO (cFileCdx)


y al terminar borro los archivos..


Espero que te sirva

Saludos
Patricio
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Pruebas con AIS
Posted: Mon Apr 30, 2007 08:24 AM

Marcelo, Patricio:

Creo tablas, pero no son temporales, es evidente que crear tablas temporales en un ancho de banda reducido ser铆a nefasto. Las tablas a crear son como cierres o paquetes de datos a procesar en el servidor, que eventualmente son actualizados luego del cierre. Voy a probar a ver como me va con el ADSAddTable, a ver si me funciona.

Gracias por la atenci贸n,

Carlos.

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
鈥淚f you think education is expensive, try ignorance"
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Pruebas con AIS
Posted: Mon Apr 30, 2007 09:01 AM
Hola Rene,

gracias por la respuesta,

RF wrote:

Atencion:

El AIS es una herramienta para consulta y actualizacion de bases de datos, no para creacion de las mismas con instrucciones XBase.

En el manual de ADS indica que el uso de ais debe de evitar la creacion (dbcreate()) y la comprobacion de existencia de archivos (FILE()) por una razon muy simple, tu no estas accediendo fisicamente al disco duro del servidor remoto, sino estas escribiendo a un puerto de internet, realmente no tienes acceso fisico al disco duro remoto como seria en el caso de una vpn, con AIS tu estas leyendo y escribiendo a un puerto, lo que tu leas y escribas en el puerto sera procesado por el servidor de Advantage y de ahi enviado al disco.

Si deseas crear tablas temporales, por ejemplo para informes o cosas asi, que luego van a desaparecer, puedes hacerlo EN TU DISCO DURO LOCAL, eso se puede hacer usando el servidor local de ADS en combinacion con el servidor AIS, de hecho asi lo hacemos nosotros. Debes seleccionar el tipo de server 7, para que puedas utilizar tanto servidor local, como remoto, como AIS simultaneamente.

Si tu quieres crear tablas en el servidor, que van a ser de uso permanente, entonces puedes hacerlo via SQL con la instruccion CREATE TABLE (obviamente tienes que estar conectado al diccionario de datos).


por ac谩 seguro viene la soluci贸n.
Reitero mi respuesta, no son temporales, debo crear las tablas.

Respecto del argumento del porqu茅 no se puedan crear, me ha dejado pensando un poco. Crear una tabla es solo crear uno o dos archivos en el espacio f铆sico y nada m谩s, no tiene m谩s. Eventualmente se agregar铆a en el diccionario de datos, pero creo que tampoco es mucha informaci贸n para transferir, el tr谩fico generado por esta operaci贸n es el mismo que se hace cuando creo un 铆ndice o bien edito o agrego un registro, por lo que no veo realmente una limitaci贸n en eso.
Y respecto de que no accedo al disco duro, cuando uso el servidor normal tampoco lo hago, para eso pongo el servidor ADS. De hecho las tablas son inaccesibles mientras el servidor las tiene abiertas (s茅 que se puede configurar para que si se pueda) lo que demestra que con servidor REMOTE tambien se acceden sin acceder al disco.
Si el manual dice que no es recomendable as铆 ser谩, pero debe haber alguna otra raz贸n, tal vez de seguridad o algo as铆, no?

Con un ancho de banda limitado seguramente que habr谩 que realizar los procesos con mucha prudencia teniendo bien presente el ancho de banda, que todavia sigue siendo un recurso limitado.

Un saludo,

Carlos.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
鈥淚f you think education is expensive, try ignorance"
Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM
Re: Pruebas con AIS
Posted: Sat Mar 24, 2012 11:20 AM

Carlos,

Al final, 驴c贸mo conseguiste solucionarlo?.

Me sucede lo mismo, me funciona el dbcreate o el AdsDeleteFile con el path completo "c:\lucas\empresa01\clientes.dbf", pero no puedo hacer use "c:\lucas\empresa01\clientes".

Mil gracias.

Un saludo

Muchas gracias. Many thanks.



Un saludo, Best regards,



Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producci贸n]



Implementando MSVC 2010, FWH64 y ADO.



Abandonando uso xHarbour y SQLRDD.

Continue the discussion