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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[827] 동적DB생성과 BDE자동 등록 응용예제
또Lie [tin20] 7136 읽음    2008-12-09 15:08
걍 심심해서 한번 짜봤는데요.. 잘되네요..

우선 DB파일이 있어야죠??

순서는 대략 이렇습니다..

1. DB작성 MS 엑세스 에서 내보내기 -> 파라독스 버젼 5

2. 소스파일이 포함된곳에 DB파일을 집어 넣습니다.

그담에 이소스를 원하는곳에 붙여넣습니다
/*
******************************************************************************
    DBCreate();
    String DBname       : Database name
    String DBroute      : DB local path
    String DBtype       : DB Type (STANDARD,MSDB,PARADOX,More and More)
    String SQLCommand   : SQL Command Insert
    int DBCnt               : DB Create Count
******************************************************************************
*/
void __fastcall Test::DBCreate(String DBname, String DBroute, String DBtype, String SQLCommand, int DBCnt)
{
    String DBSelfRoute;
    if(DBroute == NULL)
    {
        DBSelfRoute = ExtractFilePath(Application->ExeName);
        AddBDEAlias(DBname,DBSelfRoute,DBtype);
    }
    else
    {
        AddBDEAlias(DBname,DBroute,DBtype);
    }
    switch(DBCnt)
    {
        case 1:
            Query_TestDB1    = new TQuery(NULL);// virtual Query Create.
            DataSource1     = new TDataSource(NULL);// DataSource Create.
            Query_TestDB1->DatabaseName = DBname;  // Set DataBase Name.
            Query_TestDB1->SQL->Text = SQLCommand; // DataBase Target DB Select
            Query_TestDB1->RequestLive = true;// R/W = true
            Query_TestDB1->Active = true;// Active Database = true
            DataSource1->DataSet = Query_TestDB1; // Connect to Database          
            Query_TestDB1->Open();// DB Open.
            Query_TestDB1->Refresh();// DB Refresh                                            
            Query_TestDB1->First();// DB index number -> First
            break;
        case 2:
            Query_TestDB2     = new TQuery(NULL);// virtual Query Create.
            DataSource2     = new TDataSource(NULL);//DataSource Create.
            Query_TestDB2->DatabaseName = DBname; // Set DataBase Name.
            Query_TestDB2->SQL->Text = SQLCommand; // DataBase Target DB Select
            Query_TestDB2->RequestLive = true;  // R/W = true
            Query_TestDB2->Active = true;// Active Database = true
            DataSource2->DataSet = Query_TestDB2;  //Connect to Database
            Query_TestDB2->Open();  // DB Open.
            Query_TestDB2->Refresh(); // DB Refresh
            Query_TestDB2->First();   // DB index number -> First
            break;
        default : break;
    }
}

/*
******************************************************************************
    AddBDEAlias();
    AnsiString sAliasName   : Database name
    AnsiString sAliasPath   : DB local path
    AnsiString sDBDriver    : DB Type (STANDARD,MSDB,PARADOX,More and More)
******************************************************************************
*/
void __fastcall TBoardSection::AddBDEAlias(AnsiString sAliasName, AnsiString sAliasPath,
AnsiString sDBDriver)
{
    hDBISes h;
    DbiInit(NULL);
    DbiStartSession("dummy", h, "");
    DbiAddAlias(NULL, sAliasName.c_str(), sDBDriver.c_str(), ("PATH:" + sAliasPath).c_str(), true);   
    DbiCloseSession(h);   
    DbiExit;   
}


그리고 헤더 파일입니다용

public:
    TQuery      *Query_TestDB1 ;
    TDataSource *DataSource1;

    TQuery      *Query_TestDB2 ;
    TDataSource *DataSource2;



혹필요하실분이 있을지 모르것네요;;;

전 필요해서 만들었는디...

쓰는법은..;;

DBCreate("TEST1",NULL,"PARADOX","Select * from userDB1.DB",1);
DBCreate("TEST2",NULL,"PARADOX","Select * from userDB2.DB",2);

TEST1 위의 인자를 NULL을 주면 exe파일이 생성되는 폴더의 DB path가 되구요..

경로를 적어주면 그경로 따라 path가 되요

유용하게 쓰시길;;;(필요읍는거 올린거 아닌감;;)

+ -

관련 글 리스트
827 동적DB생성과 BDE자동 등록 응용예제 또Lie 7136 2008/12/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.