Query parametrica in un form

di il
4 risposte

Query parametrica in un form

Ciao a tutti.
C'è qualcuno che per caso sa come fare (e avrebbe naturalmente voglia di spiegarmelo) per aprire un form in cui c'è una query parametrica? In sostanza vorrei che, per prima cosa, non mi apparisse la maschera di inserimento parametri, e che i campi del form (agganciati naturalmente alla query) rimangano vuoi. Poi, in un secondo momento, dovrebbero aggiornarsi sulla base del parametro che gli passo tramite un text (attivato con evento click, oppure afterupdate oppure dopo aver premuto un button, questo naturalmente ha poca importanza)...
Grazie mille!

4 Risposte

  • Re: Query parametrica in un form

    Per caso queste cose non si suggeriscono... lo si fa se si sanno...!!!

    Quello che chiedi necessita che tu dia una visione più dettagliata di come intendi OPERARE.
    Se la Form è associata a QRY parametrica, nel momento in cui la apri deve trovare l'origine dei Parametri...(come li hai definiti...?).
    Se non li trova si apre il messaggino per inserirli, ma questo non è un modo che un programmatore deve pensare di utilizzare.
    Di norma i parametri si passano in 2 modi:
    1) Usando una Maschera di inserimento con dei controlli come le TextBox o Combo affinchè la Query parametrica abbia come riferimento di recupero parametri i controlli della form.
    
    SELECT * FROM T1 WHERE IDAnagrafica=Forms!NomeForm!IdAnagrafica
    Quindi quando apri la 2° Form basata su parametrica la Query risolve il predicato recuperando il valore dal controllo IdAnagrafica che si trova nella Maschera iniziale.

    2) Si usano i Parameter membri o Item della Collection Parameters dell'Oggetto QueryDef, quindi si passano via VBA i parametri, si apre il Recordset risultante e poi lo si associa alla Maschera...
    Ipotiziamo questa Query
    
    SELECT * FROM Tb_Ordini WHERE IdCliente=[CodiceCliente:]
    Quindi da VBA, ipotizziamo all'interno della stessa Maschera che visualizzerà i dati...
    
    Dim qdf As DAO.QueryDef
    Dim rs As DAO.Recordset
    Set qdf = CurrentDb.QueryDefs("QryMovimenti")
    qdf.Parameters![CodiceCliente:] = IdCodiceCliente
    Set rs = qdf.OpenRecordset
    If rs.EOF And rs.BOF Then
       Msgbox "Nessun Movimento per questo Cliente"
       Exit Function
    Else
       Set Me.Recordset=rs
      ' Se lo fai dall'esterno il riferimento alla form sarà:
      ' Set Forms("NomeForm").Recordset=rs
    End If
    Ovviamente poi cìè la questione dei Controlli Associati ma che non ricevono i dati che mostreranno nulla... quì devi decidere poi una volta che hai scelto la tecnica...
  • Re: Query parametrica in un form

    Perfetto grazie mille Alex.
    La strada che volevo seguire era la seconda, tramite codice VBA, anche perché volevo che la query potesse essere utilizzata anche "a mano" e non necessariamente indicizzata a un valore di un form.

    Ultima domandina al volo. Come faccio a non far apparire la maschera di inserimento che si apre da sola all'aprirsi del form?
    Immagino di dovergli dire qualcosa all'evento form_open oppure form_load (ho provato tutti e due ma non va: sembra che la query parta comunque prima dell'apertura del form).
    Quello che ho provato a fare tra l'altro, è stato di imporre il valore del parametro a "Empty" ma è giusto? voglio dire non c'è un modo più elegante e pulito per farlo?

    il Codice è questo
    Private Sub Form_Load()
    Dim WgtDB As DAO.Database
    Dim QD1 As DAO.QueryDef
    Dim RST1 As DAO.Recordset
    Set WgtDB = CurrentDb
    Set QD1 = WgtDB.QueryDefs!Cash_valuedate
    
    QD1.Parameters![Valuation Date] = Empty
    
    Set RST1 = QD1.OpenRecordset
    Set Me.Recordset = RST1
    
    QD1.Close
    
    End Sub
    Grazie di nuovo!
  • Re: Query parametrica in un form

    Forse non hai letto bene la mia risposta di prima...

    Ovviamente se associ l'origine dati da VBA sfruttando l'assegnazione del RS, devi togliere dall'origine dati il riferimento alla Query, quindi quando apri la maschera NON PUO' uscire il Popuo di interrogazione....
    Avrai tuttavia i controlli associati ma non Valorizzati che mostreranno un valore anomalo come ti ho detto prima...!!
  • Re: Query parametrica in un form

    MITICO!!!
    grazie Alex
Devi accedere o registrarti per scrivere nel forum
4 risposte