小弟刚开始学DELPHI一个星期,天天熬夜,好不容易写了一个管理系统,现在想到别的机器上去测试一下,发现一个大问题(对我来说)。刚开始连数据库的时候使用的是绝对路径,所以不能移植到别的机器上。很烦,不懂。问了别人,说可以刚开始做的时候将所有的数据库控件放到DATA MODULE上。小弟这样做了,只是还是做不出来,没办法只好来请教各位大侠了。不知道怎么写连接的代码。

解决方案 »

  1.   

    你是用什么来连数据库的
    说清楚点
    可以用ODBC连
      

  2.   

    不要用绝对路径,每次都取得他的运行路径!
    例如:
    procedure TForm1.FormCreate(Sender: TObject);
    var
      path:string;
    begin
      path:=extractfilepath(paramstr(0));
      table1.DatabaseName:= path;
      showmessage(path);
    end;
    其他也是根据path改变相应连接字符串
      

  3.   

    我是用ADO控件连接ACCESS数据库,然后用ADOQuery连接,就是想将所有的ADOQuery都放在DATA MODULE里,进行统一的管理,其他的FORM就通过调用这里的东西。然后想让数据库连接时用相对路径。不会写这个代码。
      

  4.   

    99guo(爱DELPHI用VB!无奈!) ,是不是这样写,可以不用ADOconnection控件呢?
      

  5.   

    设置数据库连接时直接把access的路径改为相对路径就可以了,其他什么都不用改。
      

  6.   

    用ADOconnection控件:
    设置ADOconnection.connectionstring属性,或动态赋值
    所有的ADOQuery的属性:
    ADOQuery.connectin:=ADOconnection;
      

  7.   

    可以,不过如果你更改数据库连接又要一个一个改,何必?有不符合对象化和封装要求,用一个ADOconnection,这样好一点。
    如何用的代码Help和书上多,自己看看几分钟就搞定了。
      

  8.   

    我就是想只用一个ADOconnection,将它放置在data module这个数据模块窗体上。比如我双击ADOconnection控件就出现连接对话框了,这样连接得到的是绝对路径。如何能将它设置成相对路径呢?
    我写了这样的一段代码,不知道可以不可以。
    procedure TDataModule1.DataModuleCreate(Sender: TObject);
    var
        Str_DatabasePath:string; //定义一个字符串变量,
    begin
        Str_DatabasePath:=ExtractFilePath(Application.ExeName);
        Str_DatabasePath:=Str_DatabasePath+'db\db1.mdb';{下面的绝对路径怎么改?}    
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Delphi\210\db\db1.mdb;Persist Security Info=False  //这里我是通过双击,得到连接的。是不是只要把Data Source这里改为相对路径就可以了???这样改过之后,我还在DATA MODULE这个窗体上放置了ADOQuery1,通过点击connection属性,这样得到的路径还是绝对路径吗?是否应该通过手工写代码才能实现这样的连接呢?
    end.小弟新手上路,很多东西都不懂,希望各位热心的朋友能帮助我解决这样令我头痛的问题,多谢了!!!
      

  9.   

    你可以放在INI文件里,可以分成几个字符串,然后加起来,赋给adoconnection的connectionstring.
      

  10.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
      path,Str_DatabasePath:string;
    begin
      Str_DatabasePath:=ExtractFilePath(Application.ExeName);
        Str_DatabasePath:=Str_DatabasePath+'db\db1.mdb';
      path:=extractfilepath(paramstr(0));
      adoconnection1.Provider := 'Microsoft.Jet.OLEDB.4.0;Data Source='
                           +Str_DatabasePath+';Persist Security Info=False';
      adoconnection1.Connected := true;
    end;
      

  11.   

    快刀斩!统统修改,所有的都连到一个ADOConnection,然后把所有的Query的连接字符串删除了吧!
      

  12.   

    天啊~我好笨,Delphi好难!还是弄不出来。