|
|
|
| этот код не работает с большим числом записей, подскажите как правильно сделать расчет и тем более это все работает медленно а хочется побыстрее
Sub raschet()
' открываем таблицу raschet
Dim rs As New ADODB.Recordset
rs.Open "raschet", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
'переходим на первую запись
rs.MoveFirst
'выполняем условия пока недостигнем конца таблицы
Do Until rs.EOF
'условие периода
If rs("period").Value = Forms![forma1]![period]![period] Then
' произведен или нет учет
If rs("uchet").Value = False Then
' выбирам как расчитывать
Select Case rs("kod_vid_rab").Value
Case "1"
rs("itog").Value = rs("cena").Value * rs("chas").Value * rs("kty").Value - rs("vichet").Value
' rs("kol").Value = 0
'rs.Update
Case "2"
rs("itog") = rs("cena").Value * rs("kol").Value - rs("vichet").Value
rs("chas").Value = 0
rs("kty").Value = 0
'rs.Update
End Select
'Call vidrabot
End If
End If
rs.MoveNext
'rs.Update
Loop
'rs.Update
rs.Close
Set rs = Nothing
MsgBox "Расчет окончен"
End Sub | |
|
| |
|
|
|
| вот придумал еще работает гараздо быстрей ка вы думаете, только вот как программно отключить подтверждение изменения поля, знаю что гдето есть а где немогу найти подскажите плиз
Dim sq1 As String
Dim sq2 As String
sq1 = "update raschet set itog=chas*cena*kty where (((raschet.period)=[Forms]![forma1]![period]![period]))and (((raschet.kod_vid_rab) =1)) "
sq2 = "update raschet set itog =kol*cena where (((raschet.period)=[Forms]![forma1]![period]![period]))and (((raschet.kod_vid_rab) =2)) "
DoCmd.RunSQL sq1
DoCmd.RunSQL sq2
Forms![forma1]![ïîä÷èíåííàÿ ôîðìà raschet].Requery | |
|
| |
|
|
|
| DoCmd.SetWarning False - отключить подтверждение
DoCmd.SetWarning True - вернуть | |
|
| |