Crear una cuenta
Inicio Buscar Foros Chat Downloads Login
 [Login]
Foros
Ir a los foros 

Menú Trucos Ax
 Inicio(Noticias) :
 Inicio
 Enviar Noticias
 Archivo de noticias
 Buscar
 Temas

 Miembros :
 Lista de miembros
 Tu Cuenta(Regístrate)

 Comunidad :
 Chat

 Foros

 Links

 Downloads

 Estadísticas :
 Estadísticas
 Top 10
 Encuestas

 Otros Servicios :
 Publicidad


 Miscelanea :
Añadir a favoritos
Contactar


Hemos recibido

impresiones desde Diciembre 2005


 Enlázanos :
Copia el código siguiente en tu web para enlazarnos :


Trucos Ax


Mensajes rápidos

Sólo los usuarios registrados pueden escribir login o crear una cuenta.

Trucos
Ir a trucos programación
Ir a trucos consultoría

AxSearch

AxSearch
Es un motor de búsqueda
específico sobre temas
de Axapta (Dynamics Ax)

Anuncios

MorphxIT


Mapa

¿De donde venimos?
Ubicación de visitantes de esta página

Webs Amigas
[axapta-links.com] - The startpage for Axapta
DaxGuy


Fred Shen

Comunidad Ax
Conunidad AX

Anuncios



Trucos Ax: Foros

Trucos Ax :: View topic - Clases CCADO
 Forum FAQForum FAQ   SearchSearch   UsergroupsUsergroups   ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Clases CCADO

 
Post new topic   Reply to topic    Trucos Ax Forum Index -> Trucos desarrollo
View previous topic :: View next topic  

¿Cómo valoras este truco (1/5)?
5
100%
 100%  [ 4 ]
4
0%
 0%  [ 0 ]
3
0%
 0%  [ 0 ]
2
0%
 0%  [ 0 ]
1
0%
 0%  [ 0 ]
Total Votes : 4

Author Message
Manekaze
Site Admin
Site Admin


Joined: Dec 02, 2005
Posts: 358

PostPosted: Mon Oct 02, 2006 12:09 pm    Post subject: Clases CCADO Reply with quote

//**********************************************************
// Tipo : Desarrollo
// Titulo : Clases CCADO
// Codigo : TD0013
// Keywords : Programacion, Axapta 3.0
// Sub-keywords : ADO, Conexión datos, SQL, CCADOConnection
// , CCADORecordSet, CCADOCommand
//**********************************************************

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 Razz)

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 Smile



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.

x++:

static void Tutorial_CCADO(Args _args)
{
 CCADOConnection Connection;

 str SQL;
 CCADORecordSet RSet;
 CCADOCommand ADOCom;
 ;

  Connection = new CCADOConnection();

  // 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());

   // Siguiente registro
   RSet.moveNext();
  }

//*************************************************

// Ahora el ADOCommand
 ADOCom = new CCADOCommand();

 // Le asociamos la conexión abierta
 ADOCom.activeConnection(Connection);

 // Preparamos una sentencia SQL de modificación de datos
 SQL = "delete CustTable where AccountNum = '%1'";

 // Ejecutamos la sentencia - En teoría borraremos el registro 'cli0001'
 ADOCom.commandText(StrFmt(SQL,'cli0001'));

 ADOCom.execute();

}


Creo que el código está bastante claro y comentado ...

Saludos,

Mkz.
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    Trucos Ax Forum Index -> Trucos desarrollo All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
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

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©

 
Trucos Axapta 
Comunidad aprobada por :
Microsoft corp. MVP Logo


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.