Condividi tramite

[Access] Associare risultati query parametrica ad un recordset

Anonimo
2010-01-07T14:40:06+00:00

Ciao a tutti,  volevo sapere come associare il recordset ad una query parametrica come questa PARAMETERS [Forms]![Maschera1]![Ck_Tipo_A] Bit, [Forms]![Maschera1]![Ck_Tipo_B] Bit, [Forms]![Maschera1]![Ck_Tipo_C] Bit;

SELECT prova.Nome

FROM prova

WHERE prova.Esclusione = False AND

 (   

  A = True AND [Forms]![Maschera1]![Ck\_Tipo\_A] = True OR  

  B = True AND [Forms]![Maschera1]![Ck\_Tipo\_B] = True OR  

  C = True AND [Forms]![Maschera1]![Ck\_Tipo\_C] = True  

 );  

Che riceve dall utente dei parametri attivabili da 3 checkbox

Il mio problema consiste nel momento io cui io abbia bisogno di associare i risultati di tali query(che chiamero Query1),che eseguo con  DoCmd.OpenQuery ad un recordset per effettuarci altre operazioni successivamente

ES. Dim db As DAO.Database, rs As DAO.Recordset

Set db = CurrentDb

Set rs = db.OpenRecordset("Query1") Questa operazione mi da errore ovviamente,perchè non vengono passati i parametri...e qui sorge il problema

Spero di essere stato chiaro

Vi ringrazio

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2010-01-07T17:48:08+00:00

Si ma ho dei dubbi sulla comprensione della funzione

perchè impostare i parametri a false se è l utente che deve deciderne il valore?

Ciao,

è solo un esempio, se il codice lo esegui nell'ambito del modulo di classe della maschera puoi valorizzare i parametri con i valori delle caselle di controllo della maschera

Esempio:

Qdf![[Forms]![Maschera1]![Ck_Tipo_A]] = Me.Ck_Tipo_A Qdf![[Forms]![Maschera1]![Ck_Tipo_B]] = Me.Ck_Tipo_B Qdf![[Forms]![Maschera1]![Ck_Tipo_C]] = Me.Ck_Tipo_C Me rappresenta la maschera.

Se sei fuori dall'ambito del modulo di classe della maschera puoi fare così:

Qdf![[Forms]![Maschera1]![Ck_Tipo_A]] = [Forms]![Maschera1]![Ck_Tipo_A] Qdf![[Forms]![Maschera1]![Ck_Tipo_B]] = [Forms]![Maschera1]![Ck_Tipo_B] Qdf![[Forms]![Maschera1]![Ck_Tipo_C]] = [Forms]![Maschera1]![Ck_Tipo_C] Ovviamente Maschera1 deve essere aperta.

Forse confonde il nome del parametro che è uguale al nome dell'oggetto maschera.nomecontrollo

Per la seconda domanda, sì, è corretto.

Ciao

Giorgio Rancati

La risposta è stata utile?

0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2010-01-07T19:24:41+00:00

    Infatti avevo confuso i parametri del mio esempio con gli esempi in generale e non capivo

    Ora è chiarissimo, grazie ancora

    Ciao

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2010-01-07T17:23:38+00:00

    Si ma ho dei dubbi sulla comprensione della funzione

    perchè impostare i parametri a false se è l utente che deve deciderne il valore?

    e poi ad esempio se selezionassi il metodo diretto avrei

    Qdf![[Forms]![Maschera1]![Ck_Tipo_A]] = False

    Qdf![[Forms]![Maschera1]![Ck_Tipo_B]] = False

    Qdf![[Forms]![Maschera1]![Ck_Tipo_C]] = False

    è corretto?

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2010-01-07T14:59:35+00:00

    Ciao,

    per aprire un recordset da una query parametrica, occorre utilizzare l'oggetto QueryDef e valorizzare il suo insieme Parameters.

    Qui un esempio che si adatta alla tua query.

    Sub ApriRsDaQueryParametrica()

    Dim Db As DAO.Database
    Dim Rs As DAO.Recordset
    Dim Qdf As DAO.QueryDef
    
    Set Db = CurrentDb
    
    Set Qdf = Db.QueryDefs("Query1")
    
    '\*\*\*\* Imposto i 3 parametri \*\*\*\*
    'metodo diretto
    Qdf![[Forms]![Maschera1]![Ck\_Tipo\_A]] = False
    'metodo indiretto
    Qdf.Parameters("[Forms]![Maschera1]![Ck\_Tipo\_B]") = True
    'Indicizzato in base al numero del parametro
    Qdf.Parameters(2) = False
    
    'Apro il recordset
    Set Rs = Qdf.OpenRecordset
    
    'Ciclo tra i record e stampo il primo campo
    Do Until Rs.EOF
       Debug.Print Rs.Fields(0)
       Rs.MoveNext
    Loop
    
    Rs.Close
    Set Rs = Nothing
    Set Qdf = Nothing
    Set Db = Nothing
    

    End Sub

    Ho usato 3 modi diversi per valorizzare i parametri, usa quello che più ritieni comodo per i tupi scopi, per il terzo medoto tieni presente che il primo parametro ha indice 0 , il secondo ha indice 1 ecc, ecc.

    Trovi tutta la documentazione dell'oggetto querydef nell'help di Access.

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento