En alguna ocasión hemos necesitado conectarnos a bases de datos externas, de otros Axaptas o incluso de otras aplicaciones.
Hasta ahora (yo por lo menos) siempre lo había hecho mediante las clases LoginProperty, SQLConnection, ResultSet, Statement ... etc
Después de usarlas en varias ocasiones, mi conclusión es que son muy poco tolerantes a fallos, incomodas de usar e inestables.
Pero ... buscando y rebuscando ... hace un tiempo encontramos otras clases que incorpora Axapta mediante las que podemos interactuar con otras bases de datos de forma más cómoda y segura (parece un anuncio de compresas )
Como usar las clases CCADO en Axapta para interactuar con otras bases de datos.
Básicamente disponemos de 3 clases principales :
- CCADOConnection
- CCADORecordSet
- CCADOCommand
CCADOConnection
Nos permite establecer una conexión con el servidor de base de datos que deseemos. Establece un canal de comunicación que luego usaran los ADORecordSet y los ADOCommand para ejecutar las diferentes instrucciones que indiquemos.
La forma de indicar al ADOConnection los parametros de la conexión es mediante el ConnectionString.
¿ Como creo un ConnectionString ?
Existen diversos programas que pueden ayudarnos a crear un ConnectionString, pero ... creo que la forma más fácil de crearlo es la siguiente :
1. Abrimos el explorador de Windows
2. En la carpeta que más nos guste, le damos al botón de la derecha del ratón, opción nuevo, subopción Documento de texto.
3. Ahora le cambiamos el nombre al archivo que vamos a crear y lo vamos a llamar por ejemplo testcon.udl (importante cambiar la extensión a “udl”)
4. Una vez renombrado, pinchamos doble click sobre el nuevo archivo y nos aparecerá un wizard en el que podremos indicar los parametros de la conexión que deseamos establecer (servidor, base de datos ...). Recordad seleccionar el proveedor de datos en la primera solapa del wizard.
5. Al finalizar el wizard, podemos abrir el archivo con el notepad y encontraremos el Connection String en su interior
CCADORecordSet
Lo usamos para ejecutar sentencias SQL de consulta mediante las que podremos leer información de la base de datos a la que nos hemos conectado. Es decir, podremos ejecutar “Select * from ....” y luego recorrer los registros devueltos.
CCADOCommand
A diferencia de la anterior, esta clase nos permite ejecutar sentencias SQL de inserción y/o modificación de datos (la anterior solo nos permite leer datos). Es decir, con esta podemos ejecutar el típico “Insert into ...”.
¿Cómo se usa?
He creado este sencillo job como ejemplo de uso, en mi caso he usado una conexión de tipo SQL Server (SQLOLEDB) y he aprovechado para poder cambiar los parametros de Servidor, Base de datos, usuario y contraseña de forma sencilla.
// Fijaos que he modificado el ConnectionString sustituyendo el servidor, BBDD y otros por %1, %2 ... // para poder reutilizar la conexión con diferentes parametros.
Connection.connectionString(StrFmt('Provider=SQLOLEDB.1;Persist Security Info=False;User ID=%3;Password=%4;Initial Catalog=%2;Data Source=%1'
, '192.162.0.100'// IP o nombre del servidor
, 'TestBBDD'// Nombre de la base de datos
, 'sa'// Usuario
, ''// Password ));
// Abrimos la conexión
Connection.open();
RSet = new CCADORecordSet();
// La sentencia que ejecutaremos
SQL = 'Select * from CustTable';
// Ejecutamos la consulta usando la conexión abierta anteriormente
RSet.open( SQL, Connection );
// Bucle mientras haya registros While(! RSet.EOF()) { // Mostramos el campo AccountNum
info(RSet.fields().itemName('Accountnum').value());
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
Axapta y Dynamics Ax son marcas registradas de Microsoft corporation. Todos los logos y marcas son propiedad de sus respectivos propietarios. Excepto trucosAx.com que este si que es mio :-). (c) 2005 by Manel Querol (Mkz) TrucosAx.com no pertenece ni está asociada a Microsoft corporation. Los fragmentos de código y proyectos importables que aquí se muestren están realizados sobre bancos de pruebas. No nos hacemos responsables de cualquier daño o pérdida de datos que se pudiera originar del hecho de instalar alguno de estos ejemplos en un sistema productivo. Es responsabilidad del usuario ser consciente del impacto que puede ocasionar en sus aplicaciones el uso del código que de aquí extraiga.