我用D7+ACCESS编了一个程序,我建立的目录是在f:\td,数据文件和TD.EXE
所有的文件都在这个目录里,
现在我想这个程序在其它的电脑里运行,但程序总是提示F:\TD找不到数据文件,
我应如何才能令到程序在其它电脑里的任意目录里都能运行,因为只能在F:\TD中运行就太死板了

解决方案 »

  1.   

    把数据库放在与程序的一下目录里
    var
      path: string;
    begin
      path := ExtractFilePath(Application.ExeName);
      //path就是当前应用程序所在的目录
    end;
      

  2.   

    如果你的数据库文件和exe都放在一个目录下
    你可以这样做得到那个数据库在其他电脑上的当前目录
    ---------------------------
    数据文件的现在完整路径为
    path := extractfilepath(application.ExeName)+'xx.mdb';
    //假设数据名称为xx.mdb
      

  3.   

    是不是connectionstring里的mdb文件使用了完全路径f:\td\*.mdb?
      

  4.   

    在程序加载的时候动态加载mdb文件的路径,修改connectionstring的值
      

  5.   

    将连接字符串中的"f:\td\db.mdb"改成".\db.mdb"就行了
      

  6.   

    让数据库文件和EXE文件在同一目录,然后用下面函数找到路径:
    path := ExtractFilePath(Application.ExeName);
      

  7.   

    应在哪个窗口的什么事件中改写
    connectionstring
      

  8.   

    var
      ConnStr,DBPath:String;
    begin
     DBPath:=ExtractFilePath(Application.ExeName)+'db.mdb;';
    ConnStr:='Provider=Microsoft.Jet.OLEDB.4.0;'
          + 'User ID=Admin;Password=;Data Source='
          + DBPath
          + 'Persist Security Info=False;'
          + 'Jet OLEDB:System database="";'
          + 'Jet OLEDB:Registry Path="";'
          + 'Jet OLEDB:Database Password="";'
          + 'Jet OLEDB:Engine Type=5;'
          + 'Jet OLEDB:Database Locking Mode=1;'
          + '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:Compact Without Replica Repair=True;'
          + 'Jet OLEDB:SFP=False';
        with adoconnection1 do   
          begin
            Close;
            ConnectionString:=ConnStr;
            LoginPrompt:=False;
            Connected:=True;
            Open;
          end;
    end;