1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Conectar Banco Oracle com um programa em PROGRESS

Discussão em 'EMS , HCM e Totvs 11' iniciado por marcosflizi, Janeiro 27, 2016.

  1. marcosflizi

    marcosflizi Membro Participativo

    Segue o fonte abaixo de como eu fiz:

    DEFINE VARIABLE ObjRecordSet AS COM-HANDLE NO-UNDO.
    DEFINE VARIABLE ObjConnection AS COM-HANDLE NO-UNDO.
    DEFINE VARIABLE ObjCommand AS COM-HANDLE NO-UNDO.
    DEFINE VARIABLE ODBC-DSN AS CHARACTER NO-UNDO.
    DEFINE VARIABLE ODBC-SERVER AS CHARACTER NO-UNDO.
    DEFINE VARIABLE ODBC-USERID AS CHARACTER NO-UNDO.
    DEFINE VARIABLE ODBC-PASSWD AS CHARACTER NO-UNDO.
    DEFINE VARIABLE ODBC-QUERY AS CHARACTER NO-UNDO.
    DEFINE VARIABLE ODBC-STATUS AS CHARACTER NO-UNDO.
    DEFINE VARIABLE ODBC-RECCOUNT AS INTEGER NO-UNDO.
    DEFINE VARIABLE ODBC-NULL AS CHARACTER NO-UNDO.
    DEFINE VARIABLE ODBC-CURSOR AS INTEGER NO-UNDO.
    DEFINE VARIABLE cError AS CHARACTER FORMAT "X(100)" NO-UNDO.
    DEFINE VARIABLE pc-erro AS CHARACTER FORMAT "X(100)" NO-UNDO.
    DEFINE TEMP-TABLE tt-colaborador NO-UNDO
    FIELD cd_matricula AS CHARACTER
    FIELD id_ativo AS CHARACTER
    FIELD login AS CHARACTER.
    {utp/ut-liter.i N’o_foi_possvel_estabelecer_a_conex’o_com_o_banco_para_receber_os_dados_do_Colaborador}
    assign cError = trim(return-value).
    /* Create the connection object for the link to SQL */
    CREATE "ADODB.Connection" ObjConnection.
    /* Create a recordset object ready to return the data */
    CREATE "ADODB.RecordSet" ObjRecordSet.
    /* Create a command object for sending the SQL statement */
    CREATE "ADODB.Command" ObjCommand.
    /* Change the below values as necessary */
    ASSIGN
    ODBC-DSN = "ECMDEV"
    ODBC-SERVER = "ECMDEV"
    ODBC-USERID = "ECMDEV"
    ODBC-PASSWD = "ecmdev"
    ODBC-QUERY = " SELECT colaborador.cd_matricula, colaborador.id_ativo, colaborador.login" +
    " FROM colaborador".
    /* Open up the connection to the ODBC Layer */
    ObjConnection:Open ( "data source=" + ODBC-DSN + ";server=" + ODBC-SERVER,
    ODBC-USERID,
    ODBC-PASSWD,
    0 ) NO-ERROR.
    /* Check for connection errors */
    IF ( ERROR-STATUS:NUM-MESSAGES > 0 ) THEN DO:
    ODBC-STATUS = cError + ".".

    ASSIGN pc-erro = ODBC-STATUS.
    END.
    ELSE DO:
    ASSIGN ObjCommand:ActiveConnection = ObjConnection
    ObjCommand:CommandText = ODBC-QUERY
    ObjCommand:CommandType = 1 /* adCmdText */
    ObjConnection:CursorLocation = 3 /* adUseClient */
    ObjRecordSet:CursorType = 3 /* adOpenStatic */
    ObjRecordSet = ObjCommand:EXECUTE(OUTPUT ODBC-NULL, "", 32 )
    ODBC-RECCOUNT = ObjRecordSet:RecordCount.
    /* Have we returned any rows ? */
    IF ( ODBC-RECCOUNT > 0 ) AND NOT ( ODBC-RECCOUNT = ? )
    THEN DO:
    ObjRecordSet:MoveFirst NO-ERROR.
    DO WHILE ODBC-CURSOR < ODBC-RECCOUNT:
    CREATE tt-colaborador.
    ASSIGN tt-colaborador.cd_matricula = ObjRecordSet:FIELDS ("cd_matricula"):VALUE
    tt-colaborador.id_ativo = ObjRecordSet:FIELDS ("id_ativo"):VALUE
    tt-colaborador.login = ObjRecordSet:FIELDS ("login"):VALUE.
    ASSIGN ODBC-CURSOR = ODBC-CURSOR + 1.
    ObjRecordSet:MoveNext NO-ERROR.
    END. /* retrieved a single data row */
    END. /* retrieved all data rows */
    /* Close the ADO connection */
    ObjConnection:Close no-error.
    END. /* The connection opened correctly */
    /* Don't forget to release the memory!! */
    RELEASE OBJECT ObjConnection NO-ERROR.
    RELEASE OBJECT ObjCommand NO-ERROR.
    RELEASE OBJECT ObjRecordSet NO-ERROR.
    ASSIGN ObjConnection = ? ObjCommand = ? ObjRecordSet = ?.
    FOR EACH tt-colaborador NO-LOCK.
    DISP tt-colaborador WITH FRAME a WIDTH 300 DOWN stream-io.
    END.
  2. marcosflizi

    marcosflizi Membro Participativo

    Segue arquivo com o exemplo

    Arquivos Anexados:

  3. anascimento

    anascimento Sem Pontuação

    Sim Marcos.
    Nesse caso, conforme esse código, é necessário instalar/configurar o Drive ODBC.
    Aqui tenho um programa que conecta com SQLServer usando um ODBC.
  4. julianfiglioli

    julianfiglioli Membro Participativo

    Este tipo de conexão dispensa o uso da licença Dataserver for Oracle?
  5. magsoa

    magsoa Sem Pontuação

    Bom dia ANASCIMENTO, você pode passar este código que você tem desenvolvido ??

Compartilhe esta Página