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]
, 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)的表,由其他的表格反推数据,补足。
如果你们有更好的办法,请留言,谢谢。