求助:
  我现在主程序中调用DLL的方式做一个信息系统,其中涉及到与数据库的连接,我目前做到的是将主程序的TADOCONNECTION通过参数传递给DLL,再由DLL在加载时,传递给DLL的数据模块的TADOCONNECTION,DLL的其他功能模块的如TADOQuery的connection在设计时就连接在DLL的TADOCONNECTION上,这时会有一个问题,就是当DLL加载完成后,进行一个查询用到TADoQUery时,必须要将ADOQuery.connection重新进行DLL的ADOCONNECTION的赋值,如:
ADOQuery.connection:=DLLADOConnection;
请位各位高手,有没有遇到这种情况,有什么解决办法。

解决方案 »

  1.   

    把 _Connection接口 传到DLL中
      

  2.   

    cncharles(旺仔) :
    我是学习不久,请你能不能说的清楚一点,谢谢
      

  3.   

    传递connection简单:http://community.csdn.net/Expert/topic/4834/4834653.xml?temp=.7270471
      

  4.   

    mofaser(鬼画符) :
    我的意思是说,我的主程序的connection已经传给DLL的connection了,只是,以前给DLL的TADOQuery或TADOTable的connection已经加过connection(在FORM设计时),为什么还要在程序代码中重新赋值呢,
      

  5.   

    把这个新的Connection传递给DLL中的原来的那个Connection不就行了?
      

  6.   

    gyf(NetSwimer):
    我已经把主程序的ADOConnection传给了DLL的adoConnection了,并且可以跟踪到这时DLL的ADOconnection的是可以正常连接,只是在一个TADOQuery在引用这个DLL的adoConnection时ADOQuery的connection属性必须要在程序中手工赋值,以前在FORM设计时的赋值失效,经重新赋值的ADOQUERY是可以进行数据查询的,请问是什么原因呀,
      

  7.   

    要么在创建dll窗体的时候,create事件加下面的代码:var
      I: Integer;……  for I := 0 to Self.ComponentCount - 1 do
      begin
        if (Self.Components[I] is TADOQuery) then
          (Self.Components[I] as TADOQuery).Connection := ADOConnection1;
      end;
      

  8.   

    把ADOCONNECTION做参数传进去就可以直接引用了!
      

  9.   

    唔 楼上说得对在你打开DLL窗体函数中的ADOCONNECTION变量前面加个var表示引用传递试试。