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)的表,由其他的表格反推資料,補足。
如果你們有更好的辦法,請留言,謝謝。