![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обновление строки [D7, MSSQL]
AVKAR © (2004-06-21 13:12:00)Уважаемые знатокои помогите разобраться...
Есть ADODataSet c запросом типа "SELECT FName + IName + OName As FIO, FName, IName, OName FROM ", где поле FIO отображается в DBGride.
При изменении поля, включенного в составное поле FIO
FieldByName('FName').Value := 'Петров'
в DBGride изменения в поле FIO не отражаются.
При выполнении метода
ADODataSet.Requery
данные DBGride обновляютя, но слетает позиция курсора с текущей записи. Вопрос: есть ли возможность перечитать из БД только текущую строку? или мне придется сначала запоминать текущую позицию и затем устанавливать курсор на нее вручную?
NAlexey (2004-06-21 15:34:00) [1]AVKAR (21.06.04 15:12) [7]
Вроде должно работать.
AVKAR (2004-06-21 15:12:00) [2]try
Application.CreateForm(CurrentForm, TCurrentForm);
CurrentForm.ShowModal;
// при открытии формы происходит ADataSet.Edit;
// при нажатии на ОК происходит ADataSet.Post;
finally
CurrentForm.Release;
if ADataSet.State in [dsInsert, dsEdit] then ADataSet.Cancel;
ADataSet.UpdateCursorPos;
TADODataSet(ADataSet).Recordset.Resync(adAffectCurrent, adResyncAllValues);
TADODataSet(ADataSet).Resync([rmExact]);
end;
NAlexey (2004-06-21 14:48:00) [3]А покажи как пишешь?
AVKAR (2004-06-21 14:29:00) [4]Почему то, тоже не обновляется...
Nalexey (2004-06-21 13:52:00) [5]
DataSet.UpdateCursorPos;
TADODataSet(DataSet).Recordset.Resync(adAffectCurrent, adResyncAllValues);
TADODataSet(DataSet).Resync([rmExact]);
Ega23 (2004-06-21 13:48:00) [6]или мне придется сначала запоминать текущую позицию и затем устанавливать курсор на нее вручную?
Лично я всегда так делаю.
При выполнении метода
ADODataSet.Requery
В данной ситуации тебе вычисляемое поле может помочь (как один из вариантов). Но я бы рефрешил всю выборку, при этом сохраняя позицию.
AVKAR (2004-06-21 13:45:00) [7]Строка не обновляется...
alsov (2004-06-21 13:27:00) [8]
> ADODataSet.Requery
Попробуй так
AdoDataSet.Refresh