Newsgroup: it.comp.appl.access
Titolo: Ricerca

Ciao Ng, avrei questo problemino a cui nn riesco dare soluzione. Ho il
seguente codice per effettuare delle ricerche con parametri, che gira sotto
una maschera chiamata RicercaVer03, constitutita in modo che
nell'intestazione della maschera siano presenti i vari campi di testo o
combo in cui inserire i parametri e due pulsanti uno per visualizzare i
record e uno per cancellare i parametri, mentre nel corpo è presente una
sottomaschera con origine dati dalla query di selezione CatalogoModelli
Query:
    'Attiva o disattiva i controlli in sezione specificata della maschera
    'Utilizza l'oggetto Form, la costante di sezione e specifica gli
argomenti
    'passati all routine AttivaControl
    Dim ctl As Control
    'Imposta intStato per tutti i controlli nella sezione specificata.
    For Each ctl In frm.Controls
        If ctl.Section = strSezione Then
            On Error Resume Next
            ctl.Enabled = intStato
            Err = 0
        End If
    Next ctl
    AttivaControl = True
End Function
Private Sub Aggiungi(ValoreCampo As Variant, NomeCampo As String, Criteri As
String, NumArgomenti As Integer)
    ' Crea i criteri per la clausola WHERE.
    If ValoreCampo <> "" Then
    ' Aggiunge "and" se esiste un altro criterio.
        If NumArgomenti > 0 Then
            Criteri = Criteri & " and "
        End If
        ' Accoda il criterio  ai criteri esistenti.
        ' Aggiunge ValoreCampo e l'asterisco tra virgolette.
        Criteri = (Criteri & NomeCampo & "Like " & Chr(39) & ValoreCampo & _
        Chr(42) & Chr(39))
        'Aumenta il numero degli argomenti.
        NumArgomenti = NumArgomenti + 1
    End If
End Sub
Private Sub DisattivaControllo()
    ' Se attivato, disattiva il controllo nella sezione Corpo dopo
    ' la modifica del criterio di ricerca.
    If Me![Sottomaschera CatalogoModelli Query].Enabled Then
        AttivaControl Me, acDetail, False
    End If
End Sub
La seguente porzione di codice viene ripetuta per ogni controllo:
Private Sub txtCollocazione_AfterUpdate()
'Disattiva il controllo nella sezione corpo dopo
  'la modifica del criterio di ricerca.
    DisattivaControllo
End Sub
Riporto dei seguito l'aggiunta :
Private Sub PesoMin_AfterUpdate()
'Disattiva il controllo nella sezione corpo dopo
  'la modifica del criterio di ricerca.
    DisattivaControllo
End Sub
Private Sub PesoMax_AfterUpdate()
'Disattiva il controllo nella sezione corpo dopo
  'la modifica del criterio di ricerca.
    DisattivaControllo
End Sub
Pulsante Visualizza:
Private Sub Visualizza_Click()
 ' Crea una clausola WHERE utilizzando i criteri di ricerca immessi dall
'utente
    ' e imposta la proprietà "RecordSource" ("Origine record") della
    ' SottoMascheraRicerca.
    Dim MioSQL As String, Criteri As String, MiaOrigineRecord As String
    Dim NumArg As Integer
    ' Inizializza il conteggio degli argomenti.
    NumArg = 0
    ' Inizializza l'istruzione SELECT.
    MioSQL = "SELECT * FROM [CatalogoModelli Query] WHERE "
    Criteri = ""
    ' Utilizza i valori immessi nelle caselle di testo dell'intestazione
