注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

hurt0759的个人主页

人生常态--跋涉.人生暂态--歇息.

 
 
 

日志

 
 

VB + SQL 存储过程中。被统计的字段出现NULL值问题  

2011-10-28 11:48:08|  分类: IT |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

SQL 存储过程中。被统计的字段出现NULL值时。在VB 中调用会提示对象已关闭,其时是因为返回的RECORDSET记录集为空。方法:把被统计的字段加个默认值。

 

 

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

 

 

ALTER   procedure [应付款查询1] @小 as datetime,@大 as datetime
 as
set nocount on

declare @系统编号 int,
 @编号 nvarchar(255),
 @公司 nvarchar(255) ,
 @结算货币 nvarchar(255),
 @联系人 nvarchar(255),
 @电话 nvarchar(255),
 @传真 nvarchar(255),
 @结欠余额 numeric(18,5) ,
 @上期结余 numeric(18,5) ,
 @进货 numeric(18,5) ,
 @进货退货 numeric(18,5) ,
 @付款 numeric(18,5) ,
 @增加应付款 numeric(18,5) ,
 @减少应付款 numeric(18,5) ,
 @期未余额 numeric(18,5) ,
 @总计 as numeric(18,5),
 @上期增加 as numeric(18,5),
 @上期减少 as numeric(18,5),
 @无交易 as int

create table #应付帐款0 (
 系统编号 int,
 编号 nvarchar(255),
 公司 nvarchar(255) ,
 结算货币 nvarchar(255),
 联系人 nvarchar(255),
 电话 nvarchar(255),
 传真 nvarchar(255),
 上期结余 numeric(18,5) default 0 ,
 进货 numeric(18,5) default 0 ,
 进货退货 numeric(18,5) default 0 ,
 付款 numeric(18,5) default 0 ,
 增加应付款 numeric(18,5) default 0 ,
 减少应付款 numeric(18,5) default 0 ,
 期未余额 numeric(18,5) default 0)

 
--exec ( 'declare 货商表 cursor for select ywb_hsb_系统编号,ywb_hsb_编号,ywb_hsb_公司,ywb_hsb_结欠余额,ywb_hsb_结算货币,ywb_hsb_联系人,ywb_hsb_公司电话,ywb_hsb_传真 from ywb_货商表 where ywb_hsb_公司 like ' + '  ''%'+@key+'%''' +' order by ywb_hsb_编号,ywb_hsb_公司')
exec ( 'declare 货商表 cursor for select ywb_hsb_系统编号,ywb_hsb_编号,ywb_hsb_公司,ywb_hsb_结欠余额,ywb_hsb_结算货币,ywb_hsb_联系人,ywb_hsb_公司电话,ywb_hsb_传真 from ywb_货商表  ' +  ' order by ywb_hsb_编号,ywb_hsb_公司')

open 货商表

fetch next from 货商表 into @系统编号,@编号,@公司,@结欠余额,@结算货币,@联系人,@电话,@传真
while @@fetch_status = 0
begin

 select @上期增加 = 0
 select @上期减少 = 0
 select @无交易 = 0
 
 select @上期增加 =@上期增加 +  isnull(sum(ywb_采购入库表.ywb_cgrkb_小计),0)--isnull(sum(ywb_wgrkb_小计) ,0)
  FROM ywb_采购入库表 LEFT OUTER JOIN
      ywb_采购单 RIGHT OUTER JOIN
      ywb_采购表 ON
      ywb_采购单.ywb_cgd_系统编号 = ywb_采购表.ywb_cgb_确认单系编 ON
      ywb_采购入库表.ywb_cgrkb_确认表系编 = ywb_采购表.ywb_cgb_系统编号 LEFT OUTER
       JOIN
      ywb_采购入库单 ON
      ywb_采购入库表.ywb_cgrkb_入库单系编 = ywb_采购入库单.ywb_cgrkd_系统编号
where ywb_cgb_客户系编 = @系统编号 and ywb_cgrkd_审核日期 is not null
 and ywb_cgrkd_审核日期 < @小

