我用的是adoconnection+adoquery+datasource,如何设置相对路径呢。我现在的设置方法是在adoconnecitonstring 里面设定的。用绝对路径找到数据库,连接运行都没有问题。 昨天晚上我在连接的第二步,即输入数据库名称里,输入的是data\safety.mdb(程序和data在同一目录里),连接运行都成功,可是今天连接就不行了,其间我重新装过delphi7. 另外我输入  .\data\safety.mdb 连接行不通,找不到数据库
      输入 ..\data\safety.mdb测试连接成功,程序运行时不成功
      输入...\data\safety.mdb测试连接成功,程序运行时不成功
      输入....\data\safety.mdb测试连接行不通了请给一个能连接通的相对路径,现在我编的这个程序,需要在其他机器上直接运行。急用!
多谢!

解决方案 »

  1.   

    procedure Tfrom.FormCreate(Sender: TObject);
    var datepath:string;
    begin
    datepath:=ExtractFilePath(Application.ExeName);{程序自动找到执行程序路径}  AdoConnection.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;DataSource='+datepath+'data\safety.mdb;Persist Security Info=False';{AdoConnection.ConnectionString也自动生成}
    AdoConnection.Connected:=true;
    adoquery.Active:=true;
    ...{自己接着写}
    end;
      

  2.   

    AnsiString AppDir=ExtractFilePath(Application->ExeName);
      acStuMan->ConnectionString=WideString("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+AppDir+"StuMan.mdb;Persist Security Info=False");//这里!
      try
      {
        acStuMan->Open();
      }
      catch(...)
      {
        Application->ShowMainForm=false;
        Application->MessageBoxA("不能连接数据库!","提示信息",MB_OK|MB_ICONERROR);
        Application->Terminate();
      }
      

  3.   

    路径用Opendialog设置 看能行否
      

  4.   

    path:=ExtractFilePath(Application.ExeName)+'\data\safety.mdb ';
      

  5.   

    var
     datepath.exepath:string;
    begin
      
        ChDir(ExtractFilePath(Application.ExeName));{程序自动找到执行程序路径} 
        ChDir('..');{到上个路径啊}
        exepath:=getcurrentdir();
        datapath:=..........{自己写了啊}
      

  6.   

    path:=ExtractFilePath(Application.ExeName)+'\data\safety.mdb ';
    我觉得ziqing(delphi转.net中)的这个办法挺好。
    1.你不要在设计时指定ConnectionString属性。
    2.你不要担心用户的目录和你的设置不一样,因为ExtractFilePath(Application.ExeName)确保程序可以自行查找到安装目录的位置。
      

  7.   

    datasource:=extractFilePath(paramstr(0))+'db1.mdb';
    ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+datasource+';Persist Security Info=False';是ACCESS下的,其他的你可以自己改
      

  8.   

    不需要相对路径,如果非要按照你说的那样去做,你可以先执行API函数SetCurrentDirectory
    SetCurrentDirectory(extractFilePath(paramstr(0)))
    这样在程序中在使用你的相对路径,你还是好好看看WINDOWS基本知识
      

  9.   

    感谢各位,尤其是 yq3woaini(hahhajing(一星奋斗中...)) 做了一个范例给我!