|
무척 오래간만에 볼포에 오네요..
데이터베이스 관련 프로그램을 하다가 몇가지 문제가 생겨서 이렇게 질문을 올려 봅니다.
일단,
[데이터 베이스]는 Access DB를 사용 했습니다.
[ADO Component]를 이용해서 프로그램을 했구요..
연결된 콘트롤은 DBGrid 입니다.
주기적으로, 데이터가 발생되는것을 모니터링 하기 위해서 만든건데요.
문제는, 데이터가 일정량 이상 늘어나면 더이상 DBGrid에 데이터가 갱신이 되지 않는다는 겁니다.
[질문 1] DBGrid는 Display가 일정량 이상 늘어나면, 더이상 Display가 안된다든지 하는 특징이 있는지 궁급 합니다.
이렇게 해서 안되길래, 방법을 바꿔서,
DBGrid를 StringGrid로 바꿔 봤습니다.
데이터는 스크롤 바를 하나 올려 놓고, 이벤트 프로시져에,
아래와 같이 작성 했습니다.
void __fastcall TFormLogDlg::ScrollBarMsgLogScroll(TObject *Sender,
TScrollCode ScrollCode, int &ScrollPos)
{
int DataStartPos = ScrollPos;//ScrollBarMsgLog->Position;
AnsiString sqlstr = "Select * from MessageLog";// where NO > " + IntToStr(DataStartPos);
DM->ADODataSet1->Recordset = DM->objConn->Execute( WideString(sqlstr), cmdText, TExecuteOptions() );
DM->ADODataSet1->MoveBy(DataStartPos);
int NumData=1;
int NumberOfRecord = DM->ADODataSet1->RecordCount;
ClearGrid( sgMsgLog );
int ReMainedData = ScrollBarMsgLog->Max-DataStartPos;
if( ReMainedData > sgMsgLog->RowCount ){
for( int i=0; i<sgMsgLog->RowCount; i++ ){
sgMsgLog->Cells[0 ][NumData] = DM->ADODataSet1->FieldByName("EventDate" )->AsString;
sgMsgLog->Cells[1 ][NumData] = DM->ADODataSet1->FieldByName("MessageNo")->AsString;
sgMsgLog->Cells[2 ][NumData] = DM->ADODataSet1->FieldByName("MessageString" )->AsString;
sgMsgLog->Cells[3 ][NumData] = DM->ADODataSet1->FieldByName("DataNo" )->AsString;
NumData++;
DM->ADODataSet1->Next();
}
}else{
for( int i=0; i<ReMainedData; i++ ){
sgMsgLog->Cells[0 ][NumData] = DM->ADODataSet1->FieldByName("EventDate" )->AsString;
sgMsgLog->Cells[1 ][NumData] = DM->ADODataSet1->FieldByName("MessageNo")->AsString;
sgMsgLog->Cells[2 ][NumData] = DM->ADODataSet1->FieldByName("MessageString" )->AsString;
sgMsgLog->Cells[3 ][NumData] = DM->ADODataSet1->FieldByName("DataNo" )->AsString;
NumData++;
DM->ADODataSet1->Next();
}
}
}
이렇게 했는데, 문제가 스크롤 속도가 너무너무 느리다는겁니다.
데이터 1-200백개에서는 몰랐는데, 나중에 테스트 하던 데이터가 한 11,000개 정도 되니까, 속도가 아주 현저하게 떨어져서 이건뭐 돌릴수가 없을 정도의 아주 Low Quality의 코드가 되버렸습니다. ㅜㅜ.
문제가 뭔지 정확하게 모르겠네요. 너무 아는게 일천 해서..아무튼, 조언좀 부탁 드리겠습니다.
스크롤의 압박이 좀 걱정이 되네요..
|