知识:用友做软件开发时,有一个表是专门存储最大单号的:
数据库名:Ufsystem.mdb,表名:UA_Identity,此表的字段如下:
字段名 意义
cAcc_Id 002
cVouchType 单据类型编码
iFatherId 主表标识,即主表ID
iChildId 子表标识,即子表ID
在表名:UA_Identity中,举例来说,对应cVouchType='Tr'的iFatherId和iChildId的数应对应主表TransVouch和子表TransVouchs最后一行的ID号,如果小于这两个数,保存单据时就会出现错误提示。
一般地,主表最大ID字段为ID,子表最大ID字段为 AutoID
两个错误提示的解决办法:
一、在使用用友软件中,在做某些业务单据时,无法保存,出现如下提示
这个问题主要是同一业务有多个人操作或在操作时非正常退出引起的,解决这个问题很简单,首先要保证这个业务就你一个人在操作,解决方法如下:
1.出现不能保存时,点确定,再点保存。
2.如果还是保存不上,返回第1步。
我发现,在Ufsystem.. UA_Identity表中,每保存一次,相应记录的两个字段iFatherId和iChildId会自动+1,这样,反复执行这两步,就产生了最大的单号,可以保存了。
二、错误提示(不同的单据数据名不同,汉字基本相同):
手工解决办法,打开对应数据库,主表TransVouch,子表TransVouchs,移到最下面一行,抄下其最大ID号,再打开Ufsystem.mdb….UA_Identity,找到相应的记录,填入这两个ID号即可。
也可以通过下面的SQL语句进行方便的修改,下面的SQL语句全部都是找出主表和子表的最大单据号,然后填入Ufsystem.mdb,表名为UA_Identity相应的记录字段中。
注意在执行某个SQL时,先把它复制到记事本中,然后修改002和2013,再打开SQL查询分析器执行。
范例:将"002"替换成"001","2013"替换成"2013"
原SQL语句
update ufsystem..ua_identity
set ifatherid= (Select MAX(CAST(RIGHT(isnull(ID,0),8) AS INT))as id from UFDATA_002_2013..RDRECORD),
ichildid= (Select MAX(CAST(RIGHT(isnull(AUTOID,0),8) AS INT))as id from UFDATA_002_2013..RDRECORDS)
where (cvouchtype='rd'and cacc_id='002')
替换后
update ufsystem..ua_identity
set ifatherid= (Select MAX(CAST(RIGHT(isnull(ID,0),8) AS INT))as id from UFDATA_001_2013..RDRECORD),
ichildid= (Select MAX(CAST(RIGHT(isnull(AUTOID,0),8) AS INT))as id from UFDATA_001_2013..RDRECORDS)
where (cvouchtype='rd'and cacc_id='001')
各业务重复单号的解决方案
--1.出入库单(收发记录主子表)
update ufsystem..ua_identity
set ifatherid= (Select MAX(CAST(RIGHT(isnull(ID,0),8) AS INT))as id from UFDATA_002_2013..RDRECORD),
ichildid= (Select MAX(CAST(RIGHT(isnull(AUTOID,0),8) AS INT))as id from UFDATA_002_2013..RDRECORDS)
where (cvouchtype='rd'and cacc_id='002')
--2.采购订单PO_Pomain和PO_Podetails
update ufsystem..ua_identity
set ifatherid= (Select MAX(CAST(RIGHT(isnull(moID,0),8) AS INT))as id from UFDATA_002_2013..PO_Pomain),
ichildid= (Select MAX(CAST(RIGHT(isnull(ID,0),8) AS INT))as id from UFDATA_002_2013..PO_Podetails)
where (cvouchtype='Pomain'andi cacc_id='002')
21 委外订单
update ufsystem..ua_identity
set ifatherid= (Select MAX(CAST(RIGHT(isnull(moID,0),8) AS INT))as id from UFDATA_002_2013..OM_MOMain),
ichildid= (Select MAX(CAST(RIGHT(isnull(MODetailsID,0),8) AS INT))as id from UFDATA_002_2013..OM_MODetails)
where (cvouchtype='om_mo'and cacc_id='002')
22 客户调价单
update ufsystem..ua_identity
set ifatherid= (Select MAX(CAST(RIGHT(isnull(ID,0),8) AS INT))as id from UFDATA_002_2013.. SA_CusPriceJustMain),
ichildid= (Select MAX(CAST(RIGHT(isnull(icusjustautoid,0),8) AS INT))as id from UFDATA_002_2013.. SA_CusUPrice)
where (cvouchtype=' SA_CusPriceJustMain'and cacc_id='002')
--3.采购发票PURBILL和PurBillVouchS
update ufsystem..ua_identity
set ifatherid= (Select MAX(CAST(RIGHT(isnull(PBVID,0),8) AS INT))as id from UFDATA_002_2013..PurBillVouch),
ichildid= (Select MAX(CAST(RIGHT(isnull(ID,0),8) AS INT))as id from UFDATA_002_2013..PurBillVouchS)
where (cvouchtype='PURBILL'and cacc_id='002')
--4.采购结算单
update ufsystem..ua_identity
set ifatherid= (Select MAX(CAST(RIGHT(isnull(PSVID,0),8) AS INT))as id from UFDATA_002_2013..PurSettleVouch),
ichildid= (Select MAX(CAST(RIGHT(isnull(ID,0),8) AS INT))as id from UFDATA_002_2013..PurSettleVouchs)
where (cvouchtype='PURSTID'and cacc_id='002')
--5.采购请购单
update ufsystem..ua_identity
set ifatherid= (Select MAX(CAST(RIGHT(isnull(ID,0),8) AS INT))as id from UFDATA_002_2013..PU_AppVouch),
ichildid= (Select MAX(CAST(RIGHT(isnull(AUTOID,0),8) AS INT))as id from UFDATA_002_2013..PU_AppVouchs)
where (cvouchtype='PUAPP'and cacc_id='002')
--6.采购到货单
update