Вопрос про DBGrid,DataSource,DataSet!!! Народ помогите...
Ситуация следующая:
Есть 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???
Всем, Спасибки...
отрисовывать самостоятельно, либо поискать по форуму по словам "Стабильный курсор DBGrid"
а что если я буду добавлять или удалять как тогда мне отрисовывать?
Цитата: John1980
Вопрос:
как мне сделать обновление в DBGrid только той строки, которую я обновил через update???
как мне сделать обновление в DBGrid только той строки, которую я обновил через update???
вычислить область занимаемую обновляемой строкой и сделать ей InvalidateRect
Цитата: GIZMO
вычислить область занимаемую обновляемой строкой и сделать ей InvalidateRect
а если надо добавить или удалить строчку из базы, как там InvalidateRect применить?
InvalidateRect - это функция которая предназаначена для отрисовки клиенской области.
Вам же так или иначе надо будет перезагружать данные. Для этих случаев некоторые компоненты имеют свойство Update - которые позволяют загрузить только изменившиеся записи в таблице.