多栏式明细账的生成方法
发布时间:2011-06-29 17:56:09 文章来源:www.iduyao.cn 采编人员:星星草
求助:多栏式明细账的生成方法
1、说明:多栏明细显示的各例,是根据用户设置显示生成,所以各列明细项目是不固定的。
2、要求:麻烦高手提供编制的方法,最好有代码复制到回贴中。谢谢!
------解决方案--------------------
一般通过组合sql生成
步骤
1、定义 多栏帐设置
2、根据设置动态生成
-------------------------- 多栏帐显示 Begin
Declare @TableRecoId nvarchar(64) ,@BillNo nvarchar(64) ,@CName nvarchar(64),@enter varchar(1)
Declare @SQlSelect varchar(4000) , @Sql nvarchar(2000) , @ColumnCount SmallInt
Set @ColumnCount = 0
Set @enter = char(13)
Create Table #tmpDetail (
Id [bigint] IDENTITY (1, 1) NOT NULL ,
Fdate [datetime] NOT NULL
)
Set @SQlSelect = 'Select ' + @enter
Set @SQlSelect = @SQlSelect + 'Fdate ' + @enter
Begin
------'---- 科目编码 -----'
DECLARE easyAccountMlt_cursor CURSOR LOCAL FORWARD_ONLY FAST_FORWARD READ_ONLY FOR
select
FinDebitCreditID = a.FinDebitCreditID ,
TableRecoId = a.TableRecoId ,
BillNo = a.BillNo ,
CName = a.CName
from 多栏帐设置 a
where a.RelaId = @多栏帐名称
order by a.RecoOrder
OPEN easyAccountMlt_cursor
FETCH NEXT FROM easyAccountMlt_cursor INTO @FinDebitCreditID , @TableRecoId , @BillNo , @CName
WHILE @@FETCH_STATUS = 0
BEGIN
set @ColumnCount = @ColumnCount + 1
-- 增加字段
set @Sql = 'Alter table #tmpDetail add Col' + convert(varchar,@ColumnCount) + ' decimal(28,10) null Default 0'
Exec ( @sql )
-- 增加对应编码
set @Sql = 'Alter table #tmpDetail add BillNo' + convert(varchar,@ColumnCount) + ' nvarchar(64) null '
Exec ( @sql )
set @Sql = 'Update #tmpDetail set BillNo' + convert(varchar,@ColumnCount) + ' = ''' +@BillNo + ''''
Exec ( @sql )
Set @SQlSelect = @SQlSelect + ', Col' + convert(varchar,@ColumnCount) +' ' + @enter
-- 增加字段-------显示内容 -------
set @Sql = 'Alter table #tmpDetail add cName' + convert(varchar,@ColumnCount) + ' nvarchar(64) null '
Exec ( @sql )
set @Sql = 'Update #tmpDetail set cName' + convert(varchar,@ColumnCount) + ' = ''' +@BillNo + ''''
Exec ( @sql )
Set @SQlSelect = @SQlSelect + ', cName' + convert(varchar,@ColumnCount) +' ' + @enter
FETCH NEXT FROM easyAccountMlt_cursor INTO @FinDebitCreditID , @TableRecoId , @BillNo , @CName
END
CLOSE easyAccountMlt_cursor
DEALLOCATE easyAccountMlt_cursor
------------- 处理对应金额
While @ColumnCount > 0
Begin
set @Sql = 'Update #tmpDetail Set Col' + convert(varchar,@ColumnCount) + ' = '
Set @Sql = @Sql + '(Select SUM( Case When bb.FinDebitCreditID = '''+'D' +''' then aa.CashDebit - aa.CashCredit else - aa.CashDebit + aa.CashCredit End ) ' + @enter
Set @Sql = @Sql + ' From 凭证明细表 aa inner join 科目 bb on aa.FinAccountId = bb.RecoId ' + @enter
Set @Sql = @Sql + ' Where aa.RelaId = a.FinVoucherMasterId' + @enter
Set @Sql = @Sql + ' and bb.BillNo = a.billno'+convert(varchar,@ColumnCount) + ') ' + @enter
Set @Sql = @Sql + 'From #tmpDetail a ' + @enter
Set @Sql = @Sql + 'Where a.FinVoucherMasterId is not null ' + @enter
Exec ( @sql )
print @sql
Set @ColumnCount = @ColumnCount - 1
End
End
-------------------------- 多栏帐显示
Set @SQlSelect = @SQlSelect + 'From #tmpDetail ' + @enter
Set @SQlSelect = @SQlSelect + 'Order By Fdate , Fyear , Fperiod ' + @enter
exec ( @SQlSelect )
Drop Table #tmpDetail
------解决方案--------------------
通过动态生成数据窗口的方式
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
pb里关于数据窗口继承的问题
我的pb里设了一个母数据窗口,规定了样式,颜色,怎么让其他数据窗口都继承这个母dw,不用重复设颜色,样式呢
...
-
如何制作PB中查找的窗口,可以变透明的,而且还始终在最上面的窗口?
如何制作PB中查找的窗口,可以变透明的,而且还始终在最上面的窗口?
-...
-
powerbuilder 控件句柄转换,求教!!
问题:
比如我通过handle取得了一个button的句柄。
那么我能否根据这个句柄的值,又反操作还原这...
-
TAB控件能不能设置成不是3D的?
就类似于多行编辑控件的Border设置为false,变成平面的效果。找不到在哪里设置
------解决方案-----...
-
???新增按钮的问题
设置一个window窗口有个“新增”按钮,如何做出点击新增按钮,编号(varchar2类型)自动+1,点一下变成2,然后录完信息,再打开...
-
如何用回车键enter获得焦点
一个数据录入窗口,如何输完一个数据,按回车键跳到下一个要输入数据的地方 就和tab一样
------解决方案...
-
ole控件 Microsoft Web Browser
我用Microsoft Web Browser这个控件写了一个浏览器 但是不能运行脚本 对于那些需要在本地运行...
-
PB如何做透明的文本
我现在工作空间,应用程序,窗口都创建好了。也加了文本“用户名”,从网上看了要创建可视用户对象,粘贴了代码。但...
-
mdi窗口的sheet从normal变为max时闪烁
我的mdi的sheet默认打开后最大化,在sheet的resize事件中构造着把所有控件按比例伸缩,但每次...
-
如何使getfileopenname函数打开的窗口居中?
如何使getfileopenname函数打开的窗口居中?谢谢
------解决方案--------------------
...