阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 3439|回复: 15

[经验分享] SQL数据库的管家婆出错分析及修复方法

  [复制链接]
  • TA的每日心情
    奋斗
    2023-4-25 14:58
  • 签到天数: 837 天

    [LV.10]以坛为家III

    发表于 2011-12-14 10:05:09 | 显示全部楼层 |阅读模式
    SQL数据库的管家婆出错分析及修复方法:.zip (20.37 KB, 下载次数: 147)                


    补充内容 (2012-2-22 10:29):
    交流群:7083152

    补充内容 (2014-2-9 11:14):
    SQL简单数据的出错分析及修复方法:
    简单的数据结果表:
    1)基本信息表
    名称        代码
    职员信息表        employee
    库存商品信息表        Ptype
    往来单位        btype
    摘要表        Abstract
    地区信息表        AreaType
    会计科目表        atypecw
    仓库信息表        Stock
    部门信息表        Department

    2)表格单据清单

    名称        代码
    订单索引表        DlyndxOrder
    订单明细表        BakDlyOrder
    单据索引表        Dlyndx
    进货单明细表        Dlybuy
    销售单明细表        BakDlyOrder
    零售单索引表        Dlyndxretail
    零售单明细表        Dlyretail
    其他单据明细表(比如调拨单,收.付款等)        Dlyother
    凭证明细表        Dlya

    3)其他常用表:

    名称        代码
    操作员表        Loginuser
    系统初始值表        Sysdata
    系统配置表        Syscon
    单据配置表        vchcon
    单据类型表        Vchtype
    自动盘赢盘亏表        CheckedCount
    列配置表        ColConfig
    商品库存分布表        GoodsStocks
    期初商品库存分布表        IniGoodsStocks
    库存上下限报警设置表        GoodsWar
    客户跟踪价格表        Price
    期初发货、委托、受托商品库存表        IniCommission
    发货、委托、受托商品库存表        Commission
    发货结算单明细表        Sendjsdly
    固定资产基本信息表(包括固定资产类别、增减方式、使用状况)        Fixbasic
    固定资产减少        Fixdel
    固定资产折旧明细        FixDepDetail
    固定资产明细表        FixDetail
    会计期间表        MonthProc
    期初借进借出商品表        Lendborrow00
    借进借出商品表        Lendborrow
    门店登记信息表        Posinfo
    常用表中的主要字段介绍
    1.商品信息库(ptype)

    名称        字段        注释        数据类型
    商品ID        typeId        唯一,系统自动累加        varchar(25)
    父ID        ParId        父类的记录号        varchar(25)
    级数        leveal                Smallint
    现有儿子数        sonnum        一般来说soncount大于,等于sonnum数        Int
    曾有儿子数        soncount                Int
    商品编码        UserCode                varchar(26)
    全名        FullName                varchar(66)
    简名        Name                varchar(30)
    规格        Standard                varchar(20)
    型号        Type                varchar(20)
    地区        Area                varchar(30)
    备注        Comment                varchar(250)
    最新进价        recPrice                numeric(18,4)
    是否删除        deleted                bit
    成本算法        costmode                int
    记录号        Rec        系统自动生成,唯一        int
    父记录号        ParRec                int
    条码        barcode                varchar(50)

    注:销售退货取的入库商品的成本首先取最近加价值(recprice),如果没有的话才取当前库存成本值.

    2.往来单位信息库(btype)
    与商品信息库相同的字段这里就不介绍了
    名称        字段        注释        数据类型
    应收发生额        Artotal                Numeric(9)
    应付发生额        Aptotal                Numeric(9)
    期初应收        Arttl00                Numeric(9)
    期初应付        Apttl00                Numeric(9)
    是否客户(还是供应商)        Isclient                Int
    应收超额        Arlimit                varchar(66)
    应付超额        Aplimit                varchar(30)

    3.职员信息表,仓库信息表,地区,部门的信息表的结构都跟商品信息表的差不多.

    4.会计科目表(atypecw,atype)

    名称        代码        注释        数据类型
    借贷方向        direction                char(1)
    借方全年累计发生额        debit        用于查询利润表中的本年累计        numeric(18,2)
    借方期初发生额        Debit00                numeric(18,2)
    借方发生额01…12        debit01        每个会计期间的借方发生额        numeric(18,2)
    当前借方余额        DebitTTL                numeric(18,2)
    期初借方余额        DebitTTL00                numeric(18,2)
    期末借方余额01…12        DebitTTL01        每个会计期间的借方余额        numeric(18,2)
    贷方全年累计发生额        lend        用于查询利润表中的本年累计        numeric(18,2)
    贷方期初发生额        Lend00        即期初帐务数据中的本年累计发生贷方        numeric(18,2)
    贷方发生额01…12        lend01        每个会计期间的贷方发生额        numeric(18,2)
    当前贷方余额        LendTTL                numeric(18,2)
    期初贷方余额        LendTTL00                numeric(18,2)
    期末贷方余额01…12        LendTTL01        每个会计期间的贷方期末余额        numeric(18,2)
    期初本年损益累计发生        debitlend                numeric(18,2)

    注:这个表中的科目余额发生额的值,都是通过发生的相关业务单据计算出来的值,我们一般不做直接修改。
    5. 单据索引表(dlyndx)
    名称        代码        注释        数据类型
    单据号        Vchcode        系统生成,唯一,与明细表是通过vchcode相关连的.        numeric(10)
    制单日期        Date                varchar(10)
    物流单据编号        Number                varchar(60)
    单据类型        VchType        在VchType表中可以查询到        numeric(4)
    物流单据摘要        summary                varchar(256)
    凭证编号        Comment                int
    往来单位ID        btypeid        往来单位(btype)中的typeid        varchar(25)
    职员ID        etypeid        职员(employee)中的typeid        varchar(25)
    仓库ID        ktypeid        仓库(stock)中的typeid        varchar(25)
    仓库ID2        ktypeid2        调拨单等需要两个仓库的单据时用        varchar(25)
    物流科目        ifcheck        物流单有的要输入的科目        varchar(25)
    审核人ID        checke                varchar(25)
    会计期间        period                smallint
    红冲标记        RedWord        为’T’时表示这张单据是红冲或被红冲单据        char(1)
    被红冲标记        RedOld        为’T’时表示这张单据是被红冲单据        char(1)
    登帐人ID        accounte        空的话是未登帐        varchar(25)
    制单人ID        InputNo                varchar(25)
    草稿标记        draft        1 草稿单据
    2 已过账单据
    3 临时单据        int
    单据合计金额        Total                numeric(18,2)
    单据的票据类型        BillType                int
    部门ID        projectid                varchar(25)
    Dlya,dlysale,dlybuy等明细表中记录的是所有单据发生的明细,这里不作详细介绍比如说要修改某张销售单据中某个商品销售价格或者销售成本,在dlysale里面我们就可以修改的字段是price,total或者costprice,costtotal字段值,还要将dlya中对应的科目值重新写一下.

    6.系统初始值表(sysdata)

    名称        代码        注释        数据类型
    系统编号        SubNo                int
    项目名称        SubName                varchar(30)
    项目值        SubValue                varchar(100)
    备注        SubComment                varchar(30)

    注:表中subname=period是会计其间;
    startdate:做帐开始日期;
    niover :是否已经开帐,0为未开帐,1为已开帐;
    enddate:做帐开始日期;
    versionno:软件的版本序列号

    7.商品库存分布表(goodsstocks),期初库存(inigoodsstocks)

    名称        代码        注释        数据类型
    商品ID        PtypeId                varchar(25)
    仓库ID        KtypeId                varchar(25)
    批号        JobNumber                varchar(20)
    生产日期        OutFactoryDate                varchar(13)
    库存数量        Qty                numeric(18,4)
    成本单价        Price                numeric(18,4)
    库存金额        Total                numeric(18,2)
    批次        GoodsOrder        系统值        int

    注:商品的库存分布和批次详情都是写在这个库中的,如果商品在某个仓库中的数量和金额都为0的时候,在这个表中是不应该显示出来的.
    期初库存(inigoodsstocks)是同样的,我们这里也就不单独介绍了.

    8.客户跟踪价格表(price),跟踪的都是折前价格

    9. 固定资产明细表(Fixdetail)

    名称        代码        注释        数据类型
    vchcode        vchcode                numeric(18)
    usercode        usercode                char(25)
    date        date                datetime
    Fullname        Fullname                char(50)
    DepartmentID        DepartmentID        这个是部门id,不可缺少        int
    Hisdep        Hisdep        折旧金额        numeric(18,2)
    depatypeid        depatypeid        折旧对应科目        varchar(25)

    简单数据的修复方法:
    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))
       找到之后,重新将科目选择一次.

                                                      数据修复组
    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2024-2-22 20:04
  • 签到天数: 333 天

    [LV.8]以坛为家I

    发表于 2011-12-14 10:11:56 | 显示全部楼层
                   
    其实有一种更加简单的方法就是分离后在附加就可以了
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    奋斗
    2023-4-25 14:58
  • 签到天数: 837 天

    [LV.10]以坛为家III

     楼主| 发表于 2011-12-14 10:58:06 | 显示全部楼层
    荷塘月色 发表于 2011-12-14 10:11
    其实有一种更加简单的方法就是分离后在附加就可以了

                   
    说的在理,但关键是要有数据啊……
    物理数据库文件或者备份文件
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    擦汗
    2019-8-16 11:12
  • 签到天数: 22 天

    [LV.4]偶尔看看III

    发表于 2011-12-21 16:26:22 | 显示全部楼层
    楼主的经验非常值得推荐。总结的不错,非常有代表性,我是来学习的,向你致敬
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2016-8-7 15:10
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    发表于 2012-1-1 17:43:18 | 显示全部楼层
    貌似是好东西,不知道能不能治疗A8的病,下来看看先...
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    奋斗
    2017-1-16 18:30
  • 签到天数: 179 天

    [LV.7]常住居民III

    发表于 2012-1-2 15:07:25 | 显示全部楼层
    支持。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2023-2-24 10:17
  • 签到天数: 49 天

    [LV.5]常住居民I

    发表于 2012-2-12 23:29:34 | 显示全部楼层
    这个文章写得很详细,有一定的技术水平!!!
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    郁闷
    2016-7-25 18:28
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2012-2-22 01:58:33 | 显示全部楼层
    楼主的经验非常值得推荐。总结的不错,非常有代表性,我是来学习的,向你致敬 .....
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    奋斗
    2016-1-8 23:51
  • 签到天数: 412 天

    [LV.9]以坛为家II

    发表于 2012-2-25 21:45:28 | 显示全部楼层
    貌似是好东西,不知道能不能治疗A8的病,下来看看先...

    本文来自:阳光网驿_企业信息化专家 详细出处请参考:http://bbs.sunwy.org/thread-128156-1-1.html
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2016-5-25 18:17
  • 签到天数: 1064 天

    [LV.10]以坛为家III

    发表于 2012-4-2 02:28:29 | 显示全部楼层
    新手来学习了

    不错的学习资料,谢谢楼主了。
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表