Показать сообщение отдельно
  #3  
Старый 19.08.2010, 02:29
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,105
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Запросы типа Update выполняются с помощью метода ExecSQL. Вызов метода Open (или "передергивание" св-ва Active) приведет к ошибке времени выполнения.
2. Как уже сказали, DBGrid только отражает текущую выборку. Все данные загружены в источник данных - TQuery, TTable, etc. У тебя есть 2 варианта. Первый: добавить либо специалбный компонент для запросов DELETE, UPDATE, INSERT, написать эти запросы и тогда можно пользоваться методами Edit, Delete, Append с последующим вызовом метода Post для фиксации изменений. Второй: выполнить изменения с помощью дополнительного компонента, а потом перечитать данные через основной источник данных.
3. Текущая строка в DBGrid соответствует текущей строке в источнике данных. Соответсвенно, значение какого-либо поля можно получить напрямую из источника данных:
Код:
Query.ParambyName('id').asinteger:= mainDataSet.FieldByName('id').AsInteger;
Ответить с цитированием