Apparizione non voluta finestra parametro

di Anonimizzato27357 il
7 risposte
Gentilissimi,
ho costruito una maschera che contiene la casella di testo "TestoCopia".
La casella in questione raccoglie una stringa che mi serve per filtrare dei record da un origine dati (nel mio caso una query).
Nei criteri della QBE ho inserito infatti il seguente Criterio:

Like "*" & [Maschere]![FormRicercaCorsi]![TestoCopia] & "*"

MI CHIEDO:
come mai capita che aprendo la maschera capita (NON SEMPRE) che Access mi apre una finestra di dialogo per digitare il parametro, invece di aprirmi la maschera?
Come faccio ad eliminare questo fenomeno?
Da cosa dipende il comportamento non coerente?

Grazie infinite
Gianni

7 Risposte

  • Forse la maschera poggia su una query. Tale query ha in sé il parametro che hai esposto. Di conseguenza, se non c'è la maschera FormRicercaCorsi aperta, la query non sa da dove andare a prendere quel valore e te lo chiede con Finestra messaggio.
  • Può essere, ma a questo punto come faccio a fare un filtro. Una volta aperta la maschera, l'utente inserisce nella casella la stringa di ricerca che poi va a finire in "Testocopia", variabile usata nel Criterio della Query. La query dovrà pur usare un "valore" per attivare il filtro di ricerca di una sottostringa di un campo della tabella/query ...
    Come faccio a risolvere alla radice?
  • strambotto ha scritto:


    Può essere, ma a questo punto come faccio a fare un filtro. Una volta aperta la maschera, l'utente inserisce nella casella la stringa di ricerca che poi va a finire in "Testocopia", variabile usata nel Criterio della Query. La query dovrà pur usare un "valore" per attivare il filtro di ricerca di una sottostringa di un campo della tabella/query ...
    Come faccio a risolvere alla radice?
    Se l'obbiettivo è il Filtro... perchè invece di inserire un Criterio nella Query non usi la proprietà Filter che sicuramente aiuta...?
    
    If Len(Me!TestoCopia & vbNullstring)>0 then
       Me.Filter="NomeCampo = '*" & Me!TestoCopia & "*'"
       Me.FilterOn=True
    Else
       Me.Filter=vbNullstring
       Me.FilterOn=False
    End if
  • D'accordo mi orienterò su questo tipo di soluzione. Grazie davvero
  • Guarda che non è un ripiego... anzi.
  • A proposito di sintassi,
    ho utilizzato questa routine:
    Private Sub Stringacorso_AfterUpdate()
    If Len(Me.Stringacorso & vbNullString) > 0 Then
       Me.Filter = "[corso] LIKE '*" & Me.[Stringacorso] & "*'"
       Me.FilterOn = True
    Else
       Me.Filter = vbNullString
       Me.FilterOn = False
    End If
    End Sub
    Come mai esistono due forme "Me.Stringacorso" e "Me!Stringacorso" ?
    Cosa serve vbNullString?
    Grazie mille
  • La sintassi per accedere ai membri di oggetti è il PUNTO.
    Il PUNTOESCLAMATIVO fa riferimento specifico ai controlli contenuti nell'istanza della maschera.

    Tuttavia i puristi del VBA di Access tendono a differenziare il riferimento a membri Nativi da Membri come Controlli...

    Il vbNullString anche qui per i meno attenti equivale a stringa vuota ""... in realtà non è esattamente così... ma prendila solo come finezza...
Devi accedere o registrarti per scrivere nel forum
7 risposte