Newsgroup: it.comp.appl.access
Titolo: Aiuto - Ricerca parole Chiave

 
Ho creato una maschera per la ricerca dei records con più parole chiave
seguendo il prezioso esempio trovato su Sito Comune chiamata "Menu". L'altra
con i risultati è una maschera di consultazione e modifica dei dati chiamata
"Maschera Risultati".
La prima parola chiave della Maschera Menu è una casella di riepilogo
nominata "Prima". Cliccando sul tasto di comando TROVA mi appare il seguente
errore:
ERRORE DI RUN-TIME '2450' IMPOSSIBILE TROVARE LA MASCHERA "Maschera
Risultati"
Vi indico la sequenza:
*****************************
Private Sub Comando20_Click()
Dim strTitolo As String, strMsg As String, IntFinestraMsg As Integer
Dim IntNuovo As Integer
If IsNull(Me![Prima]) Then
    strTitolo = "Campo obbligatorio non digitato"
    strMsg = "Non è stato digitato la prima parola chiave"
    IntFinestraMsg = vbExclamation
    IntNuovo = MsgBox(strMsg, IntFinestraMsg, strTitolo)
    Me!Prima.SetFocus
    Me!Comando20.Visible = False
Else
If Left(Me!Prima, 1) <> "*" Then
    Me!Prima = "*" & Me!Prima
End If
If Right(Me!Prima, 1) <> "*" Then
    Me!Prima = Me!Prima & "*"
End If
If Not IsNull(Me!Seconda) Then
    If Left(Me!Seconda, 1) <> "*" Then
        Me!Seconda = "*" & Me!Seconda
    End If
    If Right(Me!Seconda, 1) <> "*" Then
        Me!Seconda = Me!Seconda & "*"
    End If
End If
If Not IsNull(Me!Terza) Then
    If Left(Me!Terza, 1) <> "*" Then
        Me!Terza = "*" & Me!Terza
    End If
    If Right(Me!Terza, 1) <> "*" Then
        Me!Terza = Me!Terza & "*"
    End If
End If
If Not IsNull(Me!Quarta) Then
    If Left(Me!Quarta, 1) <> "*" Then
        Me!Quarta = "*" & Me!Quarta
    End If
    If Right(Me!Quarta, 1) <> "*" Then
        Me!Quarta = Me!Quarta & "*"
    End If
End If
Dim ChiaveRic As String
ChiaveRic = "[Attivita] Like " & Chr$(34) & Me!Prima & Chr$(34)
If Not IsNull(Me!Seconda) Then
    ChiaveRic = ChiaveRic & " " & Me!ANDOR & " [Attivita] Like " & Chr$(34) &
Me!Seconda & Chr$(34)
End If
If Not IsNull(Me!Terza) Then
    ChiaveRic = ChiaveRic & " " & Me!ANDOR & " [Attivita] Like " & Chr$(34) &
Me!Terza & Chr$(34)
End If
If Not IsNull(Me!Quarta) Then
    ChiaveRic = ChiaveRic & " " & Me!ANDOR & " [Attivita] Like " & Chr$(34) &
Me!Quarta & Chr$(34)
End If
    Me.Visible = False
    DoCmd.Hourglass True
    Forms!Maschera_Risultati.SetFocus
    DoCmd.ApplyFilter , ChiaveRic
    If Forms!Maschera_ Risultati.RecordsetClone.RecordCount = 0 Then
        DoCmd.Hourglass False
        strTitolo = "Ricerca con esito negativo"
        strMsg = "Non esistono records che soddisfano questi criteri"
        IntFinestraMsg = vbExclamation
        IntNuovo = MsgBox(strMsg, IntFinestraMsg, strTitolo)
        DoCmd.ShowAllRecords
    End If
    DoCmd.Hourglass False
    Me.Visible = True
    Me!Comando18.SetFocus
    Me!Comando20.Visible = False
    DoCmd.Close
End If
End Sub
***************
Grazie per il vostro aiuto
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha scritto nel messaggio
news:83Z176Z96Z42Y1...@usenet.libero.it...

