ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT * FROM doc WHERE keyproj = " + Form5->ADOTable1->FieldByName("id")->Value + " ORDER BY rezultat");
ADOQuery1->Open();
DBGrid1 мгновенное обновление данных
У меня проблема с обновление данных в DBGrid1.
ДАнные в DBGrid1 отображаются из результата SQL запроса в ADOQuery1:
запрос простейший:
Код:
вот я с помощью ADOTable1 редактирую поля... удаляю прибовляю и так далее.... после чего даю этот запрос который должен по идее показать все изменения (это у меня идет отдельной кнопкой - Обновить)
После редактирования базы данных я программно нажимаю на кнопку - Обновить и ничего не происходит!
Мне приходится раза 3-4 подряд нажимать на обновить только после чего данные обновляются... прошу заметить что иногда с первого раза (программно) данные обновляются замечательно.
как можно сделать так, чтобы все сразу с первого раза обновлялось?
Заранее спасибо!
Перед операцией 'обновления' ты Form5->ADOTable1->Post() делаешь?
Кроме того - необходимо учитывать, возможную задержку с обновлением и загрузкой данных. Лучше модификацию данных тоже выполнять через запрос.
Цитата:
вот я с помощью ADOTable1 редактирую поля... удаляю прибовляю и так далее.... после чего даю этот запрос который должен по идее показать все изменения (это у меня идет отдельной кнопкой - Обновить)
А что мешает редактировать поля через ADOQuery? В отличие от средств BDE, объекты ADO позволяют синхронизировать исходный набор данных. Точнее, ADO имеет меньше ограничений на текст запроса.
Таким образом, нет нужды делать вызов AdoQuery1->Requery
P.S. Кстати, лучше использовать "запрос с параметром"
Код:
ADOQuery1->SQL->Add ("SELECT * FROM doc");
ADOQuery1->SQL->Add ("WHERE keyproj = :pID);
ADOQuery1->SQL->Add ("ORDER BY rezultat");
ADOQuery1->Parameters->Items [0]->Value = ЗНАЧЕНИЕ;
ADOQuery1->SQL->Add ("WHERE keyproj = :pID);
ADOQuery1->SQL->Add ("ORDER BY rezultat");
ADOQuery1->Parameters->Items [0]->Value = ЗНАЧЕНИЕ;