Sig



  • Sig
    di Santi Colosi (utente non iscritto) data: 31/08/2012 10:52:27

    Buongiorno, da un libro ho letto questa sub che permetterebbe di estrapolare dati dal db northwind. Ho voluto eseguire le istruzioni poichè mi interessa applicarla ad una mia applicazione personale. Purtroppo mi da un errore di tipo: "Errore generali di ODBC", in particolare il debugger mi segnala l'errore evidenziando in giallo l'ultima istruzione ovvero: ".Refresh BackgroundQuery:=False". Potreste per favore aiutarmi? la sub è quella che segue, grazie anticipate.

     
    Private Sub CommandButton1_Click() 'la command chiaramente è incorporata in una userform
    With ActiveSheet.QueryTables.Add(Connection:=Array("ODBC;DSN=Database di Microsoft Access;DBQ= C:ProgrammiMicrosoft OfficeOfficeSamplesNorthwind.mdb;DefaultDir=c:ProgrammiMicrosoft"), Destination:=Range("A1"))
    .CommandText = Array("select 'Dettagli ordini'. IDOrdine,'Dettagli Ordini'.IDProdotto,'Dettagli ordini'.PrezzoUnitario,'Dettagli ordini'.Quantità,'Dettagli ordini'.Sconto" & Chr(13) & "" & Chr(10) & "from 'c:ProgrammiMicrosoft OfficeOfficeSamplesNorthwind'.Dettagli ordini  Dettagli ordini")
    .Refresh BackgroundQuery:=False
    End With
    End Sub



  • di Vecchio Frac data: 31/08/2012 13:13:24

    Hai provato a registrare le operazioni che ti servono con il registratore di macro?
    Al di là dell'esempio, che se estrapolato dal contesto potrebbe avere problemi di adattabilità (come hai sperimentato)), prova a descrivere il tuo problema specifico così troviamo una soluzione più corretta :)





  • di Vecchio Frac data: 31/08/2012 13:14:16

    E per cortesia cerca di indicare un oggetto più esplicativo, così anche eventuali ricerche in archivio possono essere più fruttuose.





  • di Vecchio Frac data: 31/08/2012 15:12:39

    Con che versione di Excel stai lavorando? Stai eseguendo macro create per versioni di Excel di sistemi operativi diversi?
    Le origini dati ODBC sono diverse per esempio tra Windows e Mac. Questo messaggio di errore può verificarsi se si dispone di una macro creata Excel 98 per Macintosh, e si esegue in Microsoft Excel 97 per Windows. Poiché i nomi dei driver ODBC forniti con questi due Excel sono diversi, la macro può lavorare su una piattaforma, ma non su altre.
    Se la macro deve per forza girare su sistemi diversi, un workaround prevede di scrivere due distinte istruzioni di connessione a ODBC che verifichi prima su quale piattaforma sta girando Excel con una cosa del tipo "If InStr(opsys, "Windows") > 0 Then ... ".

    Poiché però ti stai collegando ad Access è semplicemente probabile che la stringa di connessione debba essere scritta in modo diverso. Appena ho un attimo ti recupero la stringa di connessione corretta.

    p.s. stai per caso leggendo "Laboratorio di VBA" di Romano Gallifuoco? :)





  • di Vecchio Frac data: 31/08/2012 15:25:27

    Poiché sono testone, ho fatto subito la prova :)
    Col codice che segue non ho avuto il problema che hai segnalato.
    E' identico al tuo, leggermente adattato, sia nel percorso del file di prova (ovviamente: ho utilizzato un file di test con una tabella1 e una serie di campi), sia nell'istruzione .CommandText che definisce il comando da eseguire... e tra parentesi, quell'indicare il .Commandtext come una serie di Array è piuttosto bizzarro ;)

    Dopo l'esecuzione in A1 del foglio attivo compare una splendida tabellina di Access con tutte le intestazioni dei campi e i successivi valori, record per record, in colonna.
    Se in Excel scegli Visualizza Barre degli strumenti --> Dati esterni, ti si apre un mondo... puoi pilotare in modo semplice l'inserimento dei dati da una fonte Access, puoi modificare la query, impostarne le diverse proprietà in modo visuale quasi simile al generatore di query di Access.
     
    With ActiveSheet.QueryTables.Add(Connection:=Array("ODBC;DSN=Database di Microsoft Access;DBQ=D	est.mdb;DefaultDir=D:"), Destination:=Range("A1"))
        
            .CommandText = "SELECT * FROM tabella1"
            .Refresh BackgroundQuery:=False
    End With





  • Problema ODBC ACCESS
    di Santi Colosi (utente non iscritto) data: 01/09/2012 06:39:27

    Grazie Vecchio Frac, ho provato le istruzioni che mi hai suggerito con una tabella test di prova ed ho risolto.
    Sì il libro è quello di Romano Gallifuoco, uso office 2000 su Win XP.