我要写一个简单的数据库问题。由于使用的地方有三个之多,而数据库是不同的,但我要用的库中的一个表是相同的,我的意思是请教大家:我的EXE运行之后再配置数据库,然后进行对库的操作。(运行的时候肯定先会出现SQL无法连接的字样,但是我可以通过一个按纽来连接数据库,具体的实现就是把ADOCONNECTION的配置从新做一便。简单讲就是点击按纽,出现数据库驱动窗体,然后出现要选择数据库的窗体)。各位大侠,怎么实现的啊?

解决方案 »

  1.   

    用CONNECTIONSTRING,你把一个配置好的CONNECTION的CONNECTIONSTRING
      

  2.   

    用CONNECTIONSTRING,你把一个配置好的CONNECTION的CONNECTIONSTRING拿出来改改适合你的情况然后在按扭里面对CONNECTION来赋值就可以了!
      

  3.   

    可不可以就是电击按纽的时候出现 配置 ADOCONNECTION 时的 几个窗口,让用户自己选择啊?
      

  4.   

    可以说的清楚点的吗,什么仿照BDE的方法?我不懂BDE啊?
      

  5.   

    你的exe就用一个ADOCONNECTION,其它窗口的ADO都共用这个连接不行吗,这样每次配置只配置这么一个,就好像BDE的别名。
      

  6.   

    To huojiehai(海天子):
          大哥,我要用的配置的CONNECTION是要使用几个地方的数据库的,我们是总部,但是要给各个分部的人使用的,让他们自己配置他们的SQL数据库。我的意思是 ,到给他们使用的时候,出现配置数据库的几个步骤就好。
      

  7.   

    最简单的办法是通过odbc连接,先在odbc中建个别名,再用CONNECTION 连接此别名,不管什么库,只要别名相同就行了。
      

  8.   

    还有,在delphi中自带了一个DBDEMOS.udl,你用CONNECTION的data link 连接到它(不要用use connection string 连接),在程序运行前把它(DBDEMOS.udl)配置成你要用的数据库就行了。
      

  9.   

    TO myemwjb():
        大哥,我找到DBDEMOS.UDL了,我用的ADOCONNECTION没有 你说的DATA LINK 啊,你具体讲的是什么意思啊?可以说的再明确点的吗?
      

  10.   

    你做一个数据库配置的窗口就是了!
    你的意思是把ADO的那个连接配置窗口丢给用户用?那太恶心了吧!
      

  11.   

    我现在可以找到DBDEMOS.UDl了,但是我打不开啊。我试了下面的方法:
    winexec('d:\tmp\tmp\DBDEMOS.udl',1);
    ShellExcute(handle,pchar(open'),pchar('Microsoft Data Access-OLE DB Core Services'),pchar(‘d:\tmp\tmp\DBDEMOS.udl'),nil,1);
    我不知道用什么程序打开它,也不清楚它怎么和我的ADOCONNECTION连接啊。
      

  12.   

    做个INI文件吧,多方便,而也不用用户去修改,你只要在网络上帮他们改就行了。
      

  13.   

    我不明白你的意思啊,自己做配置窗口的话,你把用户输入的值赋给ADOconnection就可以了!
      

  14.   

    也对,做个INI文件,但是怎么使用它我不知道啊,我是刚学的DELPHI啊。
      

  15.   

    TO WULOVEXUE:
        我就是要在用户点击一个按纽的时候出现 配置 CONNECTION 的几个窗体,让用户自己配置啊,
      

  16.   

    TO WULOVEXUE:
        我就是要在用户点击一个按纽的时候出现 配置 CONNECTION 的那个窗体(数据连接属性),让用户自己配置啊。
      

  17.   

    我给代码出来,你至少加我50分以上!!!
    你先在FORM1上放一个ADOCONNECTION
    再放一些DATASOURCE、和ADOQUERY呀ADOTABLE之类的连接控件,把这些连接控件指向ADOCONNECTION就可以了,然后再写procedure TForm1.FormCreate(Sender: TObject);
    var
      inifile:Tinifile;
      db1url:string;
    begin
    inifile:= Tinifile.Create(ExtractFilePath(paramstr(0))+'option.ini');if FileExists(ExtractFilePath(paramstr(0))+'option.ini') then
      begin
      db1url:=inifile.readString('Option','db1url','Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=sellOrderform;Data Source=X254C');
      ADOCONNECTION1.ConnectionString:=db1url;
      end
    else
      begin
      inifile.WriteString('Option','db1url','Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=sellOrderform;Data Source=X254C');
      db1url:=inifile.readString('Option','db1url','Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=sellOrderform;Data Source=X254C');
      ADOCONNECTION1.ConnectionString:=db1url;  end;end;这样就可以在你程序的当前目录生成一个OPTION.INI的文件,你就可以在传给客户机时改它的服务器了。
      

  18.   

    我的方法绝对能满足你的要求,把程序中ado的connectionstring用文件连,在你的程序目录下建立一个udl文件,就是你所要的数据连接文件,把ado连接到这个文件,然后做相应的更改,自己先试一下就明白了
      

  19.   

    TO HAPPYHONG:
         大哥,分数好说,是不是少了个 USE 句子啊,怎么显示 'tinifile没定义’啊,还有‘缺少操作’和‘TCONPONENTS AND STRING’不匹配啊?
      

  20.   

    TO ZXB1106:
         大哥,你的方法我知道的,就是使用DELPHI的DBDEMOS.UDL啊,让使用者用前先配置它,这个我早实现了啊。我的意思是把  DBDEMOS.UDL 的数据连接属性 的窗体 ,集成到一个按纽的CLICK事件中,怎么实现啊,大哥?
      

  21.   

    建议你的ADOCONNECTIONSTRING从INI文件中读取,这样在不同的地方只需修改INI文件就可以了.
      

  22.   

    TO HAPPYHONG:
          大哥,程序编译没有问题,但是,一运行就出现一个“对象打开时,不允许操作”的窗体啊?
          我是不是仅仅要把  'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=sellOrderform;Data Source=X254C'); 这句改成我的就可以了啊 ?
      

  23.   

    大哥:
        我是不是,要把 上面的那句改成我的啊。(先用ADOCONNECTION连接一下数据库,产生一个CONNECTIONSTRING,用它覆盖你的啊。)
      

  24.   

    对改成你的!!还有,你把ADOCONNECTION中的LOGINPROMPT的值改为FALSE,不让它运行时出现登录提示。
      

  25.   

    TO HAPPYHONG:
        大哥,LOGINPROMPT我知道设置的。但是ADOCONNECTION有两种配置方法:USE DATA LINK FILE 和 USE CONNECTION STRING。我想实现就有两种方法:1.DATA LINK,我让用户使用前先配置DBDEMOS.UDL,就是通过 数据连接属性 窗口实现。2.CONNECTION STRING,用你的方法生成INTFILE,我每次仅仅需要写一个INIFILE给他就好。        现在的问题是:我的ADOCONNECTION连接只可以用一种方法啊,我想让用户选择使用两者的任意一个。那我在生成EXE的时候,用那个呢(默认是CONNECTION STRING)?
      

  26.   

    当然什么都不要指向先,在FORM1.creat事件前先启动里给用户自已选择服务器的界面,那不是可以了!!也不会出错数据连接不上的错误了。
      

  27.   

    TO HAPPYHONG:
        大哥,我实现是用两个按纽,一是选择LINK,一是选择STRING,问题是,选择STRING的时候可以在BUTTON CLICK事件中写代码读INIFILE文件实现配置,选择LINK呢,怎么弹出窗体、具体怎么实现?
      

  28.   

    这种东西都写烂了:
    USES ADODB调用promptdatasource(handle,'')这个系统窗口,返回值就是你要的ADOCONNECTION的CONNECTSTRING你爱保存到注册表或者INI中都可以,下次就直接读出来就可以了
      

  29.   

    支持楼上的。就是用PromptDataSource函数
      

  30.   

    TO DELPHI_xizhousheng:
        大哥,说的具体点啊,具体应该做那几步,我刚学的DELPHI,还不是太了解。
      

  31.   

    哈哈,DELPHI_xiaozhousheng大哥 ,你的方法真好,就是我想要的。
      

  32.   

    TO DELPHI_xizhousheng:
      请问怎么保存注册表或者INI中,盼望你能回答我的问题
      

  33.   

    TO DEIPHI_xizhousheng:
       大哥,怎么一直是 "对象打开时,不允许操作"的窗体啊,是不是 要先关掉 CONNECTION 还是先关掉 ADOQUERY ?怎么关啊,ADOQUERY1.CLOSE AND ADOCONNECTION什么操作?
      

  34.   

    我的代码都出来了,你怎么还不知道,写回INI,不就是
    inifile.WriteString('Option','db1url','Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=sellOrderform;Data Source=X254C');
    吗?
      

  35.   

    你把那个ADOCONNECTION的CONNECTED改回FALSE就行了,不会出现那个错误提示
      

  36.   

    TO HAPPYHONG:
         大哥,你说的我知道的啊。我已经实现了啊,就是运行时,出现"对象打开时,不允许操作"的窗体啊,是不是要先断掉CONNECTION?
      

  37.   

    TO HAPPYHONG:
         大哥,你的方法对的啊,我也可以实现的。
      

  38.   

    不好意思。怎么最多就只能给100啊,HAPPYHONG,我给了50拉,对不住大家了,欢迎以后解决小弟的问题,分多多