ado使用jet无法读取有密码的mdb文件?(200分)

  • 主题发起人 主题发起人 shirong
  • 开始时间 开始时间
S

shirong

Unregistered / Unconfirmed
GUEST, unregistred user!
ado使用jet无法读取有密码的mdb文件?


请看一下代码
procedure TForm1.spbopenClick(Sender: TObject);
var
myaccess:string;
const
mystr1='Provider=%s;Data Provider=%s;Data Source=%s';
myprovider='msdatashape.1';
mydataprovider='Microsoft.Jet.OLEDB.4.0';
begin
if opdgfile.Execute then
begin
edfilename.Text:=opdgfile.FileName;
edpswd.Text:=GetAccessPassword(opdgfile.FileName);//此为读取mdb文件密码
myaccess:=opdgfile.FileName;
adoconnection1.connected:=false;
adoconnection1.ConnectionString:=format(mystr1,[myprovider,mydataprovider,myaccess]);
adoconnection1.Connected:=true;
adoconnection1.GetTableNames(lbtable.items);
end;
end;

此代码在读取无密码的mdb文件时一切正常,但是在读有密码的mdb文件时死活不读,报告说”无法启动
应用程序,工作组信息文件丢失,或是已被其他用户打开”,退出ide环境也不行,在连接串中添加pwd=
uid=passwd=均无效。
甚至我直接编辑adoconnection1.ConnectionString(选Jet.OLEDB.4.0)只要测试连接就会出现这种情况,
但是选provider for odbc driver可以顺利通过,但这样要写dsn文件,我不想这样,求求哪位高人告知我
错在哪里?

我用的是win2000专业版,delphi5,access97

shirong21cn@163.com
 
用向导的话,可以连接吗?如果不行,那么讲Delphi和ADO打了补丁再看看。。。
 
用向导选jet的话不行,补丁全都打了。
 
有用jet成功读取mdb的请说一句,顺便把连接串贴上来看看
 
老大,看了半天你的连接串,不知道你在什么地方指定了数据库打开密码?
如果单纯用Jet来连
Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:/JM.mdb;
Jet OLEDB:Database Password=123//密码在这儿
这样一般就行了。
如果非要用msdatashape那也得:
Provider = MSDataShape;
Data Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:/JM.mdb;Jet OLEDB:
Database Password=123
才行!
 
杜宝老兄
多谢!多谢!
我已经通过了
手头没有ado的资料,翻了一大堆tips,上面说是用password=???或者pd=???就可以了
结果我在字符串里怎么写也过不去,更奇怪的是用向导也不行,老是报错。
没想到要这样写。
请问老兄有无这方面的书,觉的好的推荐几本,电子版的最好。
另请问老兄是否知道如何编程区别access97和2000的mdb文件?




杜宝老兄是否也上csdn?
那边有个人也这样答了我的问题。
 
后退
顶部