请看我的代码:
var
  str,mm:string;
begin
  mm:=ExtractFilePath(Application.ExeName);  adoconnection1.Connected:=false;
//str:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Program Files\delphi7.0\Borland\Delphi7\Projects\导出数据试验\db\base.mdb;Persist Security Info=False';
str:='Provider=Microsoft.Jet.OLEDB.4.0;'+'Data  Source='+mm+'db\base.mdb;'+'Persist Security Info=False';
 adoconnection1.ConnectionString:=str;
 adoconnection1.LoginPrompt:=false;
 adoconnection1.Connected:=true;
end;
为什么我用"//"后面的动态指定可以,但是用str:='Provider=Microsoft.Jet.OLEDB.4.0;'+'Data  Source='+mm+'db\base.mdb;'+'Persist Security Info=False';这条语句动态指定时确出现"找不到可安装的ISAM",困惑啊,用断点调试时,明显看出两条语句是一样的!为什么被我已经注释掉的可以,而后面通过"mm"来动态指定的确会出错呢,请高手指点,急啊!

解决方案 »

  1.   

    你的数据库后面的'+'放错位置了!!!
    str:='Provider=Microsoft.Jet.OLEDB.4.0;'+'Data  Source='+mm+'db\base.mdb'+';Persist 
    Security Info=False';
    这样就可以了
      

  2.   

    zglwxb(放狗咬人地)
    我按你说的做了还是不行啊!55555555555555
      

  3.   

    好乱,好多字符串值,建议用Format啦
      

  4.   

    没认真看不好意思,还有一个地方就是Data Source前的'+'去掉
    var
      str,mm:string;
    begin
      mm:=ExtractFilePath(Application.ExeName);
    adoconnection1.Connected:=false;
    str:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+mm+'db\base.mdb'+';Persist Security Info=False';
     adoconnection1.ConnectionString:=str;
     adoconnection1.LoginPrompt:=false;//在编译的时候就掉,或不要他
     adoconnection1.Connected:=true;
    end;
      

  5.   

    把mm显示在memo中,和不动态指定的比较一下,就知道原因!
      

  6.   

    写错了 ^_^把str显示在memo中,和不动态指定的比较一下,就知道原因!
      

  7.   

    比较过了是一样的,不过还是谢谢你了啊 AngelDevil()