Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.01.2008, 12:55
D_A_S D_A_S вне форума
Прохожий
 
Регистрация: 28.08.2007
Сообщения: 12
Репутация: 10
По умолчанию Обновление данных в DBGrid

Использую БД Access, и естественно компонент ADO и DBGrid для отображения данных в моей программе. У меня в программе есть обработчик, который каждую секунду должен обновлять данные - я это делаю с помощью компонента ADODataSet - изменением параметра Active (false/true). Однако при обновлении таким способом заметно мерцание на экране (т.е. обновление данных в DBGrid). Можно ли как-нибудь по другому обновлять данные, чтобы не было заметно это? Заранее спасибо!
Ответить с цитированием
  #2  
Старый 19.01.2008, 13:07
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Попробуй:
Код:
ADODataSet1.Refresh;
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #3  
Старый 14.03.2008, 18:15
acl acl вне форума
Прохожий
 
Регистрация: 27.02.2008
Сообщения: 23
Репутация: 10
По умолчанию

А вот у меня почему-то не по первому, не по второму способу не получается... Работает только так: Если назначить кнопку на обновление инфы, да и то по 7-10 раз тыкать приходится.... Никто, ничего не подскажет?
Ответить с цитированием
  #4  
Старый 18.03.2008, 10:21
acl acl вне форума
Прохожий
 
Регистрация: 27.02.2008
Сообщения: 23
Репутация: 10
По умолчанию

Аууууу, ХЕЛП-ХЕЛП-ХЕЛП!!!
Помогите с этой бедой. Все форумы облазил, везде пишут, что обновляться может, если сделать клозе; опен;. Но у меня не работает, помогите, чем можете...
Ответить с цитированием
  #5  
Старый 18.03.2008, 11:37
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Код в студию.
Ответить с цитированием
  #6  
Старый 18.03.2008, 19:28
acl acl вне форума
Прохожий
 
Регистрация: 27.02.2008
Сообщения: 23
Репутация: 10
По умолчанию Собссно код

Цитата:
Сообщение от Aristarh Dark
Код в студию.
Сразу скажу, форма через которую редактирую инфу, использую и для добавления, поэтому она называется frmAddClient
Код:
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;
Последние действия привязал к кнопке. Так вот, если раз 5 ткнуть по кнопке, то данные обновляются, а так ничего не обновляется.... :-((((
PS: О положении курсора пока не заморачиваюсь, но если покажете как его "сохранить", буду очень благодарен...

Последний раз редактировалось acl, 18.03.2008 в 19:32.
Ответить с цитированием
  #7  
Старый 19.03.2008, 05:20
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Сделал примерно то же самое, но с базой на SQL сервере - все работает нормально. Попробуй обновление (UPDATE) сделать внутри транзакции.
Местоположение курсора можно запомнить посредством закладок.
Ответить с цитированием
  #8  
Старый 19.03.2008, 09:57
acl acl вне форума
Прохожий
 
Регистрация: 27.02.2008
Сообщения: 23
Репутация: 10
По умолчанию

Цитата:
Попробуй обновление (UPDATE) сделать внутри транзакции
Я вообще не использую транзакции...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:42.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter