Newsgroup: it.comp.appl.access
Titolo: impostare function: aggiornare recordset maschera

Carissimi buon giorno!
 
Utilizzo una function (che riporto di seguito) per sfruttare una macro Autokeys. Premendo F2, la funzione che si trova su un modulo controlla quale scheda è attiva genera un recordset da una maschera che si trova nella scheda attiva, e fa una serie di calcoli per poi mandare una stringa, utilizzando il protocollo Xon/Xoff alla cassa per eseguire lo scontrino.
 
Fin qui tutto funziona!
 
Public Function AGGIORNAMENTO() As Integer
 
Dim strSC, strDESC, strPRZf As String
Dim strPRZ, SC 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
 
'
'Forms!VEND_MOD.SetFocus
 
Select Case Forms!VEND_MOD.Tab.Value
    Case 0
        Set rst = Forms!VEND_MOD!VENDITA0.Form.Recordset
    Case 1
        Set rst = Forms!VEND_MOD!VENDITA1.Form.Recordset
    Case 2
        Set rst = Forms!VEND_MOD!VENDITA2.Form.Recordset
    Case 3
        Set rst = Forms!VEND_MOD!VENDITA3.Form.Recordset
End Select
 
        If rst.RecordCount = 0 Then
            MsgBox "NESSUN ARTICOLO DA SCARICARE"
                Exit Function
        End If
 
        rst.MoveFirst
 
        If rst.Fields("REP_CAS") = 10 Or rst.Fields("REP_CAS") = 11 Then
            Select Case Forms!VEND_MOD.Tab.Value
               Case 0
                   Forms!VEND_MOD!VENDITA0.Requery
                   Exit Function
               Case 1
                   Forms!VEND_MOD!VENDITA1.Requery
                   Exit Function
               Case 2
                   Forms!VEND_MOD!VENDITA2.Requery
                   Exit Function
               Case 3
                   Forms!VEND_MOD!VENDITA3.Requery
                   Exit Function
           End Select
        End If
 
    cntMAX = rst.RecordCount
 
        Do Until Nz(cntMIN, 0) = cntMAX
 
            cntMIN = cntMIN + 1
 
                If rst.Fields("REP_CAS") = 1 Or rst.Fields("REP_CAS") = 2 Or rst.Fields("REP_CAS") = 4 Or rst.Fields("REP_CAS") = 7 Or rst.Fields("REP_CAS") = 8 Or rst.Fields("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"
 
                    'SCONTO SU SINGOLO ARTICOLO
                    'If rst.Fields("SC_1") <> 0 Then strPRZ = rst.Fields("PRZ_V") * ((100 - (rst.Fields("SC_1"))) / 100)
 
                    If rst.Fields("txd") = -1 Then strSC = strSC & "33.34*1M" ' CALCOLO SCONTO OFFERTA 3X2
                    If rst.Fields("SC_1") > 0 Then strSC = strSC & rst.Fields("SC_1") & "*1M" 'CALCOLO SCONTO SU STRINGA
 
                End If
 
                    If cntMIN < cntMAX Then rst.MoveNext
        Loop
 
Select Case Forms!VEND_MOD!Tab.Value
    Case 0
        Forms!VEND_MOD!T = Forms!VEND_MOD!VENDITA0.Form.Testo39
        Forms!VEND_MOD!VENDITA0.Requery
        Forms!VEND_MOD!VENDITA0.Form.CasellaCombinata26 = Null
        Forms!VEND_MOD!VENDITA0.Form.CasellaCombinata26.SetFocus
        If Not IsNull(Forms!VEND_MOD.CScli.Column(0)) Then Forms!VEND_MOD.CScli = Null
    Case 1
        Forms!VEND_MOD!T = Forms!VEND_MOD!VENDITA1.Form.Testo39
        Forms!VEND_MOD!VENDITA1.Requery
        Forms!VEND_MOD!VENDITA1.Form.CasellaCombinata26 = Null
        Forms!VEND_MOD!VENDITA1.Form.CasellaCombinata26.SetFocus
        If Not IsNull(Forms!VEND_MOD.CScli.Column(0)) Then Forms!VEND_MOD.CScli = Null
    Case 2
        Forms!VEND_MOD!T = Forms!VEND_MOD!VENDITA2.Form.Testo39
        Forms!VEND_MOD!VENDITA2.Requery
        Forms!VEND_MOD!VENDITA2.Form.CasellaCombinata26 = Null
        Forms!VEND_MOD!VENDITA2.Form.CasellaCombinata26.SetFocus
        If Not IsNull(Forms!VEND_MOD.CScli.Column(0)) Then Forms!VEND_MOD.CScli = Null
    Case 3
        Forms!VEND_MOD!T = Forms!VEND_MOD!VENDITA3.Form.Testo39
        Forms!VEND_MOD!VENDITA3.Requery
        Forms!VEND_MOD!VENDITA3.Form.CasellaCombinata26 = Null
        Forms!VEND_MOD!VENDITA3.Form.CasellaCombinata26.SetFocus
        If Not IsNull(Forms!VEND_MOD.CScli.Column(0)) Then Forms!VEND_MOD.CScli = Null
 
End Select
 
        If Not strSC = "" Then
 
            If SCT <> 0 Then strSC = strSC & "=" & SCT & "*" & "2M" ' IN CASO DI SCONTO SUL SUBTOTALE
            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 MsgBox("Vuoi stampare lo scontrino", vbYesNo, "ATTENZIONE") = vbNo Then
                    strSC = "a"
                        Open "C:\stp_scntr.txt" For Output As #1
                        Print #1, strSC 'Scrive la 1° riga del file
                        Close #1 'Chiusura File
                        Shell ("C:\stp_scntr.bat")
                    DoCmd.OpenForm "TOT", , , , , acDialog
                    Exit Function
                Else
                    Shell ("C:\stp_scntr.bat")
                End If
        Else
 
            strSC = "a"
            Open "C:\stp_scntr.txt" For Output As #1
            Print #1, strSC 'Scrive la 1° riga del file
            Close #1 'Chiusura File
            Shell ("C:\stp_scntr.bat")
 
        End If
 
     DoCmd.OpenForm "TOT", , , , , acDialog
 
End Function
 
 
IL PROBLEMA
Adesso dovrei aggiungere un ulteriore do loop perché ho la necessità di conoscere solo per alcuni cliente quali articoli comprano. Perciò vorrei fare in modo che SOLO in questi casi il campo ID_Clnt (cliente) venga riempito con il valore che si trova nella column(0) di una combobox_Clnt. Tenendo conto che la funzione del modulo lavora sul rst e non più sulla recordset della maschera, come faccio a registrare il codice cliente nella tabella vendita?
 
Detto in altro modo, dopo aver settato rst con il recordset della maschera sulla scheda attiva, come faccio a restituire il recordset aggiornato del codice cliente alla stessa maschera, così che il dato venga registrato nella tabella? 
 
Spero di essere stato sufficientemente chiaro,
Sempre grazie e a presto ;)

HELP PLEASE :(


potresti postarci la struttura del recordset Forms!VEND_MOD!VENDITA0.Form.Recordset 
 
contiente il campo che vuoi filtrare?