Recordsource e Query con filtro

di il
8 risposte

Recordsource e Query con filtro

Ciao a tutti,

Non riesco a venire a capo di questo problema, ho una maschera a cui associare un una query mediante l'istruzione RecordSource:
Query_da_usare = "usura"
Me.RecordSource = Query_da_usare
Fin qui tutto bene, la query "usura" contiene pero un campo ore_app che ha come condizione [Indicare ore manutenzione] se uso l'istruzione
Set DBCorrente = CurrentDb 
	If Query_tipo = "usura" Then
        Set qdf = DBEngine(0)(0).QueryDefs(Query_da_usare)
        	qdf.Parameters![Indicare ore manutenzione] = Forms("Intervallo").Ore_per_usura
        Set rs = qdf.OpenRecordset
End If
Per generare poi un'esportazione in excel va tutto bene ma non riesco a capire come passare l'istruzione a RecordSource, ho cercato in vari post ma non ho capito come fare a dire:
Me.RecordSource = Query_da_usare  & where  [Indicare ore manutenzione] = Forms("Intervallo").Ore_per_usura
Ho fatto varie prove ma non riesco a passare la stringa qdf in nessun modo

8 Risposte

  • Re: Recordsource e Query con filtro

    bean_bandit ha scritto:


    la query "usura" contiene pero un campo ore_app che ha come condizione [Indicare ore manutenzione]
    Perchè usi la parola "condizione"? Volevi dire forse "parametro"?

    Hai indicato "Set qdf" senza dichiarare che tipo di variabile è qdf.

    Se la query ha un parametro, hai esposto anche PARAMETERS?

    Forse è necessario conoscere l'intero SQL della query.
  • Re: Recordsource e Query con filtro

    Lascia per un attimo stare quello che hai fatto che contiene una grande confusione concettuale...
    Spiega COSA devi fare e cosa vuoi ottenere.
  • Re: Recordsource e Query con filtro

    OsvaldoLaviosa ha scritto:


    bean_bandit ha scritto:


    la query "usura" contiene pero un campo ore_app che ha come condizione [Indicare ore manutenzione]
    Perchè usi la parola "condizione"? Volevi dire forse "parametro"?

    Hai indicato "Set qdf" senza dichiarare che tipo di variabile è qdf.

    Se la query ha un parametro, hai esposto anche PARAMETERS?

    Forse è necessario conoscere l'intero SQL della query.
    Si esatto, mi riferisco ad un parametro le definizioni delle variabili che non ho copiato sono:

    Dim DBCorrente As DAO.Database
    Dim rs As DAO.Recordset
    Dim qdf As DAO.QueryDef

    Con esposto Parameters intendi passare il parametro alla query?

    @Alex ha scritto:


    Lascia per un attimo stare quello che hai fatto che contiene una grande confusione concettuale...
    Spiega COSA devi fare e cosa vuoi ottenere.
    Ho una Query ore che prevede l'immissione di un parametro per filtrare i record in base al numero di ore di lavoro e la uso per generare una serie di esportazioni in excel per vari enti.
    Prima di procedere all'esportazione volevo creare una maschera in visualizzazione foglio dati che mi permettesse di vedere l'output della query a video cosi da correggere i dati prima dell'esportazione.

    La strada piu semplice è creare un'altra query e poi sul caricamento della maschera filtrare i dati ma sto cercando di minimizzare il numero di query e codice che ho per rendere il db piu facile da manutenere.
    Volevo usare una maschera e RecordSource per per visualizzare di volta in volta la query che mi interessa e nello stesso tempo passare il parametro alla query sul caricamento maschera
  • Re: Recordsource e Query con filtro

    Ora ho capito.
    Premesso che se crei una Query Parametrica in cui il Parametro è un Riferimento ad un controllo in una Maschera ti basta poi fare il REQUERY della Form in visualizzazione Maschere Continue o Foglio Dati(ma io non le uso spesso)... cosa che risulterebbe più semplice...!

    Quindi Form basata sulla tua Query, scritta in questo modo:
    
    SELECT * FROM TuaTabella
    WHERE TuoCampo=Forms!NomeForm!NomeTxtBoxOre
    A quel punto nella TextBox(NomeTxtBoxOre) inserisci il valore e fai un Requery.

    L'alternativa che tecnicamente è altrettanto funzionale, meno immediata, è quella che hai usato tu... io farei così
    
    If Query_tipo = "usura" Then
        Set qdf = DBEngine(0)(0).QueryDefs(Query_da_usare)
        qdf.Parameters![Indicare ore manutenzione] = Forms("Intervallo").Ore_per_usura
        Me.Recordset = qdf.OpenRecordset   '<------ QUESTA E' LA DIFFERENZA 
    End If
  • Re: Recordsource e Query con filtro

    @Alex ha scritto:


    L'alternativa che tecnicamente è altrettanto funzionale, meno immediata, è quella che hai usato tu... io farei così
    
    If Query_tipo = "usura" Then
        Set qdf = DBEngine(0)(0).QueryDefs(Query_da_usare)
        qdf.Parameters![Indicare ore manutenzione] = Forms("Intervallo").Ore_per_usura
        Me.Recordset = qdf.OpenRecordset   '<------ QUESTA E' LA DIFFERENZA 
    End If
    Ho risolto con seguendo una strada diversa pero vorrei capire perche non funziona:
    con Me.Recordset mi da l'errore 91, variabile non definita, nei vari post che avevo letto indicavano di usare Me.RecordSource per questo avevo usato Recordsource.

    Ho provato anche a fare:
    Me.RecordSource = Query_da_usare 'funziona
    Me.Recordset = Query_da_usare 'non funziona (errore 91)
    Anche se provo a passare Me.Recordset = qdf.OpenRecordset semplificando la query eliminando il parametro non funziona

    Dove sbaglio?
  • Re: Recordsource e Query con filtro

    bean_bandit ha scritto:


    ...
    Anche se provo a passare Me.Recordset = qdf.OpenRecordset semplificando la query eliminando il parametro non funziona
    Prova con
    Set Me.Recorset = qdf.OpenRecordset
  • Re: Recordsource e Query con filtro

    Philcattivocarattere ha scritto:


    bean_bandit ha scritto:


    ...
    Anche se provo a passare Me.Recordset = qdf.OpenRecordset semplificando la query eliminando il parametro non funziona
    Prova con
    Set Me.Recorset = qdf.OpenRecordset
    Grazie mille! veramente mi perdo in un bicchiere d'acqua a volte...
  • Re: Recordsource e Query con filtro

    Philcattivocarattere ha scritto:


    bean_bandit ha scritto:


    ...
    Anche se provo a passare Me.Recordset = qdf.OpenRecordset semplificando la query eliminando il parametro non funziona
    Prova con
    Set Me.Recorset = qdf.OpenRecordset
    Grazie Phil mi era proprio sfuggito...
Devi accedere o registrarti per scrivere nel forum
8 risposte