Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как обновить значение в DBgrid измененное в другой программе [D7, MSSQL]


vanatage10 ©   (2009-06-18 15:52:00) 

возможен вариант когда известна запись, которая изменена

запрос аналогичен
http://delphimaster.ru/cgi-bin/forum.pl?id=1243862381&n=1

MSSQL 2005, Delphi 7, ADOQuery


Ega23   (2009-06-19 10:09:00) [1]

Можно. Попробуй TADODataSet.Resync


vanatge   (2009-06-19 01:59:00) [2]

а не нельзя при открытой ADO обновить одну запись/поле не закрывая
или просто ее переписать?
_______________________________
главное не закрывать!


Ega23   (2009-06-18 19:20:00) [3]


> Это к ADO относится ? Я просто ADO плохо знаю :)


Нет гарантии, что после открытия букмарки будут валидными.


Игорь Шевченко   (2009-06-18 18:18:00) [4]

Ega23 ©   (18.06.09 17:35) [10]


> Bookmarks при переоткрытии использовать нельзя.


Это к ADO относится ? Я просто ADO плохо знаю :)


Ega23   (2009-06-18 17:35:00) [5]


> RTFM: Bookmarks или Locate


Bookmarks при переоткрытии использовать нельзя.


Игорь Шевченко   (2009-06-18 17:28:00) [6]

RTFM: Bookmarks или Locate


Ega23   (2009-06-18 16:35:00) [7]


> а как тогда программно установить в DBGrid нужное значение?


procedure DSRefresh;
var
 value : Integer;
begin
 value := -1;
 if (DS.Active) and (not DS.IsEmpty) then
   value :=  DS.FieldByName('Ключевое поле').AsInteger;
 DS.Close;
 try
   DS.Open;
   DS.Locate('Ключевое поле', value, []);
 except
   ......
 end;
end;


Dennis I. Komarov   (2009-06-18 16:22:00) [8]

А зачем пользователю указатель на запись?


Sergey13   (2009-06-18 16:21:00) [9]

> [5] vanatage10   (18.06.09 16:18)

Запомнить старое значение ключевой записи и перейти на него после переоткрытия.


vanatage10   (2009-06-18 16:18:00) [10]

так не пойдет, т.к. потеряется указатель с записи...

а как тогда программно установить в DBGrid нужное значение?


Ega23   (2009-06-18 16:12:00) [11]


> а что нибудь типа этого?


ADOQuery.Close;
ADOQuery.Open;


vanatage10   (2009-06-18 16:04:00) [12]

ADOQuery.Refresh

а что нибудь типа этого?


Sergey13   (2009-06-18 15:59:00) [13]

> [0] vanatage10   (18.06.09 15:52)
> запрос аналогичен

Так и ответ аналогичен.


Ega23   (2009-06-18 15:58:00) [14]

Гарантированно - никак. Можно прикрутить костыли и пользоваться ими.
Вариант 1.
Посылка UDP-сообщения.
Вариант 2.
Запоминать дату последнего изменения, на сервере её апдейтить, а на клиенте по таймеру опрашивать. Если дата поменялась - обновлять информацию.

ИМХО, и то и другое - фигня. Запрос должен идти от пользователя.


Наверх

Титульная страница Поиск, карта сайта Написать письмо