var a:TADOConnection;
a:=erp.adoconnection1; //a:=erp.adoconnection2;
qy6.connection:=a;
这样可以实现,不过我想实现的是把erp.adoconnection1和erp.adoconnection2定义在表里,实现如下代码:
var a:TADOConnection;
qy1.close;
qy1.sql.clear;
qy1.sql.add(select bl from aa);  //bl的值为erp.adoconnection1或erp.adoconnection2)
qy1.open;
a:=qy1.fieldbyname('bl').asstring;
qy6.connection:=a;
但是a:=qy1.fieldbyname('bl').asstring;这句代码会出错,我知道原因是类型不一致,但要怎么做才能实现将表中的bl字段的值赋给qy6的connection呢?

解决方案 »

  1.   

    一般我都把连接数据库的字符串写在INI文件里,连接的时候读取下就行了。
      

  2.   

    因为表有个字段的值为erp.adoconnection1或erp.adoconnection2,请问有什么好法吗?
      

  3.   

    楼主是想把控件保存在数据库吧,这可不行; 保存连接数据库的字符串吧(即ConnectionString内容),或者保存在ini文件中,对一些数据可以适当的加密后再保存程序启动时,取出数据再赋值给ADOConnection的ConnectionString属性就行
      

  4.   

    不明白你什么意思。为什么  //bl的值为erp.adoconnection1或erp.adoconnection2)存在数据库里面?
    动态连接数据库,你可以用ini文件啊,网上有例子的。你自己去搜搜?
      

  5.   

    就是说,数据库的字段类型没有TADOCONNECTION,所以你不能把TADOCONNECTION存放到数据库的。可以把连接字符串放到数据库里,就是这个字符串:Provider=SQLOLEDB.1;Password=123;Persist Security Info=True;User ID=sa;Initial Catalog=master;Data Source=.