Istruzione SQL che referenzia variabili Maschera/Sottomasche

di
Anonimizzato11465
il
4 risposte

Istruzione SQL che referenzia variabili Maschera/Sottomasche

Ho una Maschera (Scheda_Cliente) ed una sottomaschera collegata (SM_Contratti) con alcuni campi.

Volevo, una volta modificati alcuni campi della sottomaschera, calcolare il numero di record, tramite la funzione dcount, di una query.

strFILTER = "SELECT ... WHERE CONTRATTI.Cliente = ANCODICE"
NumRecord = DCount("[ID]", "Q_Contratti", strFILTER)

L'istruzione DCount mi da il seguente errore:
Errore di Run Time 2471
L'espressione immessa come parametro di query ha generato l'errore seguente: ANCODICE

Presumo che sia legato al fatto che il codice sorgente presente nella sottomaschera non ha la visibilità di tutte le variabili presenti nella maschera principale.

Come posso referenziare, in una istruzione SQL, le variabili della maschera principale ?

grazie.

4 Risposte

  • Re: Istruzione SQL che referenzia variabili Maschera/Sottomasche

    Non puoi fare così ovviamente... la Stringa SQL non è quello che serve al Criterio WHERE di DCOUNT ma una cosa più complessa...!

    Fossi in te userei questo se lo inserisci nella SUBFORM
    
    NumeroRecords=Me.RecordsetClone.Recordcount
    Se lo inserisci nella Form questo
    
    NumeroRecords=Me!NomeSubForm.Form.RecordsetClone.RecordCount
    Altrimenti avresti dovuto filtare la Maschera usando la proprietà FILTER e non tramite la Query... a quel punto avresti potuto passare alla DCOUNT la proprietà FILTER diretta
    
    NumRecord = DCount("[ID]", "Q_Contratti", Me.Filter)
  • Re: Istruzione SQL che referenzia variabili Maschera/Sottomasche

    Ti ringrazio innanzitutto per la risposta.

    In realtà io dovrei da una subform, contare i records presenti in un'altra subform.
    Non riesco a capire come devo referenziare l'altra subform.

    Provo a spiegarmi meglio

    Maschera principale: CLIENTI
    All'interno ho un controllo a schede (TabContratti)
    Ad Ogni scheda ho associato una sottomaschera
    - Tutti i Contratti (SM_CONTRATTI)
    - Contratti Hardware (SM_HARDWARE)
    - Contratti software (SM_SOFTWARE)

    In pratica nel primo tab (SM_CONTRATTI) ho tutti i i contratti in essere per un cliente
    Nel secondo ho soltanto quelli Hardware, nel terzo solo quelli software
    Il 2° e 3° tab devono apparire soltanto quando c'è almeno un contratto di quel tipo

    Quando inserisco nel primo tab un contratto (o ne modifico il tipo di uno già esistente) nell'evento After_Update faccio un refresh della maschera principale per riallineare i vari tab.

    E fino a qui nessun problema.

    Il problema è che devo anche contare (dopo la variazione) quanti records ho nei tab Software ed Hardware, perchè se non ne ho neanche uno devo renderlo invisibile.

    Se scrivo:
    NumRecord = CLIENTI!SM_Software.RecordsetClone.RecordCount

    non funziona.
  • Re: Istruzione SQL che referenzia variabili Maschera/Sottomasche

    Ciao.
    Domanda,
    Ma se all'inizio la tab 2 e 3 non sono presenti, immettendo un nuovo cliente, come fai ad immettere anche il relativo contratto se non riesci a visualizzare le tab di immissione?
    Hai una maschera separata dove immetti i soli contratti?
    Penso di no altrimenti risulterebbe difficile creare una relazione con il cliente in fase successiva, se non impossibile.
    Quindi la maschera di cui parli praticamente è quella di immissione principale, quindi indipendentemente se hai contratti per la tab 2 e 3, le stesse devono essere comunque visibili, almeno in fase di immissione.
  • Re: Istruzione SQL che referenzia variabili Maschera/Sottomasche

    I contratti si inseriscono nella tab 1 (che è sempre visibile)
    Le tab 2 e 3 sono una vista per tipo dei contratti presenti nella tab 1.

    Cmq, ho risolto. L'istruzione da utilizzare era:
    NumRecord = Scheda_Cliente!SM_Contratti_Software.Form.RecordsetClone.RecordCount
Devi accedere o registrarti per scrivere nel forum
4 risposte