我是这样做的
 var 
  adoq :TADOQUERY;
 begin
  adoq.Connection :=DataModule2.ADOConnection1;
  adoq.Close;
  adoq.SQL.Add('select dwmc from dw_xx where dwid=135');
  adoq.open;
  showmessage(adoq.Fieldbyname('dwdm').AsString);
 end;可是在运行到 adoq.Connection :=DataModule2.ADOConnection1;时就出错了
究竟应该怎样做呢?
再现等待,谢谢

解决方案 »

  1.   

    adoq.Create(self/nil/application);
    必须先创建
      

  2.   

    首先要:uses datamodule2单元var 
      adoq :TADOQUERY;
     begin
      adoq.close;
      adoq.Connection :=DataModule2.ADOConnection1;
      adoq.sql.clear;
      adoq.SQL.Add('select dwmc from dw_xx where dwid=135');
      adoq.open;
      showmessage(adoq.Fieldbyname('dwdm').AsString);
     end;
      

  3.   

    var 
      adoq :TADOQUERY;
     begin
      //here need;
      adoq:=tadoquery.create(nil);
      adoq.Connection :=DataModule2.ADOConnection1;
      adoq.Close;
      adoq.SQL.Add('select dwmc from dw_xx where dwid=135');
      adoq.open;
      showmessage(adoq.Fieldbyname('dwdm').AsString);
      adoq.free;
     end;
      

  4.   

    Fquery:=tquery.Create(nil);
      Fquery.DatabaseName:='sqlca';
      Fquery.SessionName:='default';
      

  5.   

    agree : outer2000(天外流星)
      

  6.   

    with tadoquery.create(nil) do
    begin
    try
    Connection :=DataModule2.ADOConnection1;
    Close;
    SQL.Add('select dwmc from dw_xx where dwid=135');
    open;
      showmessage(adoq.Fieldbyname('dwdm').AsString);
    finally
      free;
    end;
    end;
      

  7.   

    var 
      adoq :TADOQUERY;
     begin
      //here need;
      adoq:=tadoquery.create(nil);
      //adoq.Connection :=DataModule2.ADOConnection1;   
      //千万不要这样用,因为后面用到了adoq.free,会把整个数据库的连接删除掉,其他地方就不能用了
      adoq.ConnectionString := DataModule2.ADOConnection1.ConnectionString;
      adoq.Close;
      adoq.SQL.Add('select dwmc from dw_xx where dwid=135');
      adoq.open;
      showmessage(adoq.Fieldbyname('dwdm').AsString);
      adoq.free;
     end;
    如果我的回答对你有用,我不要分,如果你愿意请到下面这帖送个祝福给我女朋友吧!
    http://expert.csdn.net/Expert/topic/1897/1897923.xml?temp=.300213
      

  8.   

    同意 rikky(读书、心知、生活) 
    学习
      

  9.   

    //adoq.Connection :=DataModule2.ADOConnection1;   
      //千万不要这样用,因为后面用到了adoq.free,会把整个数据库的连接删除掉,其他地方就不能用了
    那应该怎么办呢??
      

  10.   

    想动态生成要,创建一次CREATE 一下,不要声明了一个就要用!
      

  11.   

    小妹妹,GG告訴你怎么寫:
      
         with TADOQuery.create(nil) do
         begin
           connection= DataModule2.ADOConnection1;
           SQL.Text:='select * from tblName';
           Open;
           //這里開始用
           
           
           //用完之后
           Close;
           Free;
         end;
      

  12.   

    with TADOQuery.create(nil) do
    try
      Close;
      Connection :=DataModule2.ADOConnection1;
      SQL.Text:=' select dwmc from dw_xx where dwid=135 ';
      Open;
      ShowMessage(Fieldbyname('dwdm').AsString);
      Open;
    finally
      Close;
      Free;
    end;
      

  13.   

    必须创建你的adoq变量才行。
    adoq:=tadoquery.create(application);
    把上面这句话加到前面去就行了。
      

  14.   

    adoq.Create(self/nil/application);
    self、nil、application有什么不同吗?
      

  15.   

    我已经写了啊,就是紧接着的面那句啊
    adoq.ConnectionString := DataModule2.ADOConnection1.ConnectionString;
    谢谢楼主
      

  16.   

    var
      mqr:TAdoQuery;
    begin
      try
        mqr:=TadoQuery.create(nil);
      with mqr do
      begin
         adoq.Connection :=DataModule2.ADOConnection1;
         adoq.Close;
         adoq.SQL.Add('SQL语句');
         adoq.open;
       end;//end with
      finnaly
        mqr.free;
      end;//end try
    end;  
       
      

  17.   

    以上的问题已经解决了,谢谢各位
    可是现在又出现了新问题
    我希望把以上的查询结果显示在一个dbgrid里
    ADOQueryDm := TadoQuery.create(nil);
    ADOQueryDm.ConnectionString := dm.conn.ConnectionString;
    DBGrid1.DataSource.DataSet := ADOQueryDm;
    ADOQueryDm.Close;
    ADOQueryDm.SQL.Clear;
    sqlstr := 'select dm,mc from dm_mx where dmm="'+s_dmm+'"';
    ADOQueryDm.SQL.Add(sqlstr);
    ADOQueryDm.Open;
    这样有什么问题吗?
    为什么执行到ADOQueryDm.Close;
    就报错呢
    问题解决,马上结贴
    多谢各位gg