Newsgroup: it.comp.appl.access
Titolo: Funzione Contatore modificata non funziona

buonasera a tutti
WinXp+A2003
ho trovato sul sito accesgroup 2 un esempio di "contatore personalizzato in 
una lan"di Salvino Crucitti e ne ho ricavato ,modificando l'esempio,questa 
funzione:
***Codice
Public Function Cnt_Fatt() As Integer 'numerazione fatture
On Error GoTo Cnt_Fatt_err
Dim Db As DAO.Database
Dim RsCntFatt As Recordset
Dim Cnt As Integer
Dim ContaAggFatt As Integer 'contatore tentativi di aggiornamento del 
contatore nella tabella
ContaAggFatt = 0
Set Db = CurrentDb
Set RsCntFatt = Db.OpenRecordset("ContaFatt", dbOpenDynaset, dbSeeChanges, 
dbPessimistic)
If RsCntFatt.BOF Then
    RsCntFatt.AddNew
'*******************
'Qui mi da errore 3021
'*********************
'NB:nell'esempio c'è del codice anche su FormCurrent ma io vorrei poter 
avere tutto in questa funzione
End If
With RsCntFatt
.Edit
    !IdContaFatt = !IdContaFatt + 1
    .Update
    Cnt = !IdContaFatt
    Cnt_Fatt = Cnt
    .Close
        Db.Close
    End With
Set RsCntFatt = Nothing
Set Db = Nothing
    Exit Function
Cnt_Fatt_err: 'se errore
If MsgBox("Errore " & Err.Number & ": " & Err.Description & Chr(13) _
& "" & Chr(13) _
& "Numero Fattura non assegnato ! " & Chr(13) _
& "Riprovare ?", vbYesNo + vbQuestion + vbDefaultButton2, "Numero 
progressivo non assegnato") = vbNo Then
    Exit Function
        Else
                 'vado in errore al massimo 10 volte
                        ContaAggFatt = (ContaAggFatt + 1)
                        If ContaAggFatt = 10 Then
                        MsgBox "Sono stati fatti 10 tentativi di aggiornare 
il numero progressivo delle FATTURE !", vbInformation, "Errore ripetuto 10 
volte "
                            Exit Function
                    End If
                    'se non sono a 10 riprovo
                    Resume
End If
    End
End Function
**** Fine codice
E fin qui ,a parte l'errore 3021 ,tutto Ok.
la funzione viene lanciata prima della stampa della fatturacon questo 
codice:
Me.TxtNumFatt = Cnt_Num()
Ora vorrei modificare la funzione per  aggiornare i l contatore deiDDT,dei 
preventivi ,delle ricevute fiscali modificando la funzione in questo modo:
'*******************************************************************************************
'Funzione incrementa il progressivo documento
Public Function Cnt_Num(Str1 As String) As Integer 
'Str1=Fatt,Prev,Ddt,RicFisc
On Error GoTo Cnt_Num_err
Dim Db As DAO.Database
Dim RsCnt As Recordset
Dim Cnt As Integer
Dim ContaAgg As Integer 'contatore tentativi di aggiornamento del contatore 
nella tabella
ContaAgg = 0
Set Db = CurrentDb
Set RsCnt = Db.OpenRecordset("Conta" & (Str1), dbOpenDynaset, dbSeeChanges, 
dbPessimistic)
If RsCnt.BOF Then
    RsCnt.AddNew
End If
With RsCnt
.Edit
'****e qui mi pianto perchè non riesco a passare i parametri giusti da QUI
    !idconta& (Str1) = !idconta& (Str1) + 1
    .Update
    Cnt =  !idconta& (Str1)
    Cnt_Num = Cnt
'********a QUI
    .Close
        Db.Close
    End With
Set RsCnt = Nothing
Set Db = Nothing
    Exit Function
Cnt_Num_err: 'se errore
If MsgBox("Errore " & Err.Number & ": " & Err.Description & Chr(13) _
& "" & Chr(13) _
& "Numero " & (Str1) & " non assegnato ! " & Chr(13) _
& "Riprovare ?", vbYesNo + vbQuestion + vbDefaultButton2, "Numero 
progressivo non assegnato") = vbNo Then
    Exit Function
        Else
                 'vado in errore al massimo 10 volte
                        ContaAgg = (ContaAgg + 1)
                        If ContaAgg = 10 Then
                        MsgBox "Sono stati fatti10 tentativi di aggiornare 
il numero progressivo di & (Str1) & !", vbInformation, "Errore ripetuto 10 
volte "
                            Exit Function
                    End If
                    'se non sono a 10 riprovo
                    Resume
End If
    End
End Function
'**********************
La funzione modificata viene lanciata così: Me.TxtNumFatt = Cnt_Num("Fatt") 
se fattura altrimenti  Me.TxtNumDdt = Cnt_Num("Ddt") se DDT,ecc
Ho naturalmente 4 tabelle :ContaDdt,ContaFatt,ContaPrev e ContaRicFisc con i 
rispettivi campi (IdContaDdt,IdContaFatt,IdContaPrev e IdContaRicFisc.
Mi scuso per la lunghezza del messaggio, ma ho preferito mostrare tutto il 
codice , spero comunque di essermi spiegato bene su quello che vorrei 
ottenere
Dove sbaglio ?
Maurizio

     End With


--
sv
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Cut
Grazie mille ,funziona tutto OK
Ciao
maurizio