普票系统报错 database disk image is malformed

part I

----------------------------------------

打开系统,提示该信息



大致看了下,使用的是sqlite数据库,网络上查找了下


可以用sqlite professional 修复


下载sqlite professional 3


导入re*****.db 文件进行修复:

 


重新登陆,问题解决。



part II

------------------------------------------

后面发现出现了数据丢失的情况,其中有两张票据的信息丢失了,看来数据库的修复也 只是尽可能找回数据。



尝试分析了下数据库的表,猜测了下这几张表的关系。

票据明细表 tReceiptDetail

CREATE TABLE "tReceiptDetail"(
[id] integer PRIMARY KEY NOT NULL
,[fID] int NOT NULL                  @ fid 对应着票据序号  为tReceiptMaster的主键 [fid]

,[fRcId] int                                   @fRcId 票据内容明细的序号  从1开始
,[fReCode] varchar(20)            @fReCode 票据代码 14400XXXXX  同类百元 或者千元都是相同的
,[fRecNo] varchar(10)               @fRecNo   票据编号 同一申请批次(代码)内连续的编号,按要求只能连续开,序号不可跳跃。
,[orderNo] varchar(30)              @ 空
,[productName] varchar(150) NOT NULL                     @明细里的品名
,[sUnit] varchar(10)                                                            @明细里的单位
,[price] decimal(18,5)                                                        @单价
,[qty] decimal(18,5)                                                            @数量
,[total] decimal(18,2)                                                         @单价 * 数量的乘积
,[wgross] decimal(18,5)                          
,[wnet] decimal(18,5)
,[state] smallint                                                                   @  值0 
,[fremark] varchar(300)
,[PiaoZhengNo] varchar(50)
,[JiLuNo] varchar(50)   
, fSimple varchar(20)

, productCode varchar(50)

, fCustom1 varchar(200)

, fCustom2 decimal(18,2)

, fCustom3 decimal(18,2));


领用票据录入信息 tReceiptInfo

CREATE TABLE "tReceiptInfo"(
[fID] int(4)                                                              
,[BuyDate] datetime(8)                                                @购入日期
,[ReceiptNumber] varchar(15) NOT NULL              @发票代码
,[ReceiptName] varchar(100)                                     @发票名称  XXX(限额千元版)   XXX(限额百元版)
,[NumBgn] varchar(20)                                                 @起始编号
,[NumEnd] varchar(20)                                                  @结束编号
,[Qty] int(4)                                                                         @数量                       (结束-起始+1)
,[state] bit DEFAULT 0                                                     @  1表示用完?  0 在用?
,[flag] varchar(20)                                                             @ 上一个已用编号  (null 表示未使用)
,[fType] bit   
);


票据关联 tReceiptMaster

CREATE TABLE "tReceiptMaster"(

[fID] int(4) PRIMARY KEY
,[fRecode] varchar(20) NOT NULL                                   @发票代码    tReceiptInfo.ReceiptNumber
,[fRecNo] varchar(20) NOT NULL                                     @发票编号    满足起始 - 结束编号    
,[frecID] int                                                                             @ 关联发票信息主键 tReceiptInfo.fID
,[clientName] varchar(100)                                                @客户名称
,[clientIDNo] varchar(50)                                                     
,[ClientTel] varchar(20)
,[ClientAddr] varchar(150)                                                   @客户地址
,[fSaleSide] varchar(50)
,[fSaleAddr] varchar(100)
,[fSaleEAddr] varchar(300)
,[fProName] varchar(200)                                                    @行业分类  (商业)
,[fBuyPayee] varchar(200)
,[fSalePayee] varchar(200)                                                  @收款人
,[fSaleTel] varchar(30)
,[fSaleFax] varchar(50)
,[fSaleBank] varchar(100)
,[fSaleAccount] varchar(50)
,[fContractNo] varchar(20)
,[TradeType] varchar(20)
,[fRevSendType] varchar(20)
,[CreditNo] varchar(20)
,[moneyType] varchar(20)
,[moenyName] varchar(20)
,[moneyRate] float
,[SendPort] varchar(20)
,[MidPort] varchar(20)
,[tePort] varchar(20)
,[carTool] varchar(20)
,[ProtectFee] money
,[fremark] varchar(200)                                                             @备注
,[fDate] datetime(8)                                                                    @开票日期    年-月-日 00:00:00
,[fDrawer] varchar(20)                                                                @开票人
,[fRedRecNo] varchar(20)
,[operator] varchar(20)                                                                @操作人
,[total] decimal(18,2) DEFAULT 0                                             @票据金额
,[fcheckman] varchar(20)
,[fBuyer] varchar(20)
,[state] smallint DEFAULT 0                                                         @ 0 正常   1 作废,金额改为0
,[fpayName] varchar(50)
,[fpayFlag] varchar(30)
,[fpaytype] varchar(20)
,[fmoneyUpper] varchar(100)
,[fVessel] varchar(200)
,[fStartDate] datetime
,[fBillNo] varchar(30)
,[fstartPlace] varchar(50)
,[faimPlace] varchar(50)
,[floadPort] varchar(50)
,[farriveDate] datetime(8)
,[funloadPort] varchar(30)
,[fBuyerBank] varchar(100)
,[fBuyerAccount] varchar(30)
,[receiptName] varchar(200)                                                            @同  tReceiptInfo.ReceiptName                xxxx发票(千元电脑版)   xxx发票(百元电脑版)
,[fRevalue] money DEFAULT 0.00
,[fClashed] bit DEFAULT 0
,[fisExported] bit DEFAULT 0
,[fexportBatch] varchar(20)
,[fisexport] bit DEFAULT 0
,[fIsNullity] bit DEFAULT 0
,[fremark2] varchar(200)
,[fisimport] bit DEFAULT 0
, fCustom1 varchar(200), fCustom2 varchar(200), fCustom3 varchar(200), fCustom4 varchar(200), fCkBatch varchar(20), fCkexport varchar(20)

, fjsexport bit                                                                                        @已导出 1, 非 null

, fjsexportbatch varchar(20)                                                              @ 导出批次号   表tJSExportBatch.fbatchname

, CONSTRAINT [fpno] UNIQUE([fRecode],[fRecNo]) ON CONFLICT Fail  
);

针对 报错(malformed)的表,由其他的表格反推数据,补足。

如果你们有更好的办法,请留言,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值