Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

    [access] - esportare query da form in excel

    Salve. Ho l'ennesimo problema con access.
    Dopo averci provato tutto il giorno mi trovo di nuovo costretto a chiedere il vostro aiuto.
    In pratica vorrei inviare i dati derivanti da una query generata dinamicamente tramite form ad excel.
    Ho trovato il metodo TransferSpreadsheet però ho diversi interrogativi.
    Punto primo. A quanto ho capito tale metodo funziona solo su query preregistrate.
    La query1 di prova è una semplice

    select * from nomi

    ho notato che se anzichè la query salvata provo a passare la stessa query come stringa, mi viene restituito un "errore di run-time 3011 Il modulo di gestione di database Jet non è riuscito a trovare l'oggetto "select * from nomi" ".
    Ciò ovviamente per me è un grosso problema perchè la query la dovrei costruire al volo in base ai parametri scelti dall'utente.

    Punto secondo. Poichè il database si trova all'interno di una lan vorrei sapere se è possibile non salvare a priori il file generato ma semplicemente aprirlo e poi lasciar decidere al singolo utente se salvarlo o meno.

    codice:
    Private Sub Comando3_Click()
    'Dim strSQL As String
    'strSQL = "select * from nomi"
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "query1", "c:\documents and settings\utente\desktop\prova.xls", True
    
    Dim stLink As String
    Dim ctl As CommandButton
    
    stLink = "c:\documents and settings\utente\desktop\prova.xls"
    
        Set ctl = Me!Comando3
        With ctl
            .Visible = True
            .HyperlinkAddress = stLink
            .Hyperlink.Follow
        End With
    End Sub
    Grazie e buona domenica.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

  3. #3
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    Non ti ho risposto perchè non saprei aiutarti.
    Però.
    Punto primo: perchè non puoi creare una query al volo? Dopo la elimini.
    Punto secondo: perchè non puoi salvare il file? Dopo lo elimini.

    Non ho altro, mi spiace, se non valutare anche OutputTo ma non credo cambi molto.
    Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da Misterxxx
    Non ti ho risposto perchè non saprei aiutarti.
    Però.
    Punto primo: perchè non puoi creare una query al volo? Dopo la elimini.
    Punto secondo: perchè non puoi salvare il file? Dopo lo elimini.

    Non ho altro, mi spiace, se non valutare anche OutputTo ma non credo cambi molto.
    Ciao Mister. Vedrò un pò cosa riesco a fare.
    Nella peggiore delle ipotesi si prendono la briga di pigiare due tasti e andare su Analizza con microsoft excel.
    Grazie.

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Il tuo suggerimento di creare una query al volo mi ha spalancato un mondo. Ho scoperto l'oggetto queryDef e ho fatto una semplice prova:

    codice:
    Private Sub Comando0_Click()
    
    Dim dbs As Database
    Dim strSQL As String
    Dim strQueryName As String
    Dim qryDef As QueryDef
    Set dbs = CurrentDb
    strQueryName = "TempQuery"
    
    For Each qryDef In CurrentDb.QueryDefs
    If qryDef.Name = strQueryName Then CurrentDb.QueryDefs.Delete (strQueryName)
    Next
    
    strSQL = "SELECT * from nomi"
    Set qryDef = dbs.CreateQueryDef(strQueryName, strSQL)
    DoCmd.OpenQuery strQueryName, acViewNormal, acReadOnly
    
    End Sub
    In questo modo posso crearmi la query al volo e, nel caso esista già, cancellarla per non incorrere in errori. Adesso vedo di sfruttare questa tecnica per alcune cosine.
    Grazie mille Mister.

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Rieccomi.
    Finalmente riesco a creare il mio file di excel in base ai valori scelti da form dall'utente.

    Come mi avevi suggerito ho usato il metodo outputto

    codice:
    DoCmd.OutputTo acOutputQuery, strQueryName, acFormatXLS, CurrentProject.Path & "\" & "miofile.xls", True
    A quanto ho capito il file sono comunque costretto a salvarlo a priori, quindi credo che l'unico modo sia usare il path corrente.

    Avrei ancora una domanda in merito a questo thread: nel mio file di excel in coda ai record generati dalla query dovrei fare una tabellina riepilogativa per tipologia di dati estratti.

    esempio:

    =CONTA.SE(inizio_intervallo:fine_intervallo;"inser imento lavorativo")
    =CONTA.SE(inizio_intervallo:fine_intervallo;"forma tivo")
    ....

    sapete se è possibile tramite vba far generare in automatico una cosa del genere oppure se una volta creato il file tali formula vanno per forza inserita manualmente?
    Grazie.

  7. #7
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    Originariamente inviato da nicola75ss
    Rieccomi.
    Finalmente riesco a creare il mio file di excel in base ai valori scelti da form dall'utente.

    Come mi avevi suggerito ho usato il metodo outputto

    codice:
    DoCmd.OutputTo acOutputQuery, strQueryName, acFormatXLS, CurrentProject.Path & "\" & "miofile.xls", True
    A quanto ho capito il file sono comunque costretto a salvarlo a priori, quindi credo che l'unico modo sia usare il path corrente.

    Avrei ancora una domanda in merito a questo thread: nel mio file di excel in coda ai record generati dalla query dovrei fare una tabellina riepilogativa per tipologia di dati estratti.

    esempio:

    =CONTA.SE(inizio_intervallo:fine_intervallo;"inser imento lavorativo")
    =CONTA.SE(inizio_intervallo:fine_intervallo;"forma tivo")
    ....

    sapete se è possibile tramite vba far generare in automatico una cosa del genere oppure se una volta creato il file tali formula vanno per forza inserita manualmente?
    Grazie.
    Non sono molto esperto di VBA a livello di Excel.
    Però potresti definire cosa visualizzare da Access e accodare anche questi dati.
    Purtroppo, in questo periodo, sono molto impegnato e non posso fare prove (e magari ti rispondo anche in ritardo).
    Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da Misterxxx
    Non sono molto esperto di VBA a livello di Excel.
    Però potresti definire cosa visualizzare da Access e accodare anche questi dati.
    Purtroppo, in questo periodo, sono molto impegnato e non posso fare prove (e magari ti rispondo anche in ritardo).
    Ciao Mister. Come va? Meglio che sia impegnato, vuol dire che gli affari vanno bene.
    Avevo immaginato che ci volesse vba di excel e che non fosse possibile integrare questi dati direttamente dal codice di access.
    Non ti preoccupare, hai già fatto e continui a fare tanto per me.
    Buon lavoro.

  9. #9
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    Originariamente inviato da nicola75ss
    Ciao Mister. Come va? Meglio che sia impegnato, vuol dire che gli affari vanno bene.
    Avevo immaginato che ci volesse vba di excel e che non fosse possibile integrare questi dati direttamente dal codice di access.
    Non ti preoccupare, hai già fatto e continui a fare tanto per me.
    Buon lavoro.
    Grazie, anche a te !
    Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.