我的查询是在chaxun_form中使用Query1进行的,然后对打印窗体print_form中的控件赋值:
print_form.QuickRep1.DataSet:=Query1;
print_form.QRDBText1.DataSet:=Query1;
.............
查询结果可以显示,但是用QRExpr分组统计的数据显示为零。
同样的查询我在同一个窗口中进行测试,是可以正常显示QRExpr分组统计的数据。
浏览了网上的一些帖子,指出问题是在:QRExpr下的master下的DataSet没有设置?
1、请问如何动态设置QRExpr下的master下的DataSet?
2、是否可以用其他方法解决这个问题?
谢谢各位!

解决方案 »

  1.   

    编写存储过程,把所有数据插入到临时表(包括统计),然后一起返回,客户端仅仅需要显示数据即可。
    例子:
    CREATE procedure rpt_Deliver(@unitcode varchar(100),@sTime varchar(100),@eTime varchar(100)) as
    --生成作为记录集返回的临时表
    declare @cbdwdm varchar(100) 
    declare @rowid int
    declare @dwmc varchar(200)
    declare @counts int
    declare @counts_comp int
    declare @compRate varchar(100)
    set @rowid=0
    if object_id('tempdb..#t') is not null  
      drop table #t
    create table #t(id int,sName varchar(100),counts int,counts_comp int,compRate varchar(100))
    --获取本单位所有用户向下交办记录,得到对应的承办单位代码信息,然后分别统计其各项数据
    declare rs scroll cursor for
    select cbdwdm from ywdj where djsj>=@sTime and djsj<=@eTime and djdwdm=@unitcode and zbbz=1 group by cbdwdm order by cbdwdm
    open rsfetch first  from rs into @cbdwdm
    while @@fetch_status=0
    begin
      set @rowid=@rowid+1
      
      --得到名称
      select @dwmc=isnull(dwmc,'') from info_dw where dwdm=@cbdwdm
      ..........  --生成记录  插入临时表
      insert into #t values (@rowid,convert(varchar(100),@rowid) + '.' + @dwmc,@counts,@counts_comp,@compRate)
      
      fetch next from rs into @cbdwdm
    endclose rs
    deallocate rs--合计信息
    set @rowid=@rowid+1
    declare @allCount int
    select @allCount=isnull(sum(counts),0) from #t 
    --合计办结
    set @rowid=@rowid+1
    declare @allCount_Comp int
    select @allCount_Comp=isnull(sum(counts_comp),0) from #t 
    --合计办结率
    set @rowid=@rowid+1
    declare @all_comprate varchar(100)
    if @allCount=0 or @allCount_Comp=0 
      select @all_comprate='0.0%'
    else
      select @all_comprate=convert(varchar(100),convert(numeric(10,1),@allCount_Comp*100.0/@allCount))+'%'
    --插入合计
    insert into #t values (@rowid,'合计:         ',@allCount,@allCount_Comp,@all_comprate)
    --返回记录集到客户端ado
    select * from #t order by id