C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[41828] Re:DBgrid 관련 질문
smleelms [smleelms] 1096 읽음    2005-09-07 10:52
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로 생성을 해야만 하는지
:
: 하나하나씩 지정하면 할수는 있을듯 한데 너무 삽질같은데
:
: 아시면 간단히 방법이라 알려주세요!!!
:
: 지금 까지 내용을 읽어 주셔서 감사합니다..
:
:
:
:

+ -

관련 글 리스트
41822 DBgrid 관련 질문 최진호 868 2005/09/07
41828     Re:DBgrid 관련 질문 smleelms 1096 2005/09/07
41831         답변 감사드립니다... 최진호 814 2005/09/07
41833             Re:답변 감사드립니다... smleelms 829 2005/09/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.