Allora

SO : Win2000 (SP3), ma poi il programma deve girare su Win98
motore : Jet
libreria : ADO 2.5 E DAO 3.6 (ma l'errore si manifesta su DAO)

ecco il codice:

Private Sub Form_Activate()

Dim i, intcol, j As Integer
Dim righe As Long
Dim saldoprogressivo As Double

i = 0
saldoprogressivo = 0


qryestrattoconto = "SELECT IdPrinc, IdOpzione, Data_Op, IdImmobile, Venditore, Acquirente, Indirizzo_Immobile, Descrizione, NAssegno, Entrate,Uscite,SaldoProg,Controllato FROM EstrattoContoOpzioni WHERE IdOpzione = 'OA' ORDER BY DATA_OP, IDPRINC"




'associo la query al controllo data1
Data1.RecordSource = qryestrattoconto
Data1.Refresh



'nascondo la prima colonna della tabella
MSFlexGrid1.ColWidth(1) = 0

'a seconda di sceltaec imposto quale colonna nascondere (controllato)
MSFlexGrid1.ColWidth(2) = 850
MSFlexGrid1.ColWidth(4) = 850
MSFlexGrid1.ColWidth(5) = 1700
MSFlexGrid1.ColWidth(6) = 1700
MSFlexGrid1.ColWidth(7) = 2000
MSFlexGrid1.ColWidth(8) = 1700
MSFlexGrid1.ColWidth(13) = 0

Data1.Refresh

'ricalcolo i saldi progressivi

If Data1.Recordset.RecordCount > 0 Then

Data1.Recordset.MoveFirst
Data1.Recordset.Edit
Data1.Recordset("SaldoProg") = Data1.Recordset("Entrate") - Data1.Recordset("Uscite")
Data1.Recordset.Update
saldoprogressivo = Data1.Recordset("SaldoProg")
Do While Not Data1.Recordset.EOF
i = i + 1
If i > 1 Then
'***********QUESTA è LA RIGA INCRIMINATA
saldoprogressivo = saldoprogressivo + Data1.Recordset("Entrate") - Data1.Recordset("Uscite")
Data1.Recordset.Edit
Data1.Recordset("Saldoprog") = saldoprogressivo
Data1.Recordset.Update
End If
Data1.Recordset.MoveNext

Loop

Data1.Refresh

i = 1



End If

End Sub