Probabilmente quando esegui questa routine VBA la tua Maschera_Risultati non
è stata ancora aperta.
Nell'esempio pubblicato sul Sito Comune viene aperta prima la tua maschera
Maschera_Risultati dalla quale viene poi aperta la tua maschera Menu la
quale si preoccupa di filtrare i dati della Maschera_Risultati che è però
già aperta; ho paura invece che tu abbia prima aperto la maschera Menu nel
cui modulo di classe stai tentando di filtrare la maschera
Maschera_Risultati senza averla prima aperta, quindi giustamente Access ti
dà errore.
Se le cose stanno così, prima di spostare il fuoco su la maschera
Maschera_Risultati aprila con un metopdo OpenForm.
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

     If Forms!Maschera_ Risultati.RecordsetClone.RecordCount = 0 Then
[cut]
a.cara

 ha
scritto:

Grazie, adesso funziona, Roberto sei grande
Altro quesito. E' possibile fare la ricerca su più campi usando sempre
caselle di riepilogo
(es. Casella 1 - Casella 2 - Casella 3) e fare la ricerca nella tabella per
le stringhe inserite in casella 1, 2 e 3.
Grazie Ancora
Cecilia


 Cecilia


 ha
scritto:

Scusami mi sono spiegata male. Partendo sempre da tuo esempio ho 3 caselle
di riepilogo (Prima - Seconda e Terza) per poter fare la ricerca su 3 campi
diversi presenti nella tabella Pippo:
Vorrei poter fare la ricerca nella tabella con le scelte effettuate nella
Casella "Prima" (scelta obbligatoria), nella Casella "Seconda" (facoltativa
) e nella Casella "Terza" (sempre facoltativa)
Ci ho provato usando il tuo esempio ma purtroppo non ci sono riuscita.
Puoi darmi una mano.
Grazie


 ha scritto nel messaggio
news:213Z215Z167Z15Y...@usenet.libero.it...

Non sono sicuro di aver ben capito cosa vuoi fare, ma a parte il fatto che
il mio esempio usa caselle di testo e non caelle di riepiolgo, se nel mio
esempio imposti in OR la ricerca delle tre parole chiave non ottieni quello
che ti serve: se non è così forse sarebbe il caso che spieghi ciò che ti
serve con un esempio.


 Scusa se ti faccio perdere tempo. Provo a spiegarmi meglio.
Ho creato una Maschera per filtrare i dati. In questa Maschera il filtro
deve essere fatto su tre campi distinti ed ho inserito 3 caselle di
riepilogo: Casella_1=Ditta, Casella_2=Articolo, Casella_3=Ordine.
La Casella_1 è una scelta obbligatoria mentre le altre due no (Filtrare la
Ditta Pippo - l’articolo scarpe – elenco ordini). Dovrei aprire un’altra
Maschera per visualizzare i risultati ottenuti. Ma non ci riesco.
Grazie per la tua pazienza.


 Cecilia
Bhe, mi sembra che il tuo problema con quello di filtrare una maschera con
una o più parole chiave contenute all'interno di una casella di testo non
c'entri proprio nulla: forse è per questo che non riusciamo ad entrare in
sintonia ed a capirci.
Ti consoglio a questo punto di andare sul Sito Comune e nella Sezione Forms
di leggere la mia FAQ intitolata "Sincronizzare in una maschera due o più
caselle combinate tra loro NON in gerarchia", E' poi del tutto indifferente
ai fini dell'esempio che la selezione venga fatta tramite caselle di
riepilogo (come da te richiesto) o tramite caselle combinate (come mostrato
nell'esempio pubblicato sul Sito Comune).
Come potrai vedere dall'esempio, solo la selezione effetuata su una delle
tre caselle combinate è obbligatoria, quella effettuata con le altre due è
opzionale.
L'esempio del Sito Comune è realizzato con un'unica maschera nella cui
intestazione vengono impostati i parametri di ricerca e nel corpo vengono
visualizzati i risultati della ricerca. Se vuoi dividere su due maschere
diverse l'impostazione dei parametri e la visualizzazione dell'esito della
ricerca, dovrai modificare un po' il codice VBA relativo al modulo di classe
della maschera: aggiungi un pulsante di comando e a fronte dell'evento "Su
clic" del pulsante di comando apri la seconda maschera la cui origine record
sarà naturalmente basato sulla query parametrica di cui l'esempio in
questione.
Nella Sezione Queries del Sito Comune dai uno sguado anche alla mia FAQ
intitolata "In una query parametrica selezionare tutti i record se il valore
del parametro di selezione è Null"; ti indicherà, in una query parametrica,
come rendere ininfluente la selezione se il valore del parametro di
selezione risulta Null (quindi, nel tuo caso,  come rendere opzionale la
selezione du Articolo ed Ordine).
