Esportare query

di
Anonimizzato12092
il
6 risposte

Esportare query

Ciao ragazzi avrei bisogno di un aiuto...
Ho la necessità di esportare su più file excel un query in base al valore che assume un campo.
Cerco di spiegarmi meglio (semplificando un po' le tabelle.....):
Tabella 1 composta da 2 Campi "id" e "nome_manager"
Tabella 2 composta da 2 campi "id" e "nome_dipendente"
Ho creato una query che lega i due campi "id" in modo tale da associare i manager ai dipendenti.
Ora dovrei esportare la query in modo tale che si crei un file excel per ogni manager con i reltivi dipendenti... Mi piacerebbe automatzzare l'esportazione e non creare manualmente una query "filtrata" per poi esportarla....
Spero di essere stato abbastanza chiaro.....

grazie!

6 Risposte

  • Re: Esportare query

    Ciao.
    Puoi ottenere la cosa in due modi,
    O con una macro, oppure con il VBA
    ti posto il codice in VBA
    Private Sub Comando4_Click()
    On Error GoTo Maschera11_Err
    
        DoCmd.TransferSpreadsheet acExport, 8, "tabella1 query", "c:\prova1", False, ""
    
    
    Maschera11_Exit:
        Exit Sub
    Maschera11_Err:
        MsgBox Error$
        Resume Maschera11_Exit
    End Sub
    Naturalmente è solo esempio.
    Attento perchè il salvataggio in questo caso è diretto, cioè non chiede conferma e necessita dell'indicazione del percorso, (drive:\cartella\nomefile).
  • Re: Esportare query

    Ciao grazie per la risposta!
    credo però che il codice vba che mi ha postato esegua una classica esportazione di query su file.
    Otterrei un unico file excel con tutti i dati. La mia idea invece era quella di ottenere tanti file quanti sono i "manager"
  • Re: Esportare query

    Ciao, esatto.
    Il codice che ho postato è il comando con il quale si esporta in automatico i dati, in questo caso in formato excell.

    Quello che stai richiedendo è naturalmente possibile, ma implica l'uso del VBA in modo articolato.
    Più o meno una quarantina di righe di codice.
    Perchè, analizzando la logica di quello che bisogna fare:
    Ricavare i singoli record
    creare un file ogni volta, o con il nome del manager, oppure in modo incrementale (file1,file2...file100 etc etc)
    riversare il singolo record in questione
    Ci vuole un pochino di tempo per scrivere il codice.
    Eventualmente, saresti in grado di farlo da solo?
    Non è per cattiveria, ma lo scopo di questo forum è sopratutto quello di "insegnare" l'uso di access, evitando, come da regolamento, la pappa pronta.
    Quello che chiedi, è di livello, diciamo, non certo da utenti avanzati, ma nemmeno da principianti.
    Prova ad analizzare il problema e a proporre, diciamo, una tua versione.
    Saremo tutti a disposizione a correggere gli errori e a guidarti sulla strada giusta.
    Se poi hai bisogno immediato, oppure, non hai la possibilità di affrontare la questione, non ti preoccupare, vedremo di trovare una soluzione.

    Intanto propongo la mia logica per la soluzione e chiedo cortesemente ad Alex, che cosa ne pensa, sia in termini di fattibilità, robustezza del codice e velocità prestazionali.
    Io farei:
    creo una matrice,
    seleziono con una prima query il nome del manager e ci popolo la matrice.
    passo singolarmente il nome del manager, uno ad uno, ad una query parametrica e nello stesso ciclo, creo il file, lo salvo etc etc, fino alla fine della matrice creata in precedenza.
    Che ne pensi? O proponi qualcosa di più semplice?

    Grazie.
  • Re: Esportare query

    Grazie per l'idea.. Penso di aver risolto!!
    ho utilizzato un recordset e una query filtrata in base al rs e ciclata... tutto in vba...
    Per ogni ciclo esporto il file e lo nomino in base ai parametri del filtro.
    Proprio come suggerito da mypipe

    L'unico problemino che ho ancora mi rimane è sul file esportato.
    Utilizzando DoCmd.TransferSpreadsheet il file excel generato non è formattato come quando si esegue l'esportazione col comando access.
    Ho quindi implementato il codice creando una funzione che apre il file appena generato, lo formatta come piace a me, lo salva, lo chiude e poi riinizia il ciclo.
    Sono riuscito ad aprire il file, impostare il testo in grassetto nella 1 riga, adattare le colonne in base al testo contenuto salvare e chiudere... ma non riesco a impostare il colore della 1 riga!!!!!
    qualche suggerimento?

    grazie

    forse ho trovato... devo usalre .colorindex?
  • Re: Esportare query

    La logica è giusta, quello che è sbagliato è APRIRE e CHIUDERE e RIAPRIRE... è assurdo, perderai 10secondi...!

    In tutti i modi propongo 2 cose che possono essere usate come spunto di partenza:

    Questo esempio mostra come FORMATTARE un foglio in EXCEL...

    http://forum.masterdrive.it/access-79/access-esportare-dati-in-excel-xml-50060/
    Questo è un codice OTTIMIZZATO per esportare dati in EXCEL, al quale passando il predicato SQL con il criterio WHERE che individua il MANAGER fa già molto...
  • Re: Esportare query

    Grazie Alex e mypipe per i consigli!!!!
Devi accedere o registrarti per scrivere nel forum
6 risposte