|
withFish 님이 쓰신 글 :
: 안녕하세요.. withFish임다..
: 에궁.. MDB루.. 간단한 프로그램하나 만들려구 하는데...
: 이거 참 델파이에서는 mdbd을 Packing도 하구.. 복구두 하구.. 되는데..
: c빌더에서는 어떻게 해야 할지.. ^^a ;;;
: 참고루.. 제가 찾은 모듈을 올립니다.. 이거 어떻게 하면..
: C빌더에서 사용하져??
: 특히, OLEVariant type하구,
: GetDAO_Object 하구,
: CreateOleObject( 'DAO.DBEngine.30') 하구..
: db.CompactDataBase(mdbFIleName,tempFile) 하구..
: db.RepairDataBase( Filenameedit1.Text ) 하구...
: 애들을 어떻게 사용해야 할지. 모르것네여... ^^;;
: 아시는 고수님들은 부디... ^^ ;;
:
: *********************************************************************
: Compressing an Access database
: --------------------------------------------------
: Function Compactmdb(mdbFileName:String): Boolean;
: var db : OLEVariant;
: tempFile : String;
: begin
: result := true;
: try
: screen.cursor := crSQLWait ;
:
:
: db := GetDAO_Object ; // GET THE DATABASE OBJECT
: result := false;
: try
:
: // CREATE A TEMPORARY FILE
: tempFile := ExtractFilePath (mdbFilename) + '\msaTemp.mdb';
:
: // COMPACT THE FILE INTO THE TEMPORARY FILE
: db.CompactDataBase(mdbFIleName,tempFile);
:
: // DELETE THE OLD FILE
: DeleteFile(mdbFileName);
:
: // RENAME THE NEW FILE
: RenameFile (tempFile,mdbFileName);
: Result := true;
: Except on EOLEexception do
: Result := false;
: end
: finally
: db := Unassigned ;
: screen.cursor := crDefault ;
: end;
: end;
: *********************************************************************
안녕하십니까?
한꼬맹이 입니다.
소스를 보니 DAO 디비엔진을 가지고 MDB파일을 압축하는 것이군요...
컨버팅 소스 나갑니다.. (테스트는 안해봤어용..)
bool __fastcall Compactmdb(AnsiString mdbFileName)
{
Variant db;
AnsiString tempFile;
try
{
Screen->cursor = crSQLWait ;
db = Variant::CreateObject("DAO.DBEngine.30");
try
{
tempFile = ExtractFilePath(mdbFilename) + "\\msaTemp.mdb";
db.OleFunction("CompactDataBase", mdbFileName, tempFile);
DeleteFile(mdbFileName);
RenameFile (tempFile,mdbFileName);
}
catch(EOleException &E)
{
ShowMessage("OLE 에러");
return false;
}
}
__finally
{
db = Unassigned;
Screen->cursor = crDefault ;
}
return true;
}
그럼 참고하세요....
|