ADOQUERY 添加新字段,弹出提示(commandText does not return a result set )。 ADOQUERY的SQL 属性 调用存储过程,跟踪存储过程是对的。 但是和其关联的DBGrid控件,由于该字段没有添加到ADOQUERY . 导致无法显示。对数据库这块不怎么熟,大家看下有方法解决吗。上网查过原因,提到open 和 execsql 。我的程序是返回记录的。还有就是我只是双击 ADOQUERY ,添加字段。和程序本身有多大关系?

解决方案 »

  1.   

    ADOQUERY 得不到数据集当然出问题了
    可以用ADOStoredProc
      

  2.   

    可以用 ADOStoredProc 来做。
    如果仅仅是添加字段报错,应该是Active设为了true 
      

  3.   

     execsql  是用來執行UPDATE,DELETE操作的。如果你這個ADOQUERY已經靜態了字段的話,就換一個QUERY來處理增加字段的功能。
      

  4.   

    用adoquery也是可以的,只是不知道你adoquery里的SQL语句怎么写的,如果是用exec执行存储过程的话,你的存储过程源码最后应该是select XXX语句才能添加字段
      

  5.   

    1.首先, 要保证存储过程有返回你的字段
    2.在adoquery上按右键, 选择fields editor
    3.在弹出的窗口上按右键, 选择add all fields
      

  6.   

    Open执行返回结果集操作(select)
    ExecSQL不返回结果操作(delete, update,insert等)
      

  7.   

    按照六楼说的,清空了Field,能查询了。 但是,第一次查询到什么数据,以后就是这些数据。
    不会根据查询条件变化。而且不能将AdoQuery 的Active 属性设为True,选择时又提示“commandText does not return a result set ”。 我的SQL :
    exec NodeInfo_Div
    :FunctionType(存储过程具体是:)create  Proc NodeInfo_Div  @FunctionType int
    as 
    begin
      set nocount on
     
      CREATE TABLE #temp1 (
            [CNAME] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL, 
            [NODEID] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL, 
            [CIP] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL,
            [CMAC] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
            [DWLASTONLINETIME] [datetime] NOT NULL,
           [CUSERINFO_NAME] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL,
            [CUSERINFO_ID] [varchar] (32) COLLATE Chinese_PRC_CI_AS NULL ,
          [CUSERINFO_GROUP] [varchar] (32) COLLATE Chinese_PRC_CI_AS NULL ,
          [CUSERINFO_TEL] [varchar] (48) COLLATE Chinese_PRC_CI_AS NULL ,
          [CSN_HD] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL, 
            [CUSERINFO_OTHER] [varchar] (128) COLLATE Chinese_PRC_CI_AS NULL 
     )
      
       CREATE TABLE #temp2 (
            [CNAME] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL, 
            [NUM] [int] NOT NULL DEFAULT (0) ) 
       if  @FunctionType = 1
        begin
        declare @UpdateNode_Info varchar(512)
        set @UpdateNode_Info = 'insert into #temp1 select distinct a.CNAME,dbo.f_int2hex(a.DWNODEID) as NODEID,a.CIP,a.CMAC,a.DWLASTONLINETIME,a.CUSERINFO_NAME,a.CUSERINFO_ID,a.CUSERINFO_GROUP,a.CUSERINFO_TEL,a.cSN_HD,a.CUSERINFO_OTHER   FROM CLTList a,ComputerTable b where a.CGuid=b.Guid'
        exec(@UpdateNode_Info)
        select * from #temp1  
        end  
      else if  @FunctionType = 2
        begin
        declare @StatisticsNode_Info varchar(255)
        set  @StatisticsNode_Info ='insert into #temp2 select c.cname,count(a.dwgroupid) as groupnum from CLTList a ,ComputerTable b,CGroup c where a.cGuid=b.guid and a.dwgroupid=c.dwnodeid group by c.cname'
        exec(@StatisticsNode_Info)
        select * from #temp2
        end
      else if @FunctionType = 3
        begin
        declare @UpdateAllNode_Info varchar(512)
        set @UpdateAllNode_Info = 'insert into #temp1 select distinct a.CNAME,dbo.f_int2hex(a.DWNODEID) as NODEID,a.CIP,a.CMAC,a.DWLASTONLINETIME,a.CUSERINFO_NAME,a.CUSERINFO_ID,a.CUSERINFO_GROUP,a.CUSERINFO_TEL,a.cSN_HD,a.CUSERINFO_OTHER   FROM CLTList a'
        exec(@UpdateAllNode_Info)
        select * from #temp1 
        end 
      
    end