Hilo iniciado por Pedro Beltran el 13 de abril de 2012
-
AutorEntradas
-
abril 13, 2012 a las 6:33 pm #13188
Estimados,
Tengo un nuevo reto como me puedo conectar de un formulario del AX a una base de datos externa y realizar una consulta a una tabla para los datos mostrarlos en un grid del formulario del AX y que la base va a estar en el mismo servidor que va a estar la base del AX.
La base de datos del AX esta en el servidor SRVPRUEBA nombre de instancia en el sql igual
La base del AX se llama Dynamic
La base externa se llama PrbInventario y la tabla que desea acceder Inventario
Saludos,
abril 14, 2012 a las 6:45 am #13189Mediante consultas sql?
abril 16, 2012 a las 7:10 pm #13190Si entiendo eso pero como hago la coneccion desde el AX a la base de datos nueva.
abril 17, 2012 a las 5:34 pm #13191Qué versión de AX es?
abril 17, 2012 a las 5:36 pm #13192Que tal Adolfo la version del AX es 2009
abril 19, 2012 a las 9:41 pm #13193Puedes conectar a una base de datos externa por código (hay diferentes artículos en google de cómo hacerlo) y utilizar esa conexión para llenar una tabla temporal (esta tabla SI debe existir en AX, aunque sea temporal). Despues puedes utilizar esta tabla rellenada temporalmente o no para mostrar los datos en el formulario.
Conectar directamente un formulario con una base de datos externa no es posible.
abril 20, 2012 a las 1:02 am #13194Si entiendo eso pero lo que yo quiero es conectarme a una tabla de una base externa realizar un select desde Ax y los resultados de ese query grabarlos en un tabla creada en el dynamic
abril 20, 2012 a las 9:48 am #13195Hay un monton de ejemplos por la web de este tipo de conexión, por ejemplo tienes uno aquí:
http://msdn.microsoft.com/en-us/library/ee677510%28v=ax.50%29.aspx
Saludos.
abril 20, 2012 a las 3:26 pm #13196Gracias José probaré el ejemplo que me envias..
Saludos
abril 20, 2012 a las 11:14 pm #13197He he hecho 2 desarrollos conectandome a BD externas una de MSSQL2005 y otra a Oracle10g. Te paso 2 jobs, estan en un XPO, que hice para hacer pruebas. Uno es utilizando ODBC y otro es con ADO.NET (Business Conector).
- ODBC
Ten en cuenta que para que utilices el ODBC solo lo puedes hacer a 32 bits, si lo vas a estar ejecutando en un cliente a 64 bits no funcionara con ODBC a 64bits, en tu clientes (64x) tienes que agregar el ODBC a 32x, esta opcion es odbcad32.exeque esta en C:\Windows\SysWOW64\
- ADO.NET
Te recomiendo utilizar este. Te paso como utilizarlo con MSSQL en esta liga http://floditt.blogspot.mx/2011/08/using-adonet-with-x.html. En el job que te pase es para Oracle, ya que no lo pude hechar andar con ODBC. En caso de que tu BD se Oracle debes instalarte los drivers ODBC de Oracle para Microsoft, y posteriormente configurar un archivo en una de las carpeta que te instala oracle. Todo esta en el portal de Oracle > Downloads…
Espero te sirva, y espero que comentes tus resultados con la bandera.
Saludos.
PD. “bandera”, en México, quiere decir “amigos”,”cuates”
Adjuntos:
842-SharedProject_jmpConnect2ExternalDataBase.xpo
abril 21, 2012 a las 10:19 am #13198Buen aporte, Juan Carlos. Gracias!
A ver si Pedro nos comenta sus avances.
Saludos.
abril 23, 2012 a las 7:18 pm #13199Estimados envio ejemplo de como me conecte a la base de datos externa adicional tuve que añadir un Update vara validar que la informacion consultada no sea consultada siempre que realice el Select.
LoginProperty loginPropertySelect = new LoginProperty();
ODBCConnection conSelect, conUpdate;
Statement stmtSelect, stmtUpdate;
str sqlSelect, sqlUpdate;
ResultSet resultSet;
;super();
loginPropertySelect.setServer(‘SRVDYN’); //Nombre del Servidor
loginPropertySelect.setDatabase(‘Prueba’); //Nombre Base de Datos
loginProperty.setUsername(‘sa’); //Nombre de Usuario
loginProperty.setPassword(‘sa’); //Password de UsuarioconSelect = new ODBCConnection(loginPropertySelect); //ConectionString a la Base
sqlSelect = “Select Solicitud, TransDate, ItemId, InventSiteId, InventLocationId, Qty, LedgerAccountIdOffset, ” +
“Sucursal, CCosto, LNegocio from InventarioItems Where Bandera = ‘f'”;stmtSelect = conSelect.createStatement();
resultSet = stmtSelect.executeQuery(sqlSelect);while (resultSet.next())
{
this.Solicitud = resultset.getString(1);
this.TransDate = resultset.getDate(2);
this.ItemId = resultset.getString(3);
this.InventSiteId = resultSet.getString(4);
this.InventLocationId = resultset.getString(5);
this.Qty = resultset.getReal(6);
this.LedgerAccountIdOffset = resultset.getString(7);
this.Sucursal = resultset.getString(8);
this.CCosto = resultset.getString(9);
this.LNegocio = resultset.getString(10);
this.insert();conUpdate = new ODBCConnection(loginPropertySelect);
sqlUpdate = StrFmt(“Update InventarioItems Set Bandera = ‘t’ Where TransDate = ‘%1’ and ItemId = ‘%2’ and ” +
“InventSiteId = ‘%3’ and InventLocationId = ‘%4’ and Bandera = ‘f’ and Solicitud = ‘%5′”,
Date2Str(this.TransDate,213,DateDay::Digits2, DateSeparator::Hyphen, DateMonth::Digits2,
DateSeparator::Hyphen, DateYear::Digits4),this.ItemId,this.InventSiteId,this.InventLocationId,
this.Solicitud);stmtUpdate = conUpdate.createStatement();
stmtUpdate.executeUpdate(sqlUpdate);
}Saludos y gracias por su ayuda…
-
AutorEntradas
- Debes estar registrado para responder a este debate.

