Como conectarme del Ax a una base de datos externa

Hilo iniciado por Pedro Beltran el 13 de abril de 2012

Viendo 12 entradas - de la 1 a la 12 (de un total de 12)
  • Autor
    Entradas
  • #13188
    RangoPedro BeltranPedro Beltran
    Participante
    PARTICIPANTE
    1.049 Rincoins

    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,

     

    #13189
    RangoXBBXBB
    Participante
    PARTICIPANTE
    1.049 Rincoins

    Mediante consultas sql?

    #13190
    RangoPedro BeltranPedro Beltran
    Participante
    PARTICIPANTE
    1.049 Rincoins

    Si entiendo eso pero como hago la coneccion desde el AX a la base de datos nueva.

    #13191
    RangoAdolfo CastilloAdolfo Castillo
    Participante
    PARTICIPANTE
    1.250 Rincoins

    Qué versión de AX es?

    #13192
    RangoPedro BeltranPedro Beltran
    Participante
    PARTICIPANTE
    1.049 Rincoins

    Que tal Adolfo la version del AX es 2009

    #13193
    RangoJosé Antonio EstevanJosé Antonio Estevan
    Participante
    COLABORADOR
    12.848 Rincoins

    Puedes 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.

    #13194
    RangoPedro BeltranPedro Beltran
    Participante
    PARTICIPANTE
    1.049 Rincoins

    Si 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

     

    #13195
    RangoJosé Antonio EstevanJosé Antonio Estevan
    Participante
    COLABORADOR
    12.848 Rincoins

    Hay 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.

    #13196
    RangoPedro BeltranPedro Beltran
    Participante
    PARTICIPANTE
    1.049 Rincoins

    Gracias José probaré el ejemplo que me envias..

    Saludos

    #13197
    RangoJuan Carlos Manjarrez PeraltaJuan Carlos Manjarrez Peralta
    Participante
    PARTICIPANTE
    1.449 Rincoins

    He 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

    #13198
    RangoJosé Antonio EstevanJosé Antonio Estevan
    Participante
    COLABORADOR
    12.848 Rincoins

    Buen aporte, Juan Carlos. Gracias!

    A ver si Pedro nos comenta sus avances.

    Saludos.

    #13199
    RangoPedro BeltranPedro Beltran
    Participante
    PARTICIPANTE
    1.049 Rincoins

    Estimados 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 Usuario

        conSelect = 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…

Viendo 12 entradas - de la 1 a la 12 (de un total de 12)
  • Debes estar registrado para responder a este debate.
Carrito de compra