--此处要更改
 select @上期减少 = @上期减少 +isnull(sum(ywb_采购退货表.ywb_cgthb_小计),0)-- isnull(sum(ywb_wgthb_小计) ,0)
  FROM ywb_采购退货表 LEFT OUTER JOIN
         ywb_采购退货单 ON  ywb_采购退货单.ywb_cgthd_系统编号 = ywb_采购退货表.ywb_cgthb_退货单系编
   where ywb_cgthb_客户系编 = @系统编号 and ywb_cgthd_审核日期 is not null
 and ywb_cgthd_审核日期 < @小

  select @上期减少 = @上期减少 + isnull(sum( ywb_wgfkd_付款金额 - ywb_wgfkd_增加应付款 + ywb_wgfkd_减少应付款 ) ,0)
  from dbo.ywb_外购付款单
  where ywb_wgfkd_货商系编 = @系统编号 and ywb_wgfkd_审核 = '是'
 and ywb_wgfkd_审核日期 < @小

  select @上期结余=@结欠余额+ @上期增加 -@上期减少
          

 select @进货= isnull(sum(ywb_采购入库表.ywb_cgrkb_小计),0)
FROM ywb_采购入库表
 
 LEFT OUTER JOIN
      ywb_采购单 RIGHT OUTER JOIN
      ywb_采购表 ON
      ywb_采购单.ywb_cgd_系统编号 = ywb_采购表.ywb_cgb_确认单系编 ON
      ywb_采购入库表.ywb_cgrkb_确认表系编 = ywb_采购表.ywb_cgb_系统编号 LEFT OUTER
       JOIN
      ywb_采购入库单 ON
      ywb_采购入库表.ywb_cgrkb_入库单系编 = ywb_采购入库单.ywb_cgrkd_系统编号
 where ywb_cgd_客户系编 = @系统编号 and ywb_cgrkd_审核日期 is not null
 and ywb_cgrkd_审核日期 >= @小
 and ywb_cgrkd_审核日期 <= @大
 
--此处要更改
 
 select @进货退货=isnull(sum(ywb_采购退货表.ywb_cgthb_小计),0)
FROM ywb_采购退货表 LEFT OUTER JOIN
      ywb_采购退货单 ON  ywb_采购退货单.ywb_cgthd_系统编号 = ywb_采购退货表.ywb_cgthb_退货单系编
   where ywb_cgthb_客户系编 = @系统编号 and ywb_cgthd_审核日期 is not null
 and ywb_cgthd_审核日期 >= @小
 and ywb_cgthd_审核日期 <= @大


 select @付款=isnull(sum(ywb_wgfkd_付款金额) ,0)
  from ywb_外购付款单
 where ywb_wgfkd_货商系编 = @系统编号 and ywb_wgfkd_审核 = '是'
 and ywb_wgfkd_审核日期 >= @小
 and ywb_wgfkd_审核日期 <= @大

 select @增加应付款=isnull(sum(ywb_wgfkd_增加应付款) ,0)
  from ywb_外购付款单
 where ywb_wgfkd_货商系编 = @系统编号 and ywb_wgfkd_审核 = '是'
 and ywb_wgfkd_审核日期 >= @小
 and ywb_wgfkd_审核日期 <= @大

 select @减少应付款=isnull(sum(ywb_wgfkd_减少应付款) ,0)
  from ywb_外购付款单
 where ywb_wgfkd_货商系编 = @系统编号 and ywb_wgfkd_审核 = '是'
 and ywb_wgfkd_审核日期 >= @小
 and ywb_wgfkd_审核日期 <= @大
 
 select @期未余额 = @上期结余 + @进货 - @进货退货  - @付款 + @增加应付款 - @减少应付款

 insert into #应付帐款0 (
    系统编号,编号, 公司 ,结算货币 ,联系人 ,电话 ,传真 ,上期结余 ,进货 ,进货退货,付款,增加应付款,减少应付款,期未余额) values (
    @系统编号,@编号,@公司 ,@结算货币 ,@联系人 ,@电话 ,@传真 ,@上期结余 ,@进货 ,@进货退货,@付款,@增加应付款,@减少应付款,@期未余额)

  fetch next from 货商表 into @系统编号,@编号,@公司,@结欠余额,@结算货币,@联系人,@电话,@传真
end

close 货商表
deallocate 货商表
set nocount off
exec (' select * from #应付帐款0 ' )
drop table #应付帐款0

 

 

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

  评论这张
 
阅读(866)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017