![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Использую БД Access, и естественно компонент ADO и DBGrid для отображения данных в моей программе. У меня в программе есть обработчик, который каждую секунду должен обновлять данные - я это делаю с помощью компонента ADODataSet - изменением параметра Active (false/true). Однако при обновлении таким способом заметно мерцание на экране (т.е. обновление данных в DBGrid). Можно ли как-нибудь по другому обновлять данные, чтобы не было заметно это? Заранее спасибо!
|
#2
|
||||
|
||||
![]() Попробуй:
Код:
ADODataSet1.Refresh; Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#3
|
|||
|
|||
![]() А вот у меня почему-то не по первому, не по второму способу не получается...
![]() ![]() |
#4
|
|||
|
|||
![]() Аууууу, ХЕЛП-ХЕЛП-ХЕЛП!!!
Помогите с этой бедой. Все форумы облазил, везде пишут, что обновляться может, если сделать клозе; опен;. Но у меня не работает, помогите, чем можете... |
#5
|
||||
|
||||
![]() Код в студию.
|
#6
|
|||
|
|||
![]() Цитата:
Код:
procedure TForm1.DBGrid1DblClick(Sender: TObject); var uid: Integer; modal: TModalResult; begin //Беру uid-пользователя, которого выбрали uid := DBGrid1.DataSource.DataSet.Fields[0].AsInteger; //Беру данные о нем из бд ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add('SELECT * FROM tbl_names WHERE uid=:uid'); ADOQuery2.Parameters.ParamByName('uid').Value := uid; ADOQuery2.Open; //Создаю форму, через которую редактирую инфу о пользователе frmAddClient := TfrmAddClient.Create(frmAddClient); //Для теста беру только имя клиента... frmAddClient.edtNameClient.Text := ADOQuery2.FieldByName('name').AsString; modal := frmAddClient.ShowModal; if modal = mrYes then begin //Обновляю данные в бд ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add('UPDATE tbl_names SET name=:name WHERE uid=:uid'); ADOQuery2.Parameters.ParamByName('uid').Value := uid; ADOQuery2.Parameters.ParamByName('name').Value := frmAddClient.edtNameClient.Text; try ADOQuery2.ExecSQL except on E:EDatabaseError do //Если исключительная ситуация, то сообщить о ней ShowMessage(E.Message); end; // А вот тут как раз пытаюсь обновить инфу о пользователе в гриде.... :-(((( ADOQuery1.Close; ADOQuery1.Open; ADOQuery1.Refresh; end; end; PS: О положении курсора пока не заморачиваюсь, но если покажете как его "сохранить", буду очень благодарен... Последний раз редактировалось acl, 18.03.2008 в 19:32. |