collegamento odbc



  • collegamento odbc
    di maxp72 data: 04/05/2015 16:03:45

    Salve ho un problema,
    vorrei riempire un foglio con dei dati provenienti da un db su oracle.
    Tempo fa avevo utilizzato una macro che faceva gia' una cosa del genere, ora ho dovuto modifcarla, ma non ce ne salto fuori.
    Appena lancio la macro mi viene resitituito un errore e non ne capisco il perche' (ho win7).

    la riga incriminata e' :
    Set objMyConn = New ADODB.Connection
    l'errore : Errore di compilazione tipo definito dall'utente non definito.

     
    Sub IMPORT_Dati_da_ODBC()
    
            Dim objMyConn
            Dim objMyRecordset
            Dim objMyCmd
            
    Sheets("Foglio2").Select
    Range("A1").Select
    Cells.Delete
    
        'Declare variables'
        Set objMyConn = New ADODB.Connection
            
        'Open Connection'
            objMyConn.ConnectionString = "Provider=OraOLEDB.Oracle.1;Data Source=db1;User ID=user;Password=pwd;"
            objMyConn.Open
            
    Do
    Set objMyCmd = New ADODB.Command
    Set objMyRecordset = New ADODB.Recordset
    ActiveCell.Range("A1").Select
    
        'Set and Excecute SQL Command'
        Set objMyCmd.ActiveConnection = objMyConn
    
            objMyCmd.CommandText = "SELECT DISTINCT H.CONTO_ID, C.DESTINA, J.TIPO_DOC, J.DATA_REG, k.cliente, sum(d.IMPORTO_E) * h.segno, S.RAGIONE_SOCIALE1 || S.RAGIONE_SOCIALE2 forn, H.CAUSALE, j.data_doc from t_commessemagia  k, CA_MOVIMENTO_COR H, CA_MOVIMENTO_TES J, CA_MOV_COIN D, CA_MOV_COIN_DEST C, CA_CONTO S where H.REG_ID = j.REG_ID and k.comm(+) = C.DESTINA AND S.CONTO_ID = H.CONTROPARTITA_ID AND D.MOV_COIN_ID = C.MOV_COIN_ID AND C.TIP_DES = '2' AND D.MOV_ID = H.MOV_ID AND H.CONTO_ID like '00145%' and  J.DATA_REG >= to_date('01/01/2014','DD/MM/RRRR') and  J.DATA_REG <= to_date('31/03/2014','DD/MM/RRRR') group by H.CONTO_ID, C.DESTINA, J.TIPO_DOC, J.DATA_REG, k.cliente,h.segno, S.RAGIONE_SOCIALE1 || S.RAGIONE_SOCIALE2, H.CAUSALE, J.data_doc ORDER BY C.DESTINA ASC"
    
            objMyCmd.CommandType = adCmdText
            objMyCmd.Execute
    
        'Open Recordset'
            Set objMyRecordset.ActiveConnection = objMyConn
            objMyRecordset.Open objMyCmd
    
        'Copy Data to Excel' in COLONNA "O"
           ' ActiveCell.Offset(0, 14).CopyFromRecordset (objMyRecordset)
    'Else
    'End If
    Loop Until ActiveCell.Value = ""
    
            objMyConn.Close
            
            Set objMyConn = Nothing
            Set objMyRecordset = Nothing
            Set objMyCmd = Nothing
    
    End Sub



  • di maxp72 data: 06/05/2015 16:32:14

    nessuno?
    possbile manchi qualche componente aggiuntivo?
    tutte le macro che trovo in giro di collegamento odbc e che provo mi danno errori...



  • di paolomath data: 06/05/2015 17:46:53

    Carica le librerie ADO:

    Microsoft ActiveX Data Object 6.1 Library

    Bye.



  • di maxp72 data: 07/05/2015 08:21:38

    ok perfetto caricate le librerie. ora la macro non da' errore.
    Grazie mille paolomath.

    Secondo quesito.
    sembra che la macro non abbia fatto nulla...
    come faccio a fargli compilare nel foglio attivo i dati della "select" che ho gia' scritto sopra nel comando "objMyCmd.CommandText =...."



  • di maxp72 data: 07/05/2015 08:41:56

    ok sono riuscito a scrivere tutti i dati, e' bastato togliere il commento dal comando
    sotto.

    pero' mi ha scritto solo i dati e non le intestazioni delle colonne.
    come posso fare per fargli scrivere le intestazioni, non riesce a recuperare lui le intestazioni dalla select?

     
        'Copy Data to Excel' 
            ActiveCell.Offset(1, 0).CopyFromRecordset (objMyRecordset)



  • di maxp72 data: 07/05/2015 16:25:09

    ok per le intestazioni mi sono arrangiato, le ho aggiunte a mano nella macro.

    in win7 tutto ok la macro funziona, ora pero' ho dovuto darla ad una persona che ha windows xp e la macro si blocca perche' manca la libreria :
    Microsoft ActiveX Data Object 6.1 Library
    come faccio per fargliela usare in win xp?, ho provato a settargli la libreria
    Microsoft ActiveX Data Object 2.8 Library
    ma la macro si blocca all'istruzione sotto, qualcuno sa dirmi come far girare tutto anche su winxp
    Grazie

     
            'Copy Data to Excel'
                ActiveCell.Offset(1, 0).CopyFromRecordset (objMyRecordset)



  • di maxp72 data: 08/05/2015 10:16:29

    nello specifico l'errore e':

    errore di run-time '2147467259 (80004005):