目 录
1 前言... - 4 -
2 一般情况下修复这类错误的操作5步曲... - 4 -
2.1 备份当前数据表... - 4 -
2.2 清除数据表内容... - 5 -
2.3 修复数据表关系与索引... - 5 -
2.4 还原数据... - 5 -
2.5 账套数据检查... - 5 -
3 对无法修复的索引或关系的处理方法... - 5 -
4 注意事项... - 6 -
4.1 如何判断是否存在自动递增列... - 6 -
4.1.1 直接查询判断... - 6 -
4.1.2 通过表设计查询判断... - 6 -
4.2 自动递增数据表的数据还原方法... - 7 -
4.3 一般涉及到表中的索引字段为自动递增列的数据表... - 7 -
4.4 需要替换数据表的情况... - 8 -
在KIS账套中,经常会出现数据表中出现空值或非法记录的情况,这时的数据表,事实上已经损坏了,涉及到的关系、索引都已经丢失,需要进行修复。
如在凭证录入时,不管本期录入了多少凭证字,每次进入凭证录入界面时显示的凭证号都是0。很明显,这样的错误是因为凭证最大字号记录表中的数据出现了错误,如:

很明显,这张表中存在了不应该出现的Fperiod=36的记录。Fperiod表示期间。
在进行数据表修复时,建议遵循以下规则,即可处理所以此类错误。
一般情况下的数据表错误,即数据表中出现空值或非法记录的情况,可以按照以下5个步骤来进行。
以修复glvchmaxnum表为例:
把这张数据表另存为一张表,如glvchmaxnum_bak,待最终修改完成后,可以删除这张备份生成的数据表。
把glvchmaxnum表中的内容全部删除。在删除时,直接点击表左上角的那个按钮,自动全选表中的内容。
利用check3000和标准账套,把关系和索引加上。建议使用的标准账套为与出问题的账套相同版本的程序下新建的账套。但是每次变更要处理的数据表后,在执行2.3时,要在check3000中重新打开一下原账套,以刷新数据信息。
把备份表glvchmaxnum_bak中的数据复制后,粘贴到glvchmaxnum表中,这时系统会自动把不需要的数据全部去掉。

这时点是即可。
经过以上步骤处理后,这张数据表的问题就可以修复了。如果有其他数据表,则重复上述的每个步骤,逐步进行修复。
在KIS软件中,利用软件本身提供的账套数据检查工具,检查各项数据。该工具可以自动修复一些错误,如凭证最大号信息、凭证顺序信息等。
其中,在修复索引或关系时,如果发现关系无法修复,可以直接双击无法的索引或关系,如:
这时,双击它,可以看到:
它传递的信息是:GLFunction与GLLog之间通过FFunctionID进行关联,并且从表GLLog中保存了与主表GLFunction不一致的记录。这种情况下,需要处理的是先看看主表中有没有非常或空值的记录,如果不存在,那么需要处理的就是从表GLLog。从处理方法按以上的5步重复即可。
如果需要修复的数据表中的索引字段为自动递增列的,则在进行到上述修复的2.4还原数据的时候,需要采用追加查询的方式来实现,而不能使用直接复制的方式。
判断数据表是否具有自动递增列的方法,一般有两种:
直接双击数据表,如果看到数据表中显示为自动编号或新建: 

具体自动递增列的数据类型为自动编号。
对于索引字段为自动递增列的数据表,在进行到上述第4步时,不能直接复制回去,需要创建一个追加的查询来把数据写回去,否则会导致处理后表中的自动递增列的值,与备份表中自动递列的值不一致。否则容易导致错误。
也就是说,对于数据表中存在自动递增列的数据表如gllog,则需要使用追加语句(可以创视图来实现)的方式进行数据还原,否则把记录复制回去时将产生新的记录标识。
仍然以glvchmaxnum为例,创建的查询后在SQL视图中输入的SQL格式如下:
insert into glvchmaxnum
select * from glvchmaxnum_bak
然后按感叹号执行,access会自动过滤掉不需要的数据。
处理其他数据表时,实际根据的表名进行替换即可。
其中:创建追加查询的方法,请阅读伙伴社区上关于Access的基础培训的相关培训课件。此外,简单的方法就是把现有账套中的任意一个查询,通过修改的方法,把上述内容复制去并执行,最后关闭时不要保存即可。
GLNoteItem:套打项目记录表
GLNoteFile:套打信息记录表
GLNotePrint:套打类型记录表
GLlog:上机日志表
GLCls:核算项目类别表
FAGroup:固定资产类别表
FAAlter:固定资产变动方式表
ICStock:以前KIS版本用到的仓库表
GLCyPlot:
GLEmpFilter
GLEmpGroup:职员类别表
GLExpGroup:摘要类别表
GLExp:摘要表
GLRpt:自定义报表记录表
GLVch:凭证分录数据表
GLRecur:自动转账表头记录表
如果通过2.1到2.5的处理过程后,表中仍然有错误的记录,如:

那么,表明当前的这张数据表已经严重损坏,不能再使用了。这时,需要在账套中把这张数据表删除,然后从标准中导入这张数据表,进行数据表替换,再执行2.3到2.4的处理过程进行数据修复。
注:此法适用于所有KIS标准系列产品,包括KIS标准版、KIS行政事业版、KIS迷你版以及其他所有KIS及KD2000系列产品的数据维护。 |