Столкнулся с проблемой выполнения параллельных процессов!
Из формы в которой есть GRID, при двойном клике по Grid вызывается окно в модальном режиме для редактирования одной записи. Соответственно в поцедуре окна редактирования создается новый Recordset, который содержит только редактируемую запись.
'процедура редактирования записи в модальном окне
Private Sub CmdSave_Click()
adorecLineRedaktor.Fields(1) = Val(Str(Combo(0).Text))
adorecLineRedaktor.Fields(2) = Combo(1).Text
adorecLineRedaktor.Fields(3) = Val(Combo(2).Text)
adorecLineRedaktor.Fields(4) = CDbl(TextSoprotivlenie.Text)
adorecLineRedaktor.update
adorecLineRedaktor.Close
Set adorecLineRedaktor = Nothing
Unload Me
End Sub
По окончании выполнения процедуры редактировния выполнение программы переходит обратно в форму, которая вызывала модальное окно редактирования. Там выполняется метод Refresh элемента управления данными, для отображения в Grid внесенных изменений, но изменеия не отображаются в Grid. Я так понимаю метод adorecLineRedaktor.update выполняется параллелно метода Adodc1.Refresh, и update заканчивается позже Refresh. Поэтому фактически изменения в базе еще не произошли, а сетка Grid уже обновилась, соответственно старыми значениями. При пошаговом выполнении программы все работает правильно, но если запустить проект, то выползает такая ошибка. Пробовал ставить задержку времени перед выполнением Adodc1.Refresh, тогда все работает правильно. Проблема как определить время задержки, так так приложение должно работать по сети, и соответственно на разных по производительности машинах.
Если кто сталкивался с такой проблемой помогите решить. Может быть есть какие-то альтернативные варианты? В идеальном варианте хочется заставить выполнять последовательно методы Update и Refresh!!!