Newsgroup: it.comp.appl.access
Titolo: problema con l'aggiunta di argomenti a una routine

ciao, ho un problema con l'aggiunta di argomenti a una routine:
ho un pulsante di comando, "calcola", che su evento clic esegue la
routine, "filtro1", inserita nel modulo form. La maschera mostra solo
i record per cui il campo "txtbox1" ha valore 'pizza'.
Quindi nella casella testo "conta_record1" viene visualizzato il
numero dei record filtrati.
----------------------------------------------------------------------------------
Private Sub calcola_Click()
    filtro1
 
End Sub
----------------------------------------------------------------------------------
Private sub filtro1()
 
    Me.Filter = "txtbox1 = 'pizza'"
    Me.FilterOn = True
 
    Me.RecordsetClone.MoveLast
    Me.conta_record1 = Me.RecordsetClone.RecordCount 
 
End sub
----------------------------------------------------------------------------------
Per ora tutto Ok, però mi serve una routine flessibile che mi permetta
di specificare quale campo deve avere valore 'pizza' (se "txtbox1",
"txtbox2", "txtbox3"), e quale casella testo
deve visualizzare il numero dei record filtrati (se conta_record1,
conta_record2, ecc...).
Pensavo quindi di aggiungere alcuni argimenti alla routine in questo
modo ma sbaglio qualcosa:
----------------------------------------------------------------------------------
Private Sub calcola_Click()
    filtro1 txtbox2, conta_record2
 
End Sub
----------------------------------------------------------------------------------
Private sub filtro1( strCasellatesto As String , strNumerorecord As
String )
 
    Me.Filter = "strCasellatesto = 'pizza'"
    Me.FilterOn = True
 
    Me.RecordsetClone.MoveLast
    Me.strNumerorecord = Me.RecordsetClone.RecordCount 
 
End sub
----------------------------------------------------------------------------------
Credo che l'argomento che ho inserito non corrisponda ai tipi di dati
che intendo specificare,
potete aiutami?
Grazie

     Me.Filter = "strCasellatesto = 'pizza'"
Me.Filter = strCasellatesto & " = 'pizza'"
strcasellatesto è una variabile, quindi devi concatenare il suo valore al
resto della stringa!
Antonio

 Grazie dell'aiuto seguendo ciò che mi hai detto ho risolto il problema,
non sono però riuscito a correggere il codice rimanente, non so dove è
l'errore:
Private sub filtro1( strCasellatesto As String , strNumerorecord As String )
    Me.Filter = strCasellatesto & " = 'pizza'"
    Me.FilterOn = True
          'Fino a qui tutto ok
    Me.RecordsetClone.MoveLast
    Me.strNumerorecord = Me.RecordsetClone.RecordCount
            ' Ora non so come concatenare il valore della variabile
strNumerorecord al resto della stringa

 strNumerorecord al resto della stringa
Fermo restando che non sono per niente d'accordo sul fatto che usi più
caselle di testo per il totale (scusa eh? il totale è sempre quello, a
prescindere dal campo su cui fai il filtro, quindi. Lo chiami totale record
filtrati, fine.)
Insomma, tu prima di tutto devi passare la stringa col nome del controllo
non il nome del controllo, perchè in realtà così passi il valore che c'è nel
controllo stesso. Cioè
strNumerorecord equivale a strNumerorecord.value
A meno che il valore di strNumerorecord è proprio il nome del controllo, ma
mi pare strano che tu abbia fatto così.
La chiamata di funzione dovrebbe allora essere:
filtro1 txtbox2, "strNumerorecord"
In filtro1 dovrai fare:
dim ctl as control
set ctl = me.controls(strNumerorecord)
ctl = Me.RecordsetClone.RecordCount
Antonio


In primo luogo rinnovo il "Grazie dell'aiuto seguendo ciò che mi hai detto
ho risolto il problema";  quindi aggiungo una breve spiegazione: nel codice
originale esistono diverse caselle di testo che devono riportare diversi
totali di campi filtrati ecc... Il codice riportato nell'esempio è ridotto
(come hai osservato in alcune parti potrebbe sembrare privo di logica)  per
semplificare un po' le cose, principalmente a me stesso.
I tuoi chiarimenti mi sono stati utili,
a presto, Diego