Newsgroup: it.comp.appl.access
Titolo: Filtro RecordSet

Salve a tutti,
non riesco a filtrare un recordset da vba. In cosa sbaglio?
Io utilizzo questo codice:
 
Dim strFLTR As String
Dim RST As Recordset
 
    Set RST = Me.Recordset 'maschera da cui prendo i dati
    strFLTR = RST.Fields("REP_CAS") in (1,2,4,7,8,9)
    RST.Filter = Str.Filter
 
 
MOTIVAZIONE
Mentre è necessario che i dati nella maschera d'origine rimangono inalterati,
mi occorre filtrare soltanto il recordset generato, il quale deve contenere solo i records che hanno valore 1 oppure 2 oppure 4 , oppure .... nel campo rep_cas.
 
Rep_cas contiene il valore protocollo xon/xoff che indica al registratore di cassa quale reparto deve considerare per stampare lo scontrino. Avendo anche merce di edicola vorrei evitare di fargli stampare lo scontrino anche per questi articoli.

>     RST.Filter = Str.Filter
Scusate errore di battitura
 
 
RST.Filter = strFLTR
 
 

      RST.Filter = Str.Filter
 
La stringa per il filtro è sbagliata e dopo non si vede se fai qualcosa 
con il filtro, cioè se lo usi per un nuovo recordset. Prova così:
 
Dim strFLTR As String
Dim rst As DAO.Recordset, rstFiltered As DAO.Recordset
 
Set rst = Me.Recordset
strFLTR = "REP_CAS In (1,2,4,70,80,9)"
rst.Filter = strFLTR
 
Set rstFiltered = rst.OpenRecordset
 
Poi fai cosa vuoi con rstFiltered.
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
Access Lobby: 
http://www.AccessDevelopers.org
 

 
 
ottengo in risposta un errore run-time 3464
dati non corrispondenti nell'espressione criterio


Avevo definito in tabella il campo come testo. L'ho modificato in numerico e il filtro funziona parzialmente, nel senso che se nella maschera inserisco dati con rep_cas con valori misti (che hanno cioé valori interni al filtro ed esterni al filtro) RstFiltered.recordcount mi restituisce sempre 1

Ho risolto inserendo in un ciclo le stringhe che non deve calcolare. 
 
Private Sub Form_Close()
Dim strSC, strDESC, strPRZf As String
Dim strPRZ As Currency
Dim QR, x As String
Dim rst As DAO.Recordset, rstFiltered As DAO.Recordset
Dim cntMIN, cntMAX As Integer
Dim mychar As Variant
 
 
Set rst = Me.Recordset
 
     If rst.RecordCount = 0 Then
        Exit Sub
 
    Else
 
        rst.MoveFirst
        cntMAX = rst.RecordCount
 
        Do Until Nz(cntMIN, 0) = cntMAX
        cntMIN = cntMIN + 1
 
                If REP_CAS = 1 Or REP_CAS = 2 Or REP_CAS = 4 Or REP_CAS = 7 Or REP_CAS = 8 Or REP_CAS = 9 Then
                    'DEFINIZIONE DESCRIZIONE
                    strDESC = rst.Fields("DESCR")
                        For Each mychar In Array("/", "\", ":", "<", ">", "|", "@", ";", ",", _
                            "*", "°", "-", "_", "'")
                            strDESC = Replace(strDESC, mychar, "")
                        Next mychar
                    strDESC = Chr(34) & strDESC & Chr(34)
 
 
                    'DEFINIZIONE DEL PREZZO
                    strPRZ = rst.Fields("PRZ_V")
                    strPRZf = Format(strPRZ, "###,##.00") & "H"
                    strSC = strSC & strDESC & rst.Fields("QTA_v") & "*" & strPRZf & rst.Fields("REP_CAS") & "R"
                End If
 
                If cntMIN < cntMAX Then rst.MoveNext
 
        Loop
 
        If Not strSC = "" Then
 
                strSC = strSC & "1T"
                Open "C:\stp_scntr.txt" For Output As #1
                Print #1, strSC 'Scrive la 1° riga del file
                Close #1 'Chiusura File
 
                If rst.Fields("rep_cas") = "10" Then Exit Sub
                If rst.Fields("rep_cas") = "11" Then Exit Sub
 
                    If MsgBox("Vuoi stampare lo scontrino", vbYesNo, "ATTENZIONE") = vbNo Then
                        DoCmd.OpenForm "TOT", , , , , acDialog
                        Exit Sub
                    Else
                        Shell ("C:\stp_scntr.bat")
                    End If
 
        End If
 
    End If
 
  DoCmd.OpenForm "TOT", , , , , acDialog
End Sub
 
 

Karl scusa per la confusione che posso aver generato! Gli ultimi due post li ho pubblicato sempre io ma non mi ero accorto di essere collegato con l'altro account che utilizzo in edicola