在为客户设置单据打印过程中,偶然发现系统自带的字段在打印模板活动文本中却怎么也取不到,在查询单据序时薄中又发现做的单据显示也不正常,显示为一行空白,双击却可以调出该单据!我就纳闷了,新建的帐套怎么才做第一张单据就出这样的问题,怎么也想不到为什么,看其他演示帐套却没有同样问题。我仔细回想我做过的改动,估计问题就出在单据自定义时可能对数据造成了些破坏!
虽然新建帐把数据引入可以解决这一问题,但是一想,现在客户这边还好是新开的帐套,要是以后做了很多单据以后再发现类似的问题,那要再靠新建帐来解决肯定不实际,于是得好好研究下原因!
一段代码:
go
if exists (select * from sysobjects where name='icchatbilltitle_temp')
drop table icchatbilltitle_temp
else
select * into icchatbilltitle_temp from icchatbilltitle
delete from icchatbilltitle
insert into icchatbilltitle select * from AIS20070125200647.dbo.icchatbilltitle
go
if exists (select * from sysobjects where name='ictablerelation_temp')
drop table ictablerelation_temp
else
select * into ictablerelation_temp from ictablerelation
delete from ictablerelation
insert into ictablerelation select * from AIS20070125200647.dbo.ictablerelation
go
--end
注:AIS20070125200647为新建的一正常帐套的帐套号!
抱着试一试的想法,执行了这段代码,结果单据显示的问题解决了,但是打印时在套打模板中却还是不能正常取单据上的默认字段!参考了下上面那段代码,是用正常帐套里的两张表替换了问题帐套的两张表就把问题给解决了,那么是不是能找到打印模板的那张表,是不是替换掉问题部分,是不是也可以把这个问题解决呢!
想到就马上行动,找套打相关的表容易,我建了一跟踪,跟踪了一下预览操作SQL的执行情况,发现这样一段代码SELECT FCitationName AS FCitationName,* FROM GLNoteCitation WHERE FNoteTypeID=26,一看马上就联想到这一定是套打相关的表,于是建了个查询
SELECT FCitationName AS FCitationName,* FROM GLNoteCitation WHERE FNoteTypeID=26
SELECT FCitationName AS FCitationName,* FROM AIS20070125200647.dbo.GLNoteCitation WHERE FNoteTypeID=26
对比两帐套,确实在问题所在字段有异常情况,到这里我开始兴奋了,问题终于找到了,于是照葫芦画漂,写了一句
delete from glnotecitation where FNoteTypeID=26
insert into glnotecitation select * from AIS20070125200647.dbo.GLNoteCitation WHERE FNoteTypeID=26