smleelms 님이 쓰신 글 :
: 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로 생성을 해야만 하는지
: :
: : 하나하나씩 지정하면 할수는 있을듯 한데 너무 삽질같은데
: :
: : 아시면 간단히 방법이라 알려주세요!!!
: :
: : 지금 까지 내용을 읽어 주셔서 감사합니다..
: :
: :
먼저 답변을 해주셔서 감사드립니닫..
1번 column 추가는 단지 DBgrid에 추가하는것이고 DB에 저장되면 안되거든요..^^;;
2번 query 저장은 table에서 불러오기처럼 단지 한줄이나 두줄코드(욕심인가요 너무 몰라서 ㅋㅋ) 가능한것을 알려고 한것인데..그냥간단히 property 난 event 를 통해서 가능한지를 알고 싶었습니다..
만들다가 삽질하고 싶은 생각인 없어서
다시 하번 답변해 주신것에 대해서 감사드립니다..
혹시 저것 말고 다른 방법이 있으시면 알려주세요..
: :
: :