1. DBGrid 같은 경우에는 DataSource에서 지정된 내용에 관해 display가 되는걸로 알고 있습니다. 따라서 2가지 방법이 가능할 것 같네요.
먼저 DataSource에 연결된 DB에 Query를 이용하여 새로운 필드를 추가하신 후에 DataSource를 갱신하시면 됩니다.
또는 미리 DB에 해당 필드를 만들어 놓으신 후에 DBGrid의 Columns 속성을 이용하셔서 등록은 해놓으신 후에 해당 column의 Visible 속성을 필요에 따라 핸들링하시면 될듯합니다.
2. 일반적으로 DB엔진에서 지원이 되는 사항이니, 당연히 Query로 가능합니다. 해당 DB마다 명령어의 차이가 조금씩은 있을 수 있겠지요.. 저는 mdb 밖에 해보지 못해서.. 일단 access의 mdb는 됩니다. ^^;;
제가 사용한 허접소스입니다.. 참고가 되시길 바랍니다.
//---------------------------------------------------------------------------
void __fastcall TFormMain::btnMakeTable1Click(TObject *Sender)
{
Screen->Cursor = crHourGlass;
// Intermediate Microsoft Jet SQL for Access 2000
//
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacc2k/html/acintsql.asp?_r=1
AnsiString strQry;
ADOQuery1->Close();
strQry = "CREATE TABLE Table1 (";
strQry += "ID COUNTER PRIMARY KEY, ";
strQry += "Model TEXT(30) WITH COMPRESSION UNIQUE, ";
strQry += "Comment TEXT(100) WITH COMPRESSION";
strQry += ")";
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Text = strQry;
ADOQuery1->ExecSQL();
Application->ProcessMessages();
Screen->Cursor = crDefault;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::btnMakeTable2Click(TObject *Sender)
{
Screen->Cursor = crHourGlass;
// Intermediate Microsoft Jet SQL for Access 2000
//
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacc2k/html/acintsql.asp?_r=1
AnsiString strQry;
ADOQuery1->Close();
strQry = "CREATE TABLE Table2 (";
strQry += "Model TEXT(30) WITH COMPRESSION, ";
strQry += "Phase TEXT(10) WITH COMPRESSION, ";
strQry += "Data_DateTime DATETIME, ";
strQry += "Data_Short SHORT, ";
strQry += "Data_Long LONG, ";
strQry += "Data_Single SINGLE, ";
strQry += "Data_Double DOUBLE, ";
strQry += "Data_Binary BINARY(510), ";
strQry += "Comment MEMO WITH COMPRESSION";
strQry += ")";
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Text = strQry;
ADOQuery1->ExecSQL();
Application->ProcessMessages();
ADOQuery1->Close();
// index(중복가능) 속성 추가
strQry = "CREATE INDEX idx_model ON Table2 (Model)";
ADOQuery1->SQL->Text = strQry;
ADOQuery1->ExecSQL();
Application->ProcessMessages();
strQry = "CREATE INDEX idx_phase ON Table2 (Phase)";
ADOQuery1->SQL->Text = strQry;
ADOQuery1->ExecSQL();
Application->ProcessMessages();
strQry = "CREATE INDEX idx_datetime ON Table2 (Data_DateTime)";
ADOQuery1->SQL->Text = strQry;
ADOQuery1->ExecSQL();
Application->ProcessMessages();
Screen->Cursor = crDefault;
}
//---------------------------------------------------------------------------
최진호 님이 쓰신 글 :
: 요듬에 DB 관련 프로그램을 짜고 있는데
:
: 처음 이라 무지 힘드네요..
: 아래 열거 사항중에서 builder 에서 지원하는것은 어떤것이 있나요
:
:
: 1. DBgrid 에 필드를 추가 할수 있는지(예 >DB에서 찾은 단어의 갯수를 카운트하고 그 숫자를 DBgrid 에 새로 column을 만들고 붙일수 있는지 )
:
: 2. ADOQuery의 내용을 새로운 table을 만들어서 저장할수 있는지
:
:
: DBgrid 나 ADOQuery의 내용을 하나하나씩 지정을 해서 table로 생성을 해야만 하는지
:
: 하나하나씩 지정하면 할수는 있을듯 한데 너무 삽질같은데
:
: 아시면 간단히 방법이라 알려주세요!!!
:
: 지금 까지 내용을 읽어 주셔서 감사합니다..
:
:
:
: