Newsgroup: it.comp.appl.access
Titolo: Sottofiltri su recordset creati da codice

Ho l'esigenza di filtrare un RecordSet che non è altro che il RecordSource
della mia Form:
Non sono sicuro della sintassi...
    Dim rs As DAO.Recordset
    Dim rs2 As DAO.Recordset
    Set rs = Me.Recordset.Clone
    Set rs2 = CurrentDb.OpenRecordset("SELECT * FROM rs [Supporto] = -1
ORDER BY [rs].Nome")
 E' corretto?
 Se si come posso, a questo punto impostare il recordsource della mia
maschera in modo che sia rs2?
Me.recorsource = "SELECT * FROM rs [Supporto] = -1 ORDER BY [rs].Nome"
non funge...
Ciao

>     Set rs = Me.Recordset.Clone
Con questa riga sto creando un recordset identico a quello dal quale la mia
form prende i dati, giusto?

 ha scritto nel messaggio 
news:7fGte.49078$75.26...@news4.tin.it...

Gestione Origine Dati: Per utilizzare dall'interno di un form il recordset 
corrispondente all'origine dati dello stesso form (ad es. per calcolare il 
numero records che soddisfano una condizione ed elaborarli) si possono 
utilizzare i seguenti comandi:
Dim rst As Recordset
Set rst = Me.NomeMaschera.Form.RecordsetClone
if not rst.EOF then rst.MoveFirst
Do While Not rst.EOF
   rst.Edit
   ................
   rst.Update
   rst.MoveNext
Loop
rst.Close

 rst.Close
Grazie per la risposta, Gaspare.
A me occorrerebbe solo riuscire a filtrare via codice il RecorSource della
form attiva.
Sto provando cosě, alla luce del tuo consiglio:
    Dim rs As DAO.Recordset
    Set rs = Me.RecordsetClone
    rs.Filter = "[SupportoDivX] = -1"
    Me.Requery
ma non funziona...
In soldoni...
La maschera prende i dati da una stringa SQL.
Corregetemi se sbaglio:
Usanto Me.RecordSetClone sto clonando e creando un recordset identico a
quello dalla quale la maschera prende i dati, no?
Come posso filtrare questo RecordSet e visualizzare la nuova origine dati?

> Set rst = Me.NomeMaschera.Form.RecordsetClone
Gaspare, sei certo di questa riga di codice?

 dati?
Sorry-> non sò risponderti -> provo a dare 1 occhiata e vedo se trovo 
qualcosa che possa servirti :-) 


Me.RecordsetClone dovrebbe andare 

 ha scritto nel messaggio
news:zqGte.49126$75.26...@news4.tin.it...

Passagli direttamente l'SQL
Me.RecordSource = "SELECT * FROM tuaTabella WHERE SupportoDivX  = -1 ORDER
BY Nome"
tuaTabella č la tbl che alimenta la forms e che vuoi filtrare
Fammi sapere
SunRex

> Me.RecordsetClone dovrebbe andare
Si, avevo trovato.
Grazie mille, Gaspare.

 Fammi sapere
Grazie per la risposta, Sunrex...
Non posso utilizzare direttamente l'SQL perchè i dati della maschera
arrivano da una SQL su una Tabella:
    Dim strGenere As String
    strGenere = Me.ElencoGeneri
    strRecordSource = "SELECT * from 1_Films WHERE [Genere] = '" & strGenere
& "' ORDER BY [1_Films].Titolo;"
    strTitoloElenco = "Tutti film di genere " & strGenere
    DoCmd.OpenForm "SchedaFilm"
    Forms![SchedaFilm].RecordSource = strRecordSource
Vedi?
I dati non sono su una tabella...
Come posso filtrare, dunque?
Sto cercando di usare filter, recordsetclone ma non ne vengo a capo...

[CUT]
Ok...ti lascio -> notte :-)
Gaspare

     Forms![SchedaFilm].RecordSource = strRecordSource
N.B.
strRecordSource e strTitoloElenco sono varibiali pubbliche definite su un
modulo esterno.
Ciao

[CUT]
Oltretutto da quello che ho appena letto non saprei come aiutarti :-(
Notte
Gaspare 

 ha scritto nel messaggio
news:4HGte.49217$75.26...@news4.tin.it...

Scusa ma non capisco.strRecordSource è il recordset che alimenta la
fmrSchedaFilm?
E tu su questo record vuoi applicare un'altro filtro che magari prendi dalla
forms appena aperta?
SunRex

 forms appena aperta?
Esatto...

 ha scritto nel messaggio
news:TaGte.49052$75.26...@news4.tin.it...

Ciao  vuLCan Karayan
semplicemente :
se metti un interruttore nella fomr e ci scrivi su evento click una cosa del
tipo :
If Me.TuoInterruttore = True Then
    Me.FilterOn = True
    Me.Filter = "supporto='" & -1 & "'"
Else
    Me.FilterOn = False
End If
non potrebbe andare ?

 ha scritto nel messaggio
news:x5Hte.49353$75.26...@news4.tin.it...

Sulla frmSchedaFilm
Private Sub cmdFiltra_Click()
dim strFiltro as String
Dim intNumRec As Integer
  strPiastra = tuaCombo O Casella di testo
                If Len(strPiastra) = 0 Then
                MsgBox "Non hai impostato il filtro"
                    Exit Sub
                 Else
                 Me.Filter = "[TuoCampo] = '" & strFiltro & "'"
                 Me.FilterOn = True
                 intNumRec = Me.Recordset.RecordCount
                    If intNumRec = 0 Then
                        MsgBox "Per il criterio inserito " & strFiltro & "
non esistono record!"
                        Me.FilterOn = False
                        Me.Requery
                        Me.Refresh
                    Else
                        Exit Sub
                    End If
                End If
End Sub
SunRex

   strPiastra = tuaCombo O Casella di testo
[CUT]
Grazie mille, Sunrex. Ho risolto anche grazie al tuo consiglio.
Ecco come ho fatto:
    'Attiva il filtro
    Me.Filter = "[SupportoDivX] = -1"
    Me.FilterOn = True
    Me.Requery
    Me.Refresh
Ciao

     Me.Refresh
Solo una domanda.
Se utilizzo Me.FilterOn = True attivo il filtro che ho specificato sopra.
Ma se uso Me.FilterOn = False, che succede?
Ritorno al "precedente" recordset?

 ha scritto nel messaggio
news:4nQte.24367$b5.11...@news3.tin.it...

Disattivi il filtro quindi ritorni al set di record che è origine della
maschera.
SunRex

 maschera.
Tnx
Ciao