SQL简单数据的出错分析及修复方法:简单的数据结果表:
1)基本信息表
2)表格单据清单
3)其他常用表:
常用表中的主要字段介绍
1.商品信息库(ptype)
注:销售退货取的入库商品的成本首先取最近加价值(recprice),如果没有的话才取当前库存成本值.
2.往来单位信息库(btype)
3.职员信息表,仓库信息表,地区,部门的信息表的结构都跟商品信息表的差不多.
4.会计科目表(atypecw,atype)
注:这个表中的科目余额发生额的值,都是通过发生的相关业务单据计算出来的值,我们一般不做直接修改。
修改某张销售单据中某个商品销售价格或者销售成本,在dlysale里面我们就可以修改的字段是price,total或者costprice,costtotal字段值,还要将dlya中对应的科目值重新写一下.
6.系统初始值表(sysdata)
注:表中subname=period是会计其间;
startdate:做帐开始日期;
niover :是否已经开帐,0为未开帐,1为已开帐;
enddate:做帐开始日期;
versionno:软件的版本序列号
7.商品库存分布表(goodsstocks),期初库存(inigoodsstocks)
注:商品的库存分布和批次详情都是写在这个库中的,如果商品在某个仓库中的数量和金额都为0的时候,在这个表中是不应该显示出来的.
期初库存(inigoodsstocks)是同样的,我们这里也就不单独介绍了.
8.客户跟踪价格表(price),跟踪的都是折前价格
9.固定资产明细表(Fixdetail)
简单数据的修复方法:
1.清除超级用户密码:
update loginuser
set password=’’
where etypeid=’00000’
2.进入账套时提示:‘invalid variant type conversion’
(1)drop procedure z_checkpassword
(2)CREATE PROCEDURE z_checkpassword
AS
select l.* , e.fullname as efullname from loginuser l, employee e where l .etypeid=e.typeid
return 0
(3)delete from loginuser
where etypeid not in (select typeid from employee)
3.期初库存商品数量为0,但是不能删除基本信息。
Delete from inigoodsstocks
Where qty=0 and total=0
4.辉煌版中由于以前版本的问题造成的期初收入类、费用类科目有余额,利润没有清0,以致资产负债表不平,将收入支出类科目清零
UPDATE atype
SET TTL00 = 0
WHERE (typeId LIKE '00003%') OR
(typeId LIKE '00004%') OR
(typeId='0000500002')
5.辉煌版中点击库存状况时出现提示:invalid variant type conversion
检查一下ptype表中是否有字段长度过大的情况,比如prepreice4的值是否异常大,如是在查询分析器中执行:
Update ptype
set preprice4=0
where prepreice4>1000000
6.辉煌版中“用户口令及权限设置”中增加一新用户总是排在“超级用户”前而且不允许删除,“超级用户”却可以删除
Loginuser中记录的顺序错了,在查询分析器中运行:
begin tran
select * into #t from loginuser order by etypeid
truncate table loginuser
insert into loginuser select * from #t
commit
7.如何将数据库物理文件恢复到SQL SERVER中,
情况一:有*.mdf和*.ldf文件,
sp_attach_db @dbname = N'test',
@filename1 = N'd:\mssql7\data\Test.mdf',
@filename2 = N'd:\mssql7\data\Test.ldf'
注:@filename1 = N'd:\mssql7\data\Test.mdf':
物理数据库数据文件名称(包括路径,主文件名,扩展文件名);
@filename2 = N'd:\mssql7\data\Test.ldf'
物理数据库日志文件名称(包括路径,主文件名,扩展文件名);
情况二:只有一个*.mdf文件:
EXEC sp_attach_db @dbname = N'guest',
@filename1 = N'c:\medserver\data\abc.mdf'
注:c:\medserver\data\abc.mdf为*.mdf文件的路径
以上两种情况,将文件恢复后,还要在master数据库中的graspcwzt中添加数据库名与帐套名
8.如在管家婆中做年结存时,提“超时已过期”,可在数据库中手工做年结存。辉煌版:
exec z_yearclose
标准版:
a. exec CW_F_YearClose 1
b.exec CW_F_YearClose 2
先执行a,再执行b
9.日期录入错误的处理方法
步骤一:
首先在查询分析器中查找日期>当前日期的单据,执行语句如下:
select * from dlyndx where date>’yyyy-mm-dd’
(注:yyyy-mm-dd为当前日期格式yyyy为年,mm为月,dd为日)
步骤二:
修改日期:
1)、如只有年份录入错误,如把2002-12-31录成2003-12-31,则执行:
updata dlyndx set date=’2002’+right(date,6) where date>’yyyy-mm-dd’updata dlya set date=’2002’+right(date,6) where date>’yyyy-mm-dd’然后根据dlyndx中的vchtype确定单据的类型,然后修改对应的表。
如果是销售单:
updata dlysale set date=’2002’+right(date,6) where date>’yyyy-mm-dd’进货单:
updata dlybuy set date=’2002’+right(date,6) where date>’yyyy-mm-dd’其它的单据:
updata dlyother set date=’2002’+right(date,6) where date>’yyyy-mm-dd’2)、如日期全部需要修改,则执行:
update dlyndx set date=’YYYY-MM-DD’where date>’yyyy-mm-dd’(YYYY-MM-DD为输入的正确日期的格式)
然后依次把dlyndx改为dlya 执行。然后确定单据的类型,修改其它的单据。步骤三:
修改sydata表中的当月的结束日期。
Update sysdata set subvalue=’yyyy-mm-dd’where subname=’enddate’(yyyy-mm-dd为过账单据的最大的日期,可由下列语句查出:
Select max(date) from dlyndx where draft=2
步骤四:
修改月结存信息表monthproc.
10.辉煌版中自动盘盈盘亏不能使用,每次使用时把盘点数量输入保存后再打开,同一商品就会变为几个乃至几十个。
解决方法:是把CheckedCount库清空。
在查询分析器中执行:delete from CheckedCount
11、标准版中在应收款查询和应付款查询中,选择同一时间段时往来对账的此前
余额与明细账本中的此前余额不一致。
原因:查询一下在明细账本中有收、付款单,但在往来对账中是否有收、付款单,如往来对账中没有,则是由于在dlyndx中btypeid有记录,而dlya中btypeid 为空造成的。
解决方法:在查询分析器中执行:
update dlya
set btypeid = b .btypeid
from dlya a inner join dlyndx b
on a.vchcode = b.vchcode
where a.vchtype in(4,66)
12.在登账时提示“科目已经删除或者分类”,不能登账
原因:有些会计科目已经分类或删除,而凭证指向的会计科目却仍然指向它。解决方法:查找已分类或删除的科目,执行:
SELECT *
FROM atypecw a INNER JOIN
DlyA d ON a.typeId = d.atypeid
WHERE a.deleted = 1 OR a.sonnum <> 0
找出这些科目后,让客户修改dlya中的atypeid,使其指向子类。
13. 标准版登帐时提示科目被删除或者分类的情况:
查找被删除或者分类的科目的执行语句:
SELECT *
FROM DlyA
WHERE (atypeid IN
(SELECT typeid
FROM atypecw
WHERE sonnum <> 0 or deleted=1))
找到之后,重新将科目选择一次.
数据修复组