先说明,以下是针对KIS 7.5版本的数据库,其它版本数据库结果应该有些差别,但思路都差不多。建立两个不同科目长度的帐套,然后对比里面的数据。应该就能发现差异。
接到财务MM的要求,说KIS 二级科目到了99个就不能再加了。网上搜索了一下,包括官方提供的解决方案是用他们的帐套转换工具,我测试了一下,转换后,位数是变了,但是把原来的二级科目同时多了一份到一级科目上面来了。最麻烦的,是要把原来所有的科目都要在新帐套里面输入一次,这个太崩溃了,另外最后的数据对不对,没有验证。后来搜索到KIS 7.5 用的是微软的ACCESS数据。想必肯定可以通过改ACCESS做到。
先说一下思路:建立一个默认配置的帐套,然后启用,添加一两个自己的二级科目进去。打开ACCESS 定位到帐套文件.(我测试的结果是必须要用OFFICE 2003的ACCESS 才能打开 KIS 7.5的数据库,OFFICE 2013的ACCESS不行,网上搜索下载相应版本 ),打开帐套文件的方法参考:https://jingyan.baidu.com/article/fa4125ac1cda3f28ad709266.html (用户名:morningstar密码:ypbwkfyjhyhgzj),打开后,里面有200多个表,
脑袋有点大,仔细看了下,好在部分表有注释,修改日期. 表GLAcct注释为科目表,打开进去一看,果然所有的科目都在这个表中。其中FAcctID就是科目表的主键,字符串型,一级二级三级...拼接成一个字符串。该字段定长15位,这也是为什么,在创建帐套时,所有的科目长度和不能超过15位的原因。
至此,大概的方向定了,就是把FAcctID 这个字段在第4位前面插个0,并且把引用了此字段的其它表相应的字段同步过来。一顿搜索,ACCESS可以导出表结构。把ACCESS导成文本文件,用编辑工具搜索了一下,共有57个表中有FAcctID字段,把这些表中相应的数据,都同步更新一下(注,有些表是空的,财务MM应该没有用到这些功能)
再次搜索一下,ACCESS如何执行SQL 脚本,果然找到一个解决方案 : http://www.accessoft.com/article-show.asp?id=16730
这里还有一个问题,FAcctID 最长是一个15位字符串,那么有个问题,默认建立帐套时,一级科目长3位,二级科目长2位,KIS是凭什么知道这个数据长度分割原则的呢。最笨的办法,是再建立一个其它帐套,科目长度变一下,然后把所有的表中数据对比一下,看看差异。想想200多个表,这么操作,太麻烦了。然后又仔细把所有的表和注释再看一遍,找到一个叫GLPref 注释为帐套参数的表,打开一看,里面有一条数据,那肯定就是创建帐套时KIS自己添加的数据了,认真看了一下。FAcLen1 ,FAcLen2, FAcLen3, FAcLen4 ...就是保存每个科目长度的字段了,区别是 FAcLen2=FAcLen1 + 科目2的长度 。 FAcLen3=FAcLen2+科目3的长度。知道数值意义就简单了。下面就是写SQL更新所有表中的FAcctID 以及 GLPref 中的记录科目长度的值。
大概总结一下:
1. 参考链接,用ACCESS打开帐套数据库 https://jingyan.baidu.com/article/fa4125ac1cda3f28ad709266.html
2. 参考: