Newsgroup: it.comp.appl.access
Titolo: domanda su prestazioni...

Salve a tutti,
stň utilizzando un ciclo "Do Until...." con molte IF innestate....
utilizzo questa struttura per manipolare un recordset "rst"
domanda: in un ciclo del Do Until posso fare piů di un update sul
recordset.... secondo voi č meglio fare piů update oppure uno solo
alla fine del cilco?
grazie!
ringo
ecco il codice:
Do Until rst.NoMatch
            ' Lettura tipo provvigione (tipo_prov)
            tipo_provvigione = rst!tipo_prov
            txt2 = "select * from tab_prov where tipo_prov like '" &
tipo_provvigione & "'"
            Set rst2 = dbs.OpenRecordset(txt2, dbOpenDynaset)
            ' *** Inizio calcolo effettivo della provvigione ***
            ' Utilizzo campo di testo ERRE
            stringa_tip_prov = Trim(rst!TIPO_PROVVIGIONI)
            If (stringa_tip_prov = "R") And ((rst!ramo = "014") And
(rst!categ >= "100" And rst!categ <= "200") Or (rst!ramo = "016" And
(rst!categ = "400" Or rst!categ = "401")) Or (rst!ramo = "006") Or (rst!ramo
= "007") Or (rst!ramo = "003")) Then
                ERRE = "SI"
                rst.Edit
                rst!Log = rst!Log & " ERRE "
                rst.Update
                Else
                ERRE = "NO"
            End If
            ' Gestione titoli 1 o chi per esso...
            If (rst!cod_titolo = 1) Or (rst!cod_titolo = 3) Or (rst!rescin
<> Null) Or ((rst!rateo_pol < 365) And (rst!fraz <> A)) Or (ERRE = SI) Then
                ' *** Gestione LOG ***
                Select Case rst!cod_titolo
                Case 1
                    rst.Edit
                    rst!Log = rst!Log & " tit.1 "
                    rst.Update
                Case 2
                    rst.Edit
                    rst!Log = rst!Log & " tit.2 "
                    rst.Update
                Case 3
                    rst.Edit
                    rst!Log = rst!Log & " tit.3 "
                    rst.Update
                Case 8
                    rst.Edit
                    rst!Log = rst!Log & " tit.8 "
                    rst.Update
                End Select
                If rst!rescin <> Null Then
                    rst.Edit
                    rst!Log = rst!Log & " rescin "
                    rst.Update
                End If
                If ((rst!rateo_pol < 365) And (rst!fraz <> A)) Then
                    rst.Edit
                    rst!Log = rst!Log & " rateo<365 e fraz <>A "
                    rst.Update
                End If
                ' Fine gestione LOG
                    rst.Edit
                        If (rst!ramo = 13) Or (rst!ramo = 31) Or (rst!ramo =
32) Then
                                ' AUTO
                                rst!prov_sub = (rst!IMPONIBILE_RATA *
rst2!prod_auto) / 100
                                rst!Log = rst!Log & " auto prod "
                                rst.Update
                         Else
                            If (rst!ramo = 81) Or (rst!ramo = 85) Or
(rst!ramo = 86) Then
                                ' VITA
                                rst!prov_sub = (rst!IMPORTO_PROVVIGIONI *
rst2!prod_vita) / 100
                                rst!Log = rst!Log & " vita prod "
                                rst.Update
                                Else
                                ' DANNI
                                ' Se la provvigione č di tipo ERRE
ricorrente viene utilizzato un coefficiente differente
                                    If ERRE = "SI" Then
                                       rst!prov_sub =
(rst!IMPORTO_PROVVIGIONI * rst2!prod_resto) / 100
                                       rst!Log = rst!Log & " danni prod "
                                       rst.Update
                                    Else
                                       ' provvigione Ricorrente
                                       rst!prov_sub =
(rst!IMPORTO_PROVVIGIONI * rst2!ricorrenti_danni) / 100
                                       rst!Log = rst!Log & " danni ricorr. "
                                       rst.Update
                                    End If
                            End If
                        End If
                ' Else per gestire le provvigioni di INCASSO
                Else
                     rst.Edit
                        If (rst!ramo = 13) Or (rst!ramo = 31) Or (rst!ramo =
32) Then
                                ' AUTO
                                rst!prov_sub = (rst!IMPONIBILE_RATA *
rst2!inc_auto) / 100
                                rst!Log = rst!Log & " auto inc. "
                                rst.Update
                         Else
                            If (rst!ramo = 81) Or (rst!ramo = 85) Or
(rst!ramo = 86) Then
                                ' VITA
                                ' Se frazionamento M provvigione di incasso
vita = 0
                                If rst!fraz <> "M" Then
                                    rst!prov_sub = (rst!IMPONIBILE_RATA *
rst2!inc_vita) / 100
                                    rst!Log = rst!Log & " vita inc. "
                                    rst.Update
                                    Else
                                    rst!prov_sub = 0
                                    rst.Update
                                End If
                                Else
                                   'DANNI
                                   rst!prov_sub = (rst!IMPONIBILE_RATA *
rst2!inc_resto) / 100
                                   rst!Log = rst!Log & " danni inc. "
                                   rst.Update
                             End If
                        End If
            End If
            rst.FindNext "pol <> ''"
 Loop

 alla fine del cilco?
Guarda che la update si riferisce ad un singolo record, pertanto se il ciclo
comporta lo spostamento ad un altro record devi fare la update.
Se il ciclo è sui campi del record ti conviene fare la update solo alla
fine, però tieni presente che se testi i valori di campi già cambiati, penso
che finchè non updati i valori sono quelli iniziali, quindi devi gestirtela
via codice.
Antonio

 ha scritto nel messaggio
news:KFvX9.33047$ZE.9...@twister2.libero.it...

grazie del consiglio!
ringo