Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос про DBGrid,DataSource,DataSet!!! Народ помогите...

14K
06 января 2010 года
John1980
6 / / 30.11.2005
Привет Всем!!!
Ситуация следующая:
Есть DBGrid,DataSource - которые связаны между собой.
Здесь я делаю запрос и он отображается в DBGrid:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
pFIBDataSet->Close() ;
pFIBTransaction->StartTransaction() ;
pFIBDataSet->QSelect->Close() ;
pFIBDataSet->QSelect->SQL->Clear() ;
pFIBDataSet->QSelect->SQL->Add ( "select * from tb1" ) ;
pFIBDataSet->QSelect->ExecQuery() ;
pFIBDataSet->Open() ;
}
..................................................................
произвожу обновление
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int value = Edit2->Text.ToInt() ;
pFIBDataSet->Close() ;
pFIBTransaction->StartTransaction() ;
pFIBDataSet->QSelect->Close() ;
pFIBDataSet->QSelect->SQL->Clear() ;
pFIBDataSet->QSelect->SQL->Add ( "update tb1 set num=" + Edit2->Text + " where id=1" ) ;
pFIBDataSet->QSelect->ExecQuery() ;
pFIBTransaction->Commit() ;

}
//---------------------------------------------------------------------------
и у меня все из DBGrid удаляется!!!
Потом я делаю снова select-запрос, чтобы отобразить данные из таблицы.Но этот метод я думаю не самый хороший, потому что данные снова заносятся в DBGrid и это заметно.
Вопрос:
как мне сделать обновление в DBGrid только той строки, которую я обновил через update???

Всем, Спасибки...
11
07 января 2010 года
oxotnik333
2.9K / / 03.08.2007
отрисовывать самостоятельно, либо поискать по форуму по словам "Стабильный курсор DBGrid"
14K
07 января 2010 года
John1980
6 / / 30.11.2005
а что если я буду добавлять или удалять как тогда мне отрисовывать?
246
07 января 2010 года
GIZMO
1.8K / / 30.07.2004
Цитата: John1980
Вопрос:
как мне сделать обновление в DBGrid только той строки, которую я обновил через update???


вычислить область занимаемую обновляемой строкой и сделать ей InvalidateRect

14K
07 января 2010 года
John1980
6 / / 30.11.2005
Цитата: GIZMO
вычислить область занимаемую обновляемой строкой и сделать ей InvalidateRect



а если надо добавить или удалить строчку из базы, как там InvalidateRect применить?

1
08 января 2010 года
kot_
7.3K / / 20.01.2000
Если надо удалить строку из базы - InvalidateRect там применять не надо.
InvalidateRect - это функция которая предназаначена для отрисовки клиенской области.
Вам же так или иначе надо будет перезагружать данные. Для этих случаев некоторые компоненты имеют свойство Update - которые позволяют загрузить только изменившиеся записи в таблице.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог