W woodstock Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-15 #1 在ms access中,有一项“压缩和修复数据库”功能,能够把数据库中 已删除的字段真正删除,请问如何在程序中如何实现。 (用ADO + Access 2000)
S superhippo Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-15 #2 var Engine: DBEngine; begin Engine:=CoDBEngine.Create; Engine.CompactDatabase('OldDB.mdb','NewDB.mdb','',0,''); DeleteFile('OldDB.mdb'); RenameFile('NewDB.mdb','OldDB.mdb); Engine.Free; end;
var Engine: DBEngine; begin Engine:=CoDBEngine.Create; Engine.CompactDatabase('OldDB.mdb','NewDB.mdb','',0,''); DeleteFile('OldDB.mdb'); RenameFile('NewDB.mdb','OldDB.mdb); Engine.Free; end;
W woodstock Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-15 #5 to superhippo, DBEngine是什么东西? 在那里声明? 我这个程序中不使用BDE,所以包含BDE的单元都不用的。
S superhippo Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-16 #6 uses dao2000 {或是dao97} 单元所在目录 delphi5/ocx/servers
C clark Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-17 #7 好像是个老问题,照着vb程序翻译一下即可,用DAO实现,下面是我程序中的一段,应该没问题 var dao:OLEVariant; begin Adoconnection.Close screen.Cursor:=crHourGlass; dao:=CreateOleObject('DAO.DBEngine.36'); dao.CompactDatabase(DBName,tempdaname); DeleteFile(DBName); RenameFile(tempdbname,DBName); screen.Cursor:=crDefault; dao:=NUll; Adoconnection.Open; end;
好像是个老问题,照着vb程序翻译一下即可,用DAO实现,下面是我程序中的一段,应该没问题 var dao:OLEVariant; begin Adoconnection.Close screen.Cursor:=crHourGlass; dao:=CreateOleObject('DAO.DBEngine.36'); dao.CompactDatabase(DBName,tempdaname); DeleteFile(DBName); RenameFile(tempdbname,DBName); screen.Cursor:=crDefault; dao:=NUll; Adoconnection.Open; end;
W woodstock Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-17 #8 谢谢superhippo 和clark 提供的方法。 怎么找不到给你们加分的地方。?? -----这是上面显示的内容,是不是论坛程序出错? 问题讨论没有结束 ... woodstock,对此问题,您可以: 8 添加您对此问题的注释(请注意换行)
谢谢superhippo 和clark 提供的方法。 怎么找不到给你们加分的地方。?? -----这是上面显示的内容,是不是论坛程序出错? 问题讨论没有结束 ... woodstock,对此问题,您可以: 8 添加您对此问题的注释(请注意换行)
杜 杜宝 Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-17 #9 都用ADO了,还用DAO,真是... 如果客户机上没装DAO3.5或3.6呢?(版本不对)不就不行了? 用ADOX就行了!!!
W woodstock Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-18 #11 to 杜宝: 怎样用ADOX ? to 小芮: KADAO有是什么东西。怎么做? 用dao:=CreateOleObject('DAO.DBEngine.36');确实可以在我的计算机上运行通过 但是担心版本的问题。客户计算机上怎么办!? 用 Engine:=CoDBEngine.Create; Engine.CompactDatabase('OldDB.mdb','NewDB.mdb','',0,''); 的方式,应该是可以得,我看Delphi带的DAO35.hlp帮助文件,确实也是 这么做的,但是不能在我计算机上运行,出错原因是“类没有注册”。
to 杜宝: 怎样用ADOX ? to 小芮: KADAO有是什么东西。怎么做? 用dao:=CreateOleObject('DAO.DBEngine.36');确实可以在我的计算机上运行通过 但是担心版本的问题。客户计算机上怎么办!? 用 Engine:=CoDBEngine.Create; Engine.CompactDatabase('OldDB.mdb','NewDB.mdb','',0,''); 的方式,应该是可以得,我看Delphi带的DAO35.hlp帮助文件,确实也是 这么做的,但是不能在我计算机上运行,出错原因是“类没有注册”。
L lzliang Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-19 #12 “压缩和修复数据库”功能: Function CompactAndRepair(sOldMDB : String; sNewMDB : String) : Boolean; const sProvider = 'Provider=Microsoft.Jet.OLEDB.4.0;'; var oJetEng : JetEngine; begin sOldMDB := sProvider + 'Data Source=' + sOldMDB; sNewMDB := sProvider + 'Data Source=' + sNewMDB; try oJetEng := CoJetEngine.Create; oJetEng.CompactDatabase(sOldMDB, sNewMDB); oJetEng := Nil; Result := True; except oJetEng := Nil; Result := False; end; end; 示例: if CompactAndRepair('e:/Old.mdb', 'e:/New.mdb') then ShowMessage('Successfully') else ShowMessage('Error…'); 重要注意: 1- 在你的uses语句中加入JRO_TLB单元。 2- 在压缩的过程中,其它人不能打开或使用数据库。 3- 如果你的编译器报告没有找到JRO_TLB单元,就按以下步骤去做: a) 在Delphi IDE中选择Project - Import Type Library. b) 往下翻直到你找到“Microsoft Jet and Replication Objects 2.1 Library”. c) 点击Install按钮 d) 重新编译
“压缩和修复数据库”功能: Function CompactAndRepair(sOldMDB : String; sNewMDB : String) : Boolean; const sProvider = 'Provider=Microsoft.Jet.OLEDB.4.0;'; var oJetEng : JetEngine; begin sOldMDB := sProvider + 'Data Source=' + sOldMDB; sNewMDB := sProvider + 'Data Source=' + sNewMDB; try oJetEng := CoJetEngine.Create; oJetEng.CompactDatabase(sOldMDB, sNewMDB); oJetEng := Nil; Result := True; except oJetEng := Nil; Result := False; end; end; 示例: if CompactAndRepair('e:/Old.mdb', 'e:/New.mdb') then ShowMessage('Successfully') else ShowMessage('Error…'); 重要注意: 1- 在你的uses语句中加入JRO_TLB单元。 2- 在压缩的过程中,其它人不能打开或使用数据库。 3- 如果你的编译器报告没有找到JRO_TLB单元,就按以下步骤去做: a) 在Delphi IDE中选择Project - Import Type Library. b) 往下翻直到你找到“Microsoft Jet and Replication Objects 2.1 Library”. c) 点击Install按钮 d) 重新编译