access数据库在运行时会生成一个 .ldb 日志文件 你把数据库刻到光盘上运行当然不行了
建议你在运行时在硬盘上 建一个 temp 将数据库拷进去 再重新指定一下数据库位置就可以了
建议你在运行时在硬盘上 建一个 temp 将数据库拷进去 再重新指定一下数据库位置就可以了
解决方案 »
- 关于Delphi调用C的接口问题
- 求书一本《Delphi高级开发指南》
- 界面死掉了,怎么办?内部代码在执行的
- 除了BorderStyle:=bsNone外,还有别的办法隐藏标题栏么?
- 200分!求一个学java的理由!来者有分!
- 如何将扫描的图片存到sql_server中,解决的定给分
- 救菜鸟于水火之第一问
- 如何手动将VCL中的TFont变量储存到dfm中。
- 求一个用delphi仿的360界面,高分!!!!
- 各位大哥哪有好的delphi组件下载呀!
- Delphi2007 BDE连接问题 your application is not...
- 小第目前在负责做一个医疗信息软件,有做过的朋友进来交流交流
var
s,Apath:string;
begin
with form2 do
begin
s:=ParamStr(0);
Apath:=ExtractFilePath(s);
ADOConnection1.Connected:=false;
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
'Password="";'+
'User ID=Admin;'+
'Data Source='+Apath+'\content\db1.mdb;Mode=Share Deny None;Extended Properties="";'+
'Locale Identifier=2052;Jet OLEDB:System database="";'+
'Jet OLEDB:Registry Path="";'+
'Jet OLEDB:Database Password="";'+
'Jet OLEDB:Engine Type=4;'+
'Jet OLEDB:Database Locking Mode=0;'+
'Jet OLEDB:Global Partial Bulk Ops=2;'+
'Jet OLEDB:Global Bulk Transactions=1;'+
'Jet OLEDB:New Database Password="";'+
'Jet OLEDB:Create System Database=False;'+
'Jet OLEDB:Encrypt Database=False;'+
'Jet OLEDB:Don''t Copy Locale on Compact=False;'+
'Jet OLEDB:Compact Without Replica Repair=False;'+
'Jet OLEDB:SFP=False';
//以上为数据库的动态连接的连接串
ADOConnection1.Connected:=true;
ADODataset1.Active:=false;
ADODataset1.CommandText:='select * from data';
ADODataset1.Active:=true;
end;
end;
是否在这个时候建立??
access数据库在运行时会生成一个 .ldb 日志文件
只要把 ADOCONNECTION.DEFaultDatabase
的值指定为你数据库拷贝到的地方就可以了
例如 c:\temp\content\db1.mdb
ADOCONNECTION.DEFaultDatabase:='c:\temp\content\db1.mdb'
其实 Connectionstring中如果没有特殊要求 并不需要写的那么麻烦 至少你要把包含文件路径的内容去掉 不会有什么影响
我通常都是这么做的
给点代码,老板叫我快快快,我没办法思考了.
Connection.Connected:=False;
Connection.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Data Source=RGate';//RGate 是ODBC DSN名称 也可以用你的方法
Connecction.DefaultDatabase:=GetCurrentDir+'\Data\db1.mdb';
Connection.Connected:=True;
我使用的是 ODBC下的 DSN 一来通过注册表就可以灵活改动 二来也很简单
可以用copyfile()吗?
Connection.Connected:=False;
Connection.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Data Source=RGate';//RGate 是ODBC DSN名称 也可以用你的方法
Connecction.DefaultDatabase:='c:\temp\db1.mdb';
Connection.Connected:=True;
BOOL CopyFile(
LPCTSTR lpExistingFileName, // pointer to name of an existing file
LPCTSTR lpNewFileName, // pointer to filename to copy to
BOOL bFailIfExists // flag for operation if file exists
);
Apath:=ExtractFilePath(s);
if createdirectry(c:\temp) then copyfile('apath+\content\pubdb.mdb','c:\temp\pubdb.mdb');
ADOConnection1.Connected:=false;
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
'Password="";'+
'User ID=Admin;'+
'Data Source='c:\temp\pubdb.mdb;Mode=Share Deny None;Extended Properties="";'+
'Locale Identifier=2052;Jet OLEDB:System database="";'
ADOConnection1.Connected:=true;
ADODataset1.Active:=false;
ADODataset1.CommandText:='select * from pubdata';
ADODataset1.Active:=true;
end;
这样可以吗?
应该没问题
没有这个函数啊.怎么啦.
if directryexist('c:\temp') then copyfile...
else begin
createdir('c:\temp')
copyfile....
end;
copyfile('apath+\content\db1.mdb','c:\temp\pubdb.mdb',true)
我建立了一个.测试用的.然后拷贝,估计是另外一个form建立时也要用到mdb.
我首先在form1建立时,执行拷贝命令.
在form2建立时,执行调用命令
会不会是这个原因?
.mdb文件在光盘中是只读的
去掉它的属性就可以
光盘是只读的,不能写入临时文件
所以有可能错误
copy('extractfilepath(paramstr(0))+content\db1.mdb','c:\temp',true)
为什么不能执行??