Есть 2 ДБФ файла - один текущий, другой - архив. Кнопка на форме создает новую запись в архиве, копирует туда данные из текущего ДБФа, а из текущего удаляет обработанную запись. Вот ее код (извините за длиннфй код):
- Код: Выделить всё
On Error Resume Next
answer = vbNo
answer = MsgBox("Вы действительно хотите удалить запись?", vbYesNo Or vbQuestion, "Удаление записи")
'this may produce an error if you delete the last
'record or the only record in the recordset
If answer = vbYes Then
' Open App.Path & "\Actions\" & Str(Year(Now)) & "_" & Str(Month(Now)) & "_" & Str(Day(Now)) & ".txt" For Append As 1
' Print #1, Str(Now) & " Кнопка 'Удаленике записи' Удаляется запись за " & txtData.Text
' Print #1,
' Close 1
KOD = DataAvto.Recordset!KOD
'делаем новую запись в архиве
DataArch.Recordset.MoveLast
DataArch.Recordset.AddNew
'заполняем поля архивной записи
DataArch.Recordset!KOD = DataAvto.Recordset!KOD
DataArch.Recordset!DATEIN = DataAvto.Recordset!DATEIN
DataArch.Recordset!TIMEIN = DataAvto.Recordset!TIMEIN
DataArch.Recordset!TOVAR = DataAvto.Recordset!TOVAR
DataArch.Recordset!NAVTO = DataAvto.Recordset!NAVTO
DataArch.Recordset!NPRIC = DataAvto.Recordset!NPRIC
DataArch.Recordset!Zapret = DataAvto.Recordset!Zapret
DataArch.Recordset!NOMER_TTN = DataAvto.Recordset!NOMER_TTN
DataArch.Recordset!DATA_POGRU = DataAvto.Recordset!DATA_POGRU
DataArch.Recordset!MARKA = DataAvto.Recordset!MARKA
DataArch.Recordset!POSTAVSHIK = DataAvto.Recordset!POSTAVSHIK
DataArch.Recordset!OTPRAVITEL = DataAvto.Recordset!OTPRAVITEL
DataArch.Recordset!PEREVOZCHI = DataAvto.Recordset!PEREVOZCHI
DataArch.Recordset!FORWARDING = DataAvto.Recordset!FORWARDING
DataArch.Recordset!NOMER_KU = DataAvto.Recordset!NOMER_KU
DataArch.Recordset!DATA_VIDAC = DataAvto.Recordset!DATA_VIDAC
DataArch.Recordset!VLAZHN_KU = DataAvto.Recordset!VLAZHN_KU
DataArch.Recordset!SOR_KU = DataAvto.Recordset!SOR_KU
DataArch.Recordset!DATA_VIZIR = DataAvto.Recordset!DATA_VIZIR
DataArch.Recordset!TIME_VIZIR = DataAvto.Recordset!TIME_VIZIR
DataArch.Recordset!VLAZHN_VIZ = DataAvto.Recordset!VLAZHN_VIZ
DataArch.Recordset!RAZRESH_VL = DataAvto.Recordset!RAZRESH_VL
DataArch.Recordset!SOR_VIZIR = DataAvto.Recordset!SOR_VIZIR
DataArch.Recordset!RAZRESH_SO = DataAvto.Recordset!RAZRESH_SO
DataArch.Recordset!ZARAZH = DataAvto.Recordset!ZARAZH
DataArch.Recordset!RAZRESH_ZA = DataAvto.Recordset!RAZRESH_ZA
DataArch.Recordset!FOSFIN = DataAvto.Recordset!FOSFIN
DataArch.Recordset!RAZRESH_FO = DataAvto.Recordset!RAZRESH_FO
DataArch.Recordset!RAZRESH_PR = DataAvto.Recordset!RAZRESH_PR
DataArch.Recordset!FIO_VIZIR = DataAvto.Recordset!FIO_VIZIR
DataArch.Recordset!RASPORAZH = DataAvto.Recordset!RASPORAZH
DataArch.Recordset!FIO_OTVLIC = DataAvto.Recordset!FIO_OTVLIC
DataArch.Recordset!LAB_VLAZH = DataAvto.Recordset!LAB_VLAZH
DataArch.Recordset!LAB_SOR = DataAvto.Recordset!LAB_SOR
DataArch.Recordset!NPROBI = DataAvto.Recordset!NPROBI
DataArch.Recordset!NSILOSA = DataAvto.Recordset!NSILOSA
DataArch.Recordset!SMENALAB = DataAvto.Recordset!SMENALAB
DataArch.Recordset!BRIGLAB = DataAvto.Recordset!BRIGLAB
DataArch.Recordset!DATEIN8 = DataAvto.Recordset!DATEIN8
DataArch.Recordset!DATA_VIZI8 = DataAvto.Recordset!DATA_VIZI8
DataArch.Recordset!QUARSERT = DataAvto.Recordset!QUARSERT
DataArch.Recordset!VESPODOK = DataAvto.Recordset!VESPODOK
DataArch.Recordset!DATEVES1 = DataAvto.Recordset!DATEVES1
DataArch.Recordset!TIMEVES1 = DataAvto.Recordset!TIMEVES1
DataArch.Recordset!DATEVES2 = DataAvto.Recordset!DATEVES2
DataArch.Recordset!TIMEVES2 = DataAvto.Recordset!TIMEVES2
DataArch.Recordset!Brutto = DataAvto.Recordset!Brutto
DataArch.Recordset!FIO_VES1 = DataAvto.Recordset!FIO_VES1
DataArch.Recordset!Tara = DataAvto.Recordset!Tara
DataArch.Recordset!Netto = DataAvto.Recordset!Netto
DataArch.Recordset!FIO_VES2 = DataAvto.Recordset!FIO_VES2
If Not (IsNull(DataAvto.Recordset!TIMEVES1)) Then
'заводская дата. Новые сутки начинаются после 8 утра
If Hour(DataAvto.Recordset!TIMEVES1) >= 0 And Hour(DataAvto.Recordset!TIMEVES1) < 8 Then
DataArch.Recordset!DATEVES18 = DataAvto.Recordset!DATEVES1 - 1
Else
DataArch.Recordset!DATEVES18 = DataAvto.Recordset!DATEVES1
End If
End If
If Not (IsNull(DataAvto.Recordset!TIMEVES2)) Then
'заводская дата. Новые сутки начинаются после 8 утра
If Hour(DataAvto.Recordset!TIMEVES2) >= 0 And Hour(DataAvto.Recordset!TIMEVES2) < 8 Then
DataArch.Recordset!DATEVES28 = DataAvto.Recordset!DATEVES2 - 1
Else
DataArch.Recordset!DATEVES28 = DataAvto.Recordset!DATEVES2
End If
End If
'сохраняем выехавшую машину в архиве
DataArch.UpdateRecord
'удаляем машину с территории
DataAvto.Recordset.Delete
DataAvto.Recordset.MoveFirst
DataAvto - текущий ДБФ, DataArch - архивный.
Просматривая архив, можно заметить для некоторых записей, что данные из текущего дбфа не перешли в архивный; вернее, перешли данные не всех ячеек.
Вопрос: может ли это быть связано с тем, что комп выполняет программу слишком быстро и операции фактически не успевают выполниться? Можно ли как-то получить подтверждение копирования, например, DataArch.Recordset!KOD = DataAvto.Recordset!KOD, а только потом продвигаться дальше?
Или такое предположение бредовое и надо искать причину потери данных в другом?