这是 "绝对路径":
object DataModule1: TDataModule1
  OldCreateOrder = False
  Left = 657
  Top = 186
  Height = 150
  Width = 215
  object ADOConnection: TADOConnection
    ConnectionString =
      'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\DelphiPro\Colle\' +
      'Database\wave.mdb;Persist Security Info=False'
    Provider = 'Microsoft.Jet.OLEDB.4.0'
    Left = 40
    Top = 24
  end
  object ADOQuery: TADOQuery
    Connection = ADOConnection
    Parameters = <>
    Left = 128
    Top = 24
  end
end
下面我把路径设为 "相对路径" 怎么就不行了
object DataModule1: TDataModule1
  OldCreateOrder = False
  Left = 657
  Top = 186
  Height = 150
  Width = 215
  object ADOConnection: TADOConnection
    ConnectionString = 
      'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\Database\wave.md' +
      'b;Persist Security Info=False'
    Provider = 'Microsoft.Jet.OLEDB.4.0'
    Left = 40
    Top = 24
  end
  object ADOQuery: TADOQuery
    Connection = ADOConnection
    Parameters = <>
    Left = 128
    Top = 24
  end
end我把程序设为相对路径就不行了,运行不了.   这相对路径到底怎么设置.

解决方案 »

  1.   

    你不会在datamodule.oncreate事件中用代码设置路径,然后再打开连接?
      

  2.   

    F:\DelphiPro\Colle\Database\wave.mdb
    这是完整路径的话,你的相对路径..\Database\wave.mdb,假设你的应用是在colle下,那工作路径就是F:\DelphiPro\Colle, ..\Database\wave.mdb就等于F:\DelphiPro\Database\wave.mdb,你明白..表示什么没有?是上一级目录,一个.才是当前目录,或是直接都不要,就Database\wave.mdb
      

  3.   

    ysai(所有真的都是假的真,所有假的都是真的假) ( ) 信誉:117    Blog   加为好友  2007-06-18 09:24:07  得分: 0  
     
     
       你不会在datamodule.oncreate事件中用代码设置路径,然后再打开连接?
      
     
    我是在这引用的:
    procedure TCollectionForm.FormCreate(Sender: TObject);
    begin
      CollectionForm.Left:=100;
      CollectionForm.Top:=40;
      //CollectionForm.WindowState:=wsMaximized;
      Query1:=TADOQuery.Create(self);
      Query1.Connection:=DataModule1.ADOConnection;
      //CollectionQuery:=tadoquery.create(self);
      //CollectionQuery.connection:=DataModule1.adoconnection;
      GroupBox1.Left:=0;
      GroupBox1.Top:=60;
      GroupBox2.Left:=0;
      Bevel2.Left:=536;
      Bevel2.Top:=7;
      Bevel1.Left:=3;
      Bevel1.Top:=257;
      EditTimeX.text:='0';
      EditPtY.text:='0';
      EditPrY.text:='0';难道跟在哪引用有关系吗?  希望指点~`
      EditAx.text:='0';
      LoginForm:=TLoginForm.Create(self);
      LoginForm.ShowModal;
      Edit1.text:=SysUserName;
    end;
      

  4.   

    1.设计时连接设置为关闭
    2.在数据模块的oncreate事件中
    ADOConnection.connectstring := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
    +ExtractFilePath(application.exename)+'..\Database\wave.mdb;';
    ADOConnection.open;
      

  5.   

    貌似用相对路径该这样的吧 
    ExtractFilePath(application.ExeName) +  
      相对于EXE文件的相对路径
      

  6.   

    都说了..是表示上级目录,c:\Program Files\..是表示C:\,自己到运行里试下.一定是路径错了
      

  7.   

    在uses中添加inifiles
    procedure TMainForm.FormCreate(Sender: TObject);
    var
      filename:string;
      databasename,uid,s:string;
    begin
      Filename:=ExtractFilePath(Paramstr(0))+'mini.ini';
      myinifile:=Tinifile.Create(filename);
      databasename:=myinifile.readstring('配置参数','databasename','');
      dataForm.Conn.Close;
       s:=''   ;
       s:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+databasename+';Persist Security Info=False';
       dataForm.Conn.ConnectionString:=s;
       dataForm.Conn.LoginPrompt:=false;
       dataForm.Conn.Connected:=true;  
    end;
    参考这个试试