Conectar Progress a banco Oracle

Discussão em 'Banco de Dados / Database' iniciado por cmdleandro, Março 22, 2012.

  1. cmdleandro

    cmdleandro Sem Pontuação

    Boa tarde.

    Sou novo no progress e estou tentando fazer a conexão dele com um banco Oracle. Estou encontrando algumas dificuldades, procurei aqui no forum e encontrei um código que parece ser o que presiso:

    Código:
    /* Conexão com o Oracle */
    
    DEFINE VARIABLE ObjConnection    AS COM-HANDLE NO-UNDO.
    DEFINE VARIABLE ObjCommand       AS COM-HANDLE NO-UNDO.
    DEFINE VARIABLE ObjRecordSet     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-NULL        AS CHARACTER NO-UNDO.
    DEFINE VARIABLE ODBC-RECCOUNT    AS INTEGER NO-UNDO.
    DEFINE VARIABLE ODBC-CURSOR      AS INTEGER NO-UNDO.
    
    ASSIGN ODBC-DSN    = " "         /* Oracle ODBC DSN */                              
           ODBC-SERVER = " "            /* The name of the server hosting the Oracle DB and DSN */
           ODBC-USERID = " "       /* The user id for access to the OracleDatabase */
           ODBC-PASSWD = " "         /* Password required by above user-id */
           ODBC-QUERY  = " ". /* Select */
    
    CREATE "ADODB.Connection" ObjConnection.    /* Create the connection object for the link to Oracle */
    CREATE "ADODB.RecordSet" ObjRecordSet.      /* Create a recordset object ready to return the data */
    CREATE "ADODB.Command" ObjCommand.          /* Create a command object for sending the SQL statement */
    
    ObjConnection:OPEN ("data source=" + ODBC-DSN + ";server=" + ODBC-SERVER, ODBC-USERID, ODBC-PASSWD, 0) NO-ERROR.
    
    IF (ERROR-STATUS:NUM-MESSAGES > 0) THEN DO:
        ODBC-STATUS = "Error: Could not establish connection.".
        RETURN.
    END.
    
    ELSE DO: /* informações em http://www.w3schools.com/ado/prop_comm_commandtype.asp */
    ObjCommand:ActiveConnection = ObjConnection.
    ObjCommand:CommandType = 1.             /* adCmdText */
    ObjCommand:CommandText = ODBC-QUERY.
    ObjConnection:CursorLocation = 3.       /* adUseClient */
    ObjRecordSet:CursorType = 3.            /* adOpenStatic */
    ObjRecordSet = ObjCommand:Execute(OUTPUT ODBC-NULL, "", 32). 
    ODBC-RECCOUNT = ObjRecordSet:RecordCount. 
    ODBC-CURSOR = 0.
    
    /* Retorno do select */
    MESSAGE ObjRecordSet:FIELDS ("qtde"):VALUE VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
    
    END.
    Tentei colocar os dados que possuo, mas não rodou, minha dúvida é:

    O que colocar nessas 2 linhas de código:
    Código:
    ASSIGN ODBC-DSN    = " "         /* Oracle ODBC DSN */                              
           ODBC-SERVER = " "            /* The name of the server hosting the Oracle DB and DSN */
    No ODBC-SERVER coloquei o ip do servidor, mas pelo comentário preciso colocar o DSN junto, como ficaria ?

    Meu Pc: Windows 7 x64, Progress 10.1B.

    Obrigado.
  2. Agnaldo

    Agnaldo Membro Ativo

    Leandro, é provavel que voce tenha o Provision aí.
    Como voce não parece ter o DataServer Progress para Oracle, use a licença do DataServer ODBC que acompanha o Provision. Fica bem mais simples (e limpo) que ADO.
    Veja a documentação de uso do Dataserver para tal.
  3. cmdleandro

    cmdleandro Sem Pontuação

    Agnaldo, obrigado pela ajuda.

    Tenho o Provision, se puder me acompanhar nos passos feitos...

    Fui em Data Administration - DataServer - ORACLE Utilities - Create DataServer Schema
    Logical Database Name = "Nome da database" - Oracle Version = "10"

    Depois em Database - Connect
    Network = TCP - Host Name = "ip do servidor" - Service Name = "XE" - User ID = "usuário" - Password = "senha"

    Me apresenta o seguinte erro:
    Agradeço pela ajuda.
  4. Agnaldo

    Agnaldo Membro Ativo

    Leandro, desculpe, Dataserver não é muito minha praia.
    Dá um olhada na documentação que deve dar uma luz.
  5. Agnaldo

    Agnaldo Membro Ativo

    Ah, mas voce cadastrou a porta "XE" lá no services?
    Em vez de usar o nome, tente usar o numero da porta (serviço).
  6. Agnaldo

    Agnaldo Membro Ativo

    E ainda... o Dataserver ODBC usa o ODBC, voce precisa cadastrar, no ODBC da máquina, o datasource.

Compartilhe esta Página