현재 mdb 파일 <-> ADOConnection <-> ADOQuery <-> DataSource 의 구조로 프로그램이 되어 있습니다.
ADOQuery에 SQL문을 대입해서 데이터를 입력하고, 조회도 합니다.
그런데, 프로그램 초기에는 mdb 파일에 Table이 몇개가 안되었는데요, 현재 mdb 파일내에 Table을 약 100여개 이상을 만들게 되면서 현재의 제 코드에 의문이 생겼습니다.
현재의 코드는 아래와 같습니다. (혼자서 이리저리 만들다보니 많이 어설픕니다.)
AnsiString strTable;
strTable = "Table" + IntToStr(eSystem);
if(DM->ADOQuery1->Active)
DM->ADOQuery1->Close();
DM->ADOQuery1->SQL->Text = "SELECT * FROM " + strTable + " ORDER BY YearDateTime ASC";
DM->ADOQuery1->Open();
DM->ADOQuery1->Append();
DM->ADOQuery1->FieldByName("YearDateTime")->AsDateTime = dtRxTime;
DM->ADOQuery1->FieldByName("Data1")->AsInteger = pdA.PDParams[0];
DM->ADOQuery1->FieldByName("Data2")->AsInteger = pdA.PDParams[1];
DM->ADOQuery1->FieldByName("Data3")->AsInteger = pdA.PDParams[2];
DM->ADOQuery1->FieldByName("Data4")->AsInteger = pdA.PDParams[3];
DM->ADOQuery1->FieldByName("Data5")->AsInteger = pdA.PDParams[4];
DM->ADOQuery1->FieldByName("Data6")->AsInteger = pdA.PDParams[5];
.
.
.
try
{
DM->ADOQuery1->Post();
}
catch(const Exception& e)
{
Application->MessageBox(e.Message.c_str(), "Database Post Error", MB_OK|MB_ICONERROR);
DM->ADOQuery1->CancelUpdates();
}
1. DB에 데이터를 입력할때마다 SELECT문으로 모두 읽어와야 되는가? 입니다. 그때그때 테이블을 지정해야되서 sql문을 실행은 시켜야 되는데, 초기에 테이블에 데이터가 많지않을때야 상관이 없겠지만, 데이터의 양이 늘어나면 이것은 별로 바람직한 방법이 아닌것 같은데 어떤식의 접근이 좋을지 조언해 주시기 바랍니다. (현재의 구조상에서던지, 아니면 다른 DataSet을 사용한다던지)
2. 데이터 조회시에도 "ORDER BY YearDateTime ASC" sql문으로 정렬된 데이터들 중에서, 지정된 수만큼의 최근의 데이터를 가져오고 싶은데, 어떤 명령어를 사용하면 될지 조언바랍니다.
감사합니다.
|