Empezar con ADS modo local
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Thu Jan 27, 2011 5:06 pm
by Pedro
Hola a todos
A ver si alguno me tira una manita, me gustaría compilar mis programas con ADS en modo local, para intentar mejorar los índices, ya que en una de las aplicaciones los índices CDX se marchan a mejor vida, creándome situaciones, como imprimir albaranes con la cabecera de dos clientes montada, y el detalle de los dos albaranes, (de clientes diferentes) como si fuera un solo detalle.
He bajado en instalado el arc data architecte y, cosa curiosa, me tomas todas las bases de datos, pero me arroja errores en aquellas tablas que tienen como índice una fecha dtos(fecha), al abrirlas.
Uno de los errores que me salta es el 3011 Unknown identifier found in index key expression, el otro error -1721425.0 is not a valid timestamp.
Trabajo con Verce 5.0, así que os pido un poco de ayuda. Qué debo instalar, qué librerías usar y donde y qué debo instalar en la carpeta del ejecutable.
Muchas gracias
Re: Empezar con ADS modo local
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Fri Jan 28, 2011 2:00 pm
by Ruben Fernandez
Hola Pedro:
Yo uso xMate pero no deberias de tener ningun problema
con los datos que te doy.
Cabecera de cada PRG
#include "ADS.Ch"
Crear con Implib que esta en la carpeta bin de Borland la lib.
De esta forma.
Desde la linea de comandos
(Debes de tener la ACE32.dll en la carpeta bin del Borland)
implib.exe ACE32.lib ACE32.dll
Aqui se crea la ACE32.lib que debes incluir y ademas incluir
la RDDADS.Lib que viene en FW.
El el PRG principal poner
RddSetDefault("ADS")
SET Filetype to ADT
Request ADS,ADSKeyCount,ADSKeyNo,OrdKeyCount,OrdKeyNo, AdsGetRelKeyPos, AdsSetRelKeyPos
rddRegister( "ADS", 1 )
rddsetdefault( "ADS" )
SET SERVER LOCAL
AdsRightsCheck( .F. )
Con esto ya estarías pronto para compilar con ADS.
---------------------------------------------------------------------
Copiar en el directorio donde estan las DBF los siguientes archivos que estan el directorio donde instalastes ARC
Ace32.dll, adsloc32.dll, axcws32.dll, aicu32.dll (no se para que) y ansi.chr.
Hay una forma mejor que es con el diccionario de datos de ADS, pero
lamentablemente no se como usarlo, quizás alguien nos de luz en este tema.
Asi los estoy usando yo y no he tenido problemas.(en modo local).
Saludos
Re: Empezar con ADS modo local
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Sun Jan 30, 2011 5:29 am
by George
>>¿tengo años escuchandolo pero que es realmente ADS?
He aqui algunos extractos del libro "Advantage Database Server: A Developer Guide, 2nd Edition (Jensen and Anderson):
Advantage Database Server (ADS) es un sistema de base de datos relacional mercadeado por la empresa Sybase.
ADS ha estado desde el año 1993, cuando fue introducido para proveer una solucion estable a los desarrolladores de Clipper que estaban cansados de software de bajo desempeño, mucho trafico en sistemas de redes, y corrupcion de indices en las bases de datos basadas en "file-server" como lo es el DBF.
ADS es de alto desempeño y bajo mantenimiento y te permite facilmente desarrollar y desplegar sistemas 'Cliente/Servidor' asi como aplicaciones con databases en el internet.
A diferencia de otros databases tales como MS-SQL y Oracle, ADS no es el tradicional database server basado en SQL.
ADS es un ISAM (Indexed Sequential Access Method) "relational database server", el cual hace uso intensivo de indices, permitiendo ejecutar busquedas a alta velocidades, filtros y uniones de tablas.
Hay que hacer notar que aunque ADS es un ISAM server este provee soporte para el lenguaje SQL.
Con ADS puedes usar el lenguaje SQL standard para manejar practicamente cualquier consulta relacionada al manejo de tu database.
A diferencia de los database tradicionales ISAM, ADS soporta muchas de las caracteristicas de los databases basados en SQL.
Por ejemplo ADS soporta 'Views", "Stores Procedures", 'Triggers", "Referencial Integrity", 'Online Backup", 'Replications", y "Notifications"
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Por mi experiencia te puedo señalar que puedes desarrollar como hasta ahora lo haces con los DBF y con solo insertar unas pocas lineas ya tiene tu Client/Server funcionando.
Esta database es super rapida, he podido manejar tablas con 20 millones de records con facilidad y con rapidez asombrosa.
>>Existe Local y Servidor?
Si existen ambas. La version Local es gratis y la Server es de paga.
Con relacion a la version Server, Sybase te permite tener ADS para un usuario totalmente gratis, y para 5 usuarios te permite usarlo por 30 dias.
>>Es pago>
ver repuesta anterior
>>¿se puede centralizar todos los datos en un servidor no visible para los usuario?
No lo he intentado pero si usas el diccionario de datos puedes encriptar la database y hacerla tambien "password protegida".
Re: Empezar con ADS modo local
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Sun Jan 30, 2011 3:27 pm
by Pedro
He desinstalado el advantage data architecte, y he vuelto a reinstalar el fwh 10.12 el xharbour y el bcc582 he compilado otro programita que tenía, uno de etiquetas y direcciones. Para esta compilación he utilizado la lib que viene con fwh ace32.lib, y las dos dll que vienen en samples ace32.dll y adslock32.dll, el resultado es el mismo, el programa no se inicia y da el error de que no se puede inicializar.
También he comprobado las librerías que se usan en Verce y las que se usan en el buildx.bat y la única diferencia que encuentro son las siguientes:
BUILDX.BAT
dbffpt.lib
hbsix.lib
debug.lib
zlib.lib
hbzip.lib
uuid.lib
rasapi32.lib
nddeapi.lib
psapi.lib
iphlpapi.lib
A excepción de las lib hbsix, debug, zlib, y habzip, que no las uso, ¿para qué se usan uuid, rasapi32, nddeapi, psapi y iphlpapi?
¿Tiene algo que ver que no estén estas librerías para que el programa no arranque?
Re: Empezar con ADS modo local
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Sun Jan 30, 2011 3:32 pm
by QAZWSX2K
gracias george, me parece un paso intermedio facil entre los dbf y el sql y parece facil de implementar, cuando te pregunte:
¿se puede centralizar todos los datos en un servidor no visible para los usuario?
me refiero realmente a donde queda ubicada la base de datos fisicamente, es un carpeta al que un usuario debe tener permisos para verla por explorador por ejemplo, osea pueden llegar a esa carpeta y borrarsela, porque el problema es que con carpetas compartidas esta obligado a darle todos los permisos a todos los usuarios y eso se esta convirtiendo en un problema por ejemplo en windows 7, entonces puede llegar un usuario malintencionado y borrarse cualquier cosa
mi otro pregunta es como paso las dbf a ads, eso es facil o engorroso, bueno creo te estoy molestando demasiado, ya baje los demo por 30 dias y toca es meterle el pecho de una vez
- me imagino el primer paso es trabajarlo como dbf y luego poco a poco ir pasando pequeños subprogramas a sql que ya vi que acepta comandos sql y al modelo diccionario de datos, para luego pasar definitivamente a sql, esto por los costos, tengo clientes con mas de 50 usuarios y seria costosisimo el ads pero para otros mas pequeños si se podria
Re: Empezar con ADS modo local
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Sun Jan 30, 2011 3:42 pm
by Ruben Fernandez
Hola Pedro: Aqui te dejo unos datos de como lo hago.
Pedro,yo uso xMate. Este es el archivo de proyecto que uso.
Uso FWH, Harbour y Borland 582.
Mas abajo te dejo el archivo .ENV que es el que se usa para xMate.(le digo a xMate que voy a usar)
[Version]
Type=xMate
Number=1.15
[Info]
Type=Executable
Architecture=BorFWHADS2
Include=C:\FWH\include;%C_INSTALL%\include;C:\Harbour\include
Define=
[xMate]
Create Map/List File=No
[Project]
Run=
Params=
Final Path=%HOME%
Maintain LNK=Yes
Default Type=1
Error log=
[Data Path]
Dbf=
[Files]
%HOME%\ZaF3.PRG=1,.F.,0,0,
%HOME%\jjx.PRG=2,.F.,0,0,
%HOME%\Obj\SBTNH.obj=3,.F.,0,0,
%HOME%\UTILPRN.PRG=4,.F.,0,0,
%HOME%\easyprev.prg=5,.F.,0,0,
%HOME%\CHKDIG.PRG=6,.F.,0,0,
%HOME%\ZLic.prg=7,.F.,0,0,
%HOME%\BIRTHDAY.PRG=8,.F.,0,0,
%HOME%\HPPBRTDY.PRG=9,.F.,0,0,
%HOME%\trbtn2.PRG=10,.F.,0,0,
%HOME%\zaf3ADS.RES=11,.F.,0,0,
%HOME%\control2.prg=12,.F.,0,0,
%C_LIB_INSTALL%\C0W32.OBJ=13,.T.,0,0,
C:\FWH\lib\SBUTTONH.LIB=14,.T.,0,0,
C:\FWH\lib\Fiveh.lib=15,.T.,0,0,
C:\FWH\lib\Fivehc.lib=16,.T.,0,0,
C:\FWH\lib\Ace32.lib=17,.T.,0,0,
%HB_LIB_INSTALL%\hbrtl.lib=18,.T.,0,0,
%HB_LIB_INSTALL%\hbvm.lib=19,.T.,0,0,
%HB_LIB_INSTALL%\gtgui.lib=20,.T.,0,0,
%HB_LIB_INSTALL%\hblang.lib=21,.T.,0,0,
%C_LIB_INSTALL%\IMPORT32.LIB=22,.T.,0,0,
%HB_LIB_INSTALL%\hbmacro.lib=23,.T.,0,0,
%HB_LIB_INSTALL%\hbcommon.lib=24,.T.,0,0,
%HB_LIB_INSTALL%\hbpp.lib=25,.T.,0,0,
%C_LIB_INSTALL%\CW32.LIB=26,.T.,0,0,
%HB_LIB_INSTALL%\hbwin.lib=27,.T.,0,0,
%HB_LIB_INSTALL%\hbcpage.lib=28,.T.,0,0,
%HB_LIB_INSTALL%\hbnf.lib=29,.T.,0,0,
%C_LIB_INSTALL%\psdk\msimg32.lib=30,.T.,0,0,
%C_LIB_INSTALL%\psdk\odbc32.lib=31,.T.,0,0,
%C_LIB_INSTALL%\psdk\nddeapi.lib=32,.T.,0,0,
%C_LIB_INSTALL%\psdk\iphlpapi.lib=33,.T.,0,0,
%C_LIB_INSTALL%\psdk\rasapi32.lib=34,.T.,0,0,
%HB_LIB_INSTALL%\hbct.lib=35,.T.,0,0,
%HB_LIB_INSTALL%\hbcplr.lib=36,.T.,0,0,
%HB_LIB_INSTALL%\hbpcre.lib=37,.T.,0,0,
%HB_LIB_INSTALL%\hbrdd.lib=38,.T.,0,0,
%HB_LIB_INSTALL%\hbsix.lib=39,.T.,0,0,
%HB_LIB_INSTALL%\rddcdx.lib=40,.T.,0,0,
%HB_LIB_INSTALL%\rddfpt.lib=41,.T.,0,0,
%HB_LIB_INSTALL%\rddnsx.lib=42,.T.,0,0,
%HB_LIB_INSTALL%\rddntx.lib=43,.T.,0,0,
%HB_LIB_INSTALL%\rddads.lib=44,.T.,0,0,
ARCHIVO BORLFWHADS.ENV
[Environment]
Description 1= Harbour, Fivewin Harbour, CodeGear , Librerías externas (TSButton)
Description 2=
Description 3=
PRG Compiler ver=
C compiler ver=
Subsystem=
Author=Ruben Fernandez
Last update=10/08/2010
[Advanced]
Command types=1,1,1,1,1,1,1,1,1
[Harbour]
HB_INSTALL=C:\Harbour
HB_COMMAND=%HB_BIN_INSTALL%\Harbour.Exe %PRG% /m /n0 /es2 /a /v /i%
Option prefix=/
[C]
C_INSTALL=C:\BCC582
C_COMP_COMMAND=%C_BIN_INSTALL%\Bcc32.Exe -M -c -O2 -tW -v- -X %CRLF%-DHB_FM_STATISTICS_OFF %CRLF%-DHB_NO_DEFAULT_API_MACROS %CRLF%-DHB_NO_DEFAULT_STACK_MACROS %CRLF%-DHB_OS_WIN_32 %CRLF%-I%C_INC_INSTALL%;%HB_INC_INSTALL% -n%HOME%\Obj %C%
C_LIB_COMMAND=%C_BIN_INSTALL%\TLib.Exe %LIB% /P512 @%RSP% , %LST%
C_LINK_COMMAND=%C_BIN_INSTALL%\iLink32.Exe -Gn -aa -Tpe -s @%LNK%
C_RC_COMMAND=%C_BIN_INSTALL%\Brc32.Exe -r -fo%RES% %RC%
C_DLL_COMMAND=
Option prefix=-
[User]
POSTEXE_COMMAND=
POSTLIB_COMMAND=
POSTDLL_COMMAND=
[Files]
%C_LIB_INSTALL%\C0W32.OBJ=1
C:\FWH\lib\SBUTTONH.LIB=2
C:\FWH\lib\Fiveh.lib=3
C:\FWH\lib\Fivehc.lib=4
C:\FWH\lib\Ace32.lib=5
%HB_LIB_INSTALL%\hbrtl.lib=6
%HB_LIB_INSTALL%\hbvm.lib=7
%HB_LIB_INSTALL%\gtgui.lib=8
%HB_LIB_INSTALL%\hblang.lib=9
%C_LIB_INSTALL%\IMPORT32.LIB=10
%HB_LIB_INSTALL%\hbmacro.lib=11
%HB_LIB_INSTALL%\hbcommon.lib=12
%HB_LIB_INSTALL%\hbpp.lib=13
%C_LIB_INSTALL%\CW32.LIB=14
%HB_LIB_INSTALL%\hbwin.lib=15
%HB_LIB_INSTALL%\hbcpage.lib=16
%HB_LIB_INSTALL%\hbnf.lib=17
%C_LIB_INSTALL%\psdk\msimg32.lib=18
%C_LIB_INSTALL%\psdk\odbc32.lib=19
%C_LIB_INSTALL%\psdk\nddeapi.lib=20
%C_LIB_INSTALL%\psdk\iphlpapi.lib=21
%C_LIB_INSTALL%\psdk\rasapi32.lib=22
%HB_LIB_INSTALL%\hbct.lib=23
%HB_LIB_INSTALL%\hbcplr.lib=24
%HB_LIB_INSTALL%\hbpcre.lib=25
%HB_LIB_INSTALL%\hbrdd.lib=26
%HB_LIB_INSTALL%\hbsix.lib=27
%HB_LIB_INSTALL%\rddcdx.lib=28
%HB_LIB_INSTALL%\rddfpt.lib=29
%HB_LIB_INSTALL%\rddnsx.lib=30
%HB_LIB_INSTALL%\rddntx.lib=31
%HB_LIB_INSTALL%\rddads.lib=32
Espero que te sirva.
Saludos.
Re: Empezar con ADS modo local
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Sun Jan 30, 2011 6:08 pm
by George
QAZWSX2K
Tengo un cliente con cuatro terminales conectadas a un server MS-2008 y desde las terminales no se pueden conectar al server de forma directa ni ver los folders del mismo.
Solo la aplicacion que le desarrolle, despues que le dimos los permiso, se puede conectar al folder del database en el server.
De hecho hasta para instalar un software en una de las terminales se requiere un password.
Por supuesto si alguien quiere usar el computador donde esta el server tiene que conocer el password del mismo.
Pasar tus archivos de DBF a ADS (formato ADT) es facil. Es casi como pasar de un DBF a otro DBF.
Solo debes tener cuidados con los indices ya que, por ejemplo, expresiones en indices con funciones desarrolladas por ti no funciona en ADS debido a su naturaleza Client/Server.
Si vas a pasar una tabla DBF, que contenga digamos cientos de miles de records, te sugiero que grabes la tabla DBF como CSV y luego pases el CSV al archivo ADT (el formato del ADS) por medio de la instruccion APPEND FROM "ARCHIVO.CSV" DELIMITED WITH (,). De esta forma es mucho mas rapido.
Con relacion al costo, no estoy seguro cuanto costaria la licencia para 50 usuario pero creo seria alrededor de $6,500 una sola vez, ya que no hay pago anual por licencia, mantenimiento ni tampoco hay que pagar por certificacion ni entrenamiento de "Database Administrator".
Creo que cualquier empresa que use un sistema con 50 usuarios no debiera poner reparos en pagar el costo de la licencia de ADS ya que el rendimiento, la rapidez y la seguridad de su informacion al usar ADS Client/Server, tendra una valor incalculable para dicha empresa.
Saludos,
George[*]