有一个dm,dm内有一个adoconnection ,unit1单元是一个存放公共函数的单元,这个单元中有一个函数及变参go_connecttion:Tadoconnection,及一个函数如下
unit1 unit
var
 go_connection:Tadoconnection
function GSetupValue(segmentname,setupname:string):variant;
var tmps,tmpc:string;
begin
  pubquery:=TKqADOQuery.create(nil);
  result:='';
    if pubquery.active then pubquery.Close;
    pubquery.Connection:=go_connection;
    pubquery.sql.clear;
    pubquery.sql.add('select shezdm,shezmc,shezlx,youxz from gsetup');
    pubquery.open;
end
dm引用unit1,中的createform函数是这样定义的
   try
   adoconn1.Open;
   except
   end;
   go_connection:=adoconnection;
 给unit1中的go_connection赋值
 在主窗体创建的时候使用GSetupValue(segmentname,setupname:string)函数时提示pubquery miss connection or connectionstring, 
 
这个函数中的pubquery需要连接dm中的adoconnection,如果pubquery.Connection:=go_connection
改成pubquery.Connection:=dm.adoconnection 提示引用地址错误,
请问这个问题有什么好的方法解决??

解决方案 »

  1.   

    pubquery Create后要给ConnectionString赋值
      

  2.   

    go_connection这个时候是空的吧?
      

  3.   

    我也认为这时候go_connectiong是空的,但是我在dm的create中给它赋值了,这样难道不行么??
      

  4.   

    你直接给pubquery.ConnectionString赋值吧
      

  5.   

    在工程单元中将dm和formain单元的位置调一下;
    就是将dm放在主单元窗体创建前面。
      

  6.   

    program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {dm: TDataModule};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(Tdm, dm);   //就是这一句;要放在主窗体创建前。
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
      

  7.   


    楼主是要传 connection 参数是吧。传过来就是说丢失连接串。其实连接串如果赋值的话,也会报这个错。
    应该不是 connectionstring 没有赋值问题。也许我楼上这兄弟方法能解决。关注中 ...