della
    ' maschera per creare criteri per la clausola WHERE.
    Aggiungi [txtNumeroModello], "[NumeroModello]", Criteri, NumArg
    Aggiungi [txtCategoria], "[Categoria].[NomeCategoria]", Criteri, NumArg
    Aggiungi [txtCollezione], "[Collezioni].[Collezione]", Criteri, NumArg
    Aggiungi [txtProduttore], "[Produttori].[Produttore]", Criteri, NumArg
    Aggiungi [txtVenditore], "[Venditori].[Venditore]", Criteri, NumArg
    Aggiungi [txtDataCreazione], "[DataCreazione]", Criteri, NumArg
    Aggiungi [txtCollocazione], "[Collocazione]", Criteri, NumArg
    Aggiungi [PesoMin], "[PesoOggetto]", Criteri, NumArg ' NUOVA
    Aggiungi [PesoMax], "[PesoOggetto]", Criteri, NumArg 'NUOVA
    ' Se non è stato specificato alcun criterio, restituisce tutti i record.
    If Criteri = "" Then
        Criteri = "True"
    End If
    ' Crea l'istruzione SELECT.
    MiaOrigineRecord = MioSQL & Criteri
    ' Imposta la proprietà "Origine record" della SottoMascheraRicerca.
    Me![Sottomaschera CatalogoModelli Query].Form.RecordSource =
MiaOrigineRecord
    ' Se nessun record corrisponde ai criteri, visualizza un messaggio.
    ' Seleziona il pulsante Cancella.
    If Me![Sottomaschera CatalogoModelli
Query].Form.RecordsetClone.RecordCount = 0 Then
        MsgBox "Nessun record corrisponde ai criteri immessi.", 48, "Nessun
record trovato"
        Me!Cancella.SetFocus
        Else
        'Attiva il controllo nella sezione Corpo.
        AttivaControl Me, acDetail, True
        'Seleziona la SottoMascheraRicercaClienti.
        Me![Sottomaschera CatalogoModelli Query].SetFocus
    End If
End Sub
Private Sub Cancella_Click()
'  Cancella i controlli nella intestazione della maschera e rimuove
    '  i record dalla sottomaschera.
    '
    Dim MioSQL As String
    MioSQL = "SELECT * FROM [CatalogoModelli Query] WHERE TRUE"
    '  Cancella le caselle di testo contenenti i criteri di ricerca.
    Me!txtNumeroModello = Null
    Me!txtCategoria = Null
    Me!txtCollezione = Null
    Me!txtDataCreazione = Null
    Me!txtProduttore = Null
    Me!txtVenditore = Null
    Me!txtCollocazione = Null
    Me!PesoMin = Null
    Me!PesoMax = Null
    '  Reimposta la proprietà "Origine record" ("RecordSource")
    '  della sotto maschera per rimuovere i record.
    Me![Sottomaschera CatalogoModelli Query].Form.RecordSource = MioSQL
    '  Seleziona la casella di testo "txtNumeroModello".
    Me![txtNumeroModello].SetFocus
End Sub
il problema è sorto da quando ho voluto inserire come parametro di ricerca
il peso, inserito come intervallo,cioè PesoMin e PesoMax...infatti ritengo
che il problema sia nella parte di codice poichè la query funziona,quando la
selezione compaiono due finestre una dopo l'altra dove mi vengono richiesti
i valori di PesoMin e PesoMax.Per far ciò ho inserito sotto criteri della
query CatalogoModelli Query il seguente:
Between [Forms]![RicercaVer03]![PesoMin] And
[Forms]![RicercaVer03]![PesoMax]
prima avevo aggiunto anche & "*" , che però ho dovuto togliere perchè ad
Access nn andava...nn capisco il perchè,cmq è di secondo piano questo
problema...
Vi ringrazio anticipatamente
Ciao Christian

 ha scritto nel messaggio
news:huSA7.349$5W6....@news1.tin.it...

riguardo l'ultimo questito, cioè la questione dell'* ecc, ho risulto
aggiungendo alla fine della riga criteri da me scritta OR LIKE "*"
penso proprio che il problema sia nella funzione aggiungi, devo fa si che
individui e utilizzi i due campi PesoMin e PesoMax insieme, mentre adesso li
prende singolarmente...bo non so come fare...aiuto!!!
Ciao Christian