【正文】
讀者可以。以上是主窗體的所有代碼,與第3章中主窗體代碼有區(qū)別的是我們自己編寫了一個(gè)FindForm函數(shù)來查找一個(gè)MDI子窗體是否存在,使用專門的函數(shù)可以大大地壓縮代碼規(guī)模,使程序顯得簡練。end。//關(guān)閉窗體procedure (Sender: TObject)。end。(index)。newform:=(application)。//顯示報(bào)表窗體,這里不需要再查找是否已有報(bào)表窗體39。39。39。exec sf_計(jì)算資產(chǎn)負(fù)債表 39。//計(jì)算資產(chǎn)負(fù)債表index:=strtoint(inputstring)。, inttostr(index1))。, 39。inputstring:= InputBox(39。//取得當(dāng)前會(huì)計(jì)期間的值newform:TFinalReport。varindex:integer。end。)。showmessage(39。 end。 exit。)。 showmessage(39。exec sf_期末結(jié)帳39。begin,39。if (39。beginend。delete from 憑證表39。//刪除分錄表和憑證表:=39。貸方金額合計(jì)39。借方金額合計(jì):39。過帳憑證數(shù)目為:39。過帳成功39。end。)。exceptshowmessage(39。exec sf_憑證過帳39。).AsString。outputsum:=(39。借方金額39。).AsString。pnum:=(39。,MB_OKCANCEL)=IDOK thenbegin//獲得分錄表中的統(tǒng)計(jì)數(shù)據(jù):=false。,39。if (39。varpnum,inputsum,outputsum:string。 end。 //在正式平衡表中使用試算平衡表(正式使用)39。 //若窗體不存在,則創(chuàng)建窗體試算平衡表(正式使用)39。begin//顯示試算平衡表窗體procedure (Sender: TObject)。 end。 :=39。 newform:=(application)。 begin)=false then if findForm(39。varnewform:Tdetailaccount。end。總分類帳查詢39。 //若窗體不存在,則創(chuàng)建窗體總分類帳查詢39。begin//顯示總分類帳查詢窗體procedure (Sender: TObject)。end。會(huì)計(jì)憑證輸入39。 //若窗體不存在,則創(chuàng)建窗體會(huì)計(jì)憑證輸入39。begin//顯示憑證設(shè)置窗體procedure (Sender: TObject)。end。 :=39。)=false thenif findForm(39。varnewform:TaccountSetting。 end。會(huì)計(jì)科目設(shè)置39。 newform:=(application)。 //若窗體不存在,則創(chuàng)建窗體begin會(huì)計(jì)科目設(shè)置39。varnewform:TSecSetting。end。取值39。 //保存系統(tǒng)參數(shù)while not dobeginvar //如窗體不存在,則返回false,程序?qū)?chuàng)建窗體 else end //如果窗體已存在,則恢復(fù)窗體,并返回true // 通過對(duì)窗體標(biāo)題判斷窗體是否存在 beginbegin//通過用戶定義的函數(shù),判斷窗體是否存在function (caption: string): bool。{$R *.dfm}uses SecSettingForm,AccountSettingForm,DocuInputForm,TotalAccountForm,DetailAccountForm,SumAccountForm,FinalReportForm。var end。 procedure setpara()。 function FindForm(caption:string):bool。 para:Ttable。 { Public declarations }//…此處為系統(tǒng)窗體構(gòu)件聲明,省略…(3) 為各菜單的添加如下功能代碼。 主窗體屬性設(shè)置控件類型對(duì)象(控件)名屬 系統(tǒng)主窗體。將該窗體設(shè)置為MDI的主窗體,正如我們?cè)诘?章中所做的那樣。選擇Project | Options…菜單命令,在Application選項(xiàng)卡中修改工程的Title屬性為“財(cái)務(wù)管理系統(tǒng)”,本例我們?cè)谂鋾獗P的 \Chap4\。初始化帳簿的試算平衡,需要根據(jù)初始化的信息反算期初信息,而結(jié)帳階段的試算平衡表主要反映在憑證過帳之后結(jié)帳時(shí)的統(tǒng)計(jì)信息。(7) 選擇【結(jié)帳及報(bào)表】|【試算平衡表】菜單命令,可以看到當(dāng)前帳目的平衡信息。 明細(xì)帳查詢 總分類帳查詢(6) 【明細(xì)帳查詢】窗體的表中顯示的是所有的明細(xì)帳單,用戶可以將左邊的列表框中現(xiàn)有所有明細(xì)帳單的科目名稱逐個(gè)添加到右邊的列表框中,從而控制在表格中顯示哪些明細(xì)帳單。在【總分類帳查詢】窗體中,可以通過選中【無發(fā)生金額布顯示】單選框來確定是否要對(duì)表格中的數(shù)據(jù)進(jìn)行過濾,只顯示那些發(fā)生了金額的項(xiàng)目。 憑證過帳功能過帳完成后系統(tǒng)提示過帳成功,并顯示過帳的憑證數(shù)及借貸方金額等反饋信息。(4) 選擇【憑證管理】|【憑證過帳】菜單命令,系統(tǒng)提示是否過帳。這樣,就完成了會(huì)計(jì)憑證的輸入工作,需要對(duì)憑證進(jìn)行過帳。 會(huì)計(jì)憑證輸入功能 需要修改某個(gè)憑證的信息,選擇相應(yīng)的憑證,單擊【修改】按鈕,修改完成后單擊【保存】按鈕即可。若單擊【新增】按鈕,系統(tǒng)自動(dòng)新建一個(gè)憑證,憑證號(hào)和會(huì)計(jì)期間等信息自動(dòng)生成,其中的會(huì)計(jì)期間是“系統(tǒng)參數(shù)表”中的“當(dāng)前會(huì)計(jì)期間”,日期是系統(tǒng)的當(dāng)前日期,窗體后臺(tái)程序?qū){證編號(hào)自動(dòng)進(jìn)行計(jì)算保證新輸入的憑證號(hào)不和以前已有的憑證編號(hào)沖突。 試算結(jié)果平衡(3) 啟用帳簿后可以進(jìn)行憑證錄入的工作。【試算平衡】按鈕可以隨時(shí)查看當(dāng)前的帳簿信息是否平衡,當(dāng)試算不平衡時(shí),窗體下方的表格將變?yōu)榧t色,向用戶發(fā)出試算不平衡的警告?!締⒂脦げ尽堪粹o先檢查當(dāng)前帳簿試算是否平衡,如果平衡在后臺(tái)調(diào)用“sf_啟用帳戶”存儲(chǔ)過程,啟用新定義的帳簿,如果不平衡,會(huì)提示用戶查閱試算平衡表,檢查輸入的初始化信息并修改,直到試算平衡才能啟用新定義的帳簿?!窘⑿聨げ尽堪粹o用于建立一個(gè)新的初始帳簿,單擊該按鈕,系統(tǒng)在后臺(tái)調(diào)用“sf_初始化帳戶”存儲(chǔ)過程,刪除“帳簿初始化表”原有的信息,根據(jù)“科目表”重新創(chuàng)建“帳簿初始化表”并在窗體中顯示。需要?jiǎng)h除一條信息,單擊【刪除】按鈕。在瀏覽情況下,除搜索一欄的文本框外,窗體中的表格,數(shù)據(jù)文本框和選項(xiàng)組中的數(shù)據(jù)都是不可編輯狀態(tài)的,只有當(dāng)【新增】或者【修改】按鈕被按下后才可以使用,當(dāng)單擊【保存】或【取消】按鈕提交后,它們又恢復(fù)只讀狀態(tài)。 會(huì)計(jì)科目設(shè)置功能該窗體中還設(shè)有搜索功能,在窗體中的文本框內(nèi)輸入科目代碼,科目名稱或類別中的任何一項(xiàng)或幾項(xiàng),再單擊【搜索】按鈕,即可在窗體左邊的表格中得到與設(shè)定的搜索條件相符合的結(jié)果。其中【科目類別】選項(xiàng)組表示該科目所屬的類別,有資產(chǎn)、負(fù)債、權(quán)益、損溢和成本5個(gè)選項(xiàng),一般資產(chǎn)類科目余額方向?yàn)榻璺?,?fù)債和權(quán)益科目余額方向?yàn)橘J方,但這也不絕對(duì),其中也有例外的情況,如“壞帳準(zhǔn)備”的科目余額方向則為貸方。 實(shí)例運(yùn)行效果(1) 選擇【基礎(chǔ)數(shù)據(jù)管理】|【科目設(shè)置】菜單命令,進(jìn)入【會(huì)計(jì)科目設(shè)置】功能窗體。選擇菜單中的各菜單項(xiàng)就可以進(jìn)入各相應(yīng)功能窗口。 贏余公積 + 未分配利潤 as b where = kjqj from 科目余額表 where 會(huì)計(jì)期間 = kjqj and update 資產(chǎn)負(fù)債表 set 未分配利潤 = from 資產(chǎn)負(fù)債表 as a, from 科目余額表 where 會(huì)計(jì)期間 = kjqj and 科目代碼 = 313) update 資產(chǎn)負(fù)債表 set 贏余公積 = from 資產(chǎn)負(fù)債表 as a, from 科目余額表 where 會(huì)計(jì)期間 = kjqj and 科目代碼 = 311) update 資產(chǎn)負(fù)債表 set 資本公積 = from 資產(chǎn)負(fù)債表 as a, from 科目余額表 where 會(huì)計(jì)期間 = kjqj and 科目代碼 = 301) update 資產(chǎn)負(fù)債表 set 實(shí)收資本 = from 資產(chǎn)負(fù)債表 as a, update 資產(chǎn)負(fù)債表 set 負(fù)債總計(jì) = 應(yīng)付帳款 + 預(yù)收帳款 + 應(yīng)付工資 + 其他負(fù)債 科目代碼 = 209 and 科目代碼 = 281 and 科目代碼 215) (select sum(isnull(本期貸方余額,0)isnull(本期借方余額,0)) as 金額 as b where = kjqj (select sum(isnull(本期貸方余額,0)isnull(本期借方余額,0)) as 金額 as b where = kjqj from 科目余額表 where 會(huì)計(jì)期間 = kjqj and update 資產(chǎn)負(fù)債表 set 預(yù)收帳款 = from 資產(chǎn)負(fù)債表 as a, 科目代碼 = 201 and 科目代碼 = 204 ) (select sum(isnull(本期貸方余額,0)isnull(本期借方余額,0)) as 金額 負(fù)債類級(jí)別都是貸方金額 update 資產(chǎn)負(fù)債表 set 資產(chǎn)總計(jì) = 流動(dòng)資產(chǎn)總計(jì) + 固定資產(chǎn)總計(jì) + 其他資產(chǎn) and 科目代碼 175) from 科目余額表 where 會(huì)計(jì)期間 = kjqj and update 資產(chǎn)負(fù)債表 set 其他資產(chǎn) = from 資產(chǎn)負(fù)債表 as a, as b where = kjqj (select sum(isnull(本期貸方余額,0)isnull(本期借方余額,0)) as 金額 注意累計(jì)折舊為貸方 from 科目余額表 where 會(huì)計(jì)期間 = kjqj and 科目代碼 =171) update 資產(chǎn)負(fù)債表 set 固定資產(chǎn)原值 = from 資產(chǎn)負(fù)債表 as a, update 資產(chǎn)負(fù)債表 set 應(yīng)收帳款凈值 = 應(yīng)收帳款 壞帳準(zhǔn)備 科目代碼 = 125) (select sum(isnull(本期貸方余額,0)isnull(本期借方余額,0)) as 金額 注意壞帳準(zhǔn)備為貸方 科目代碼 = 121 and 科目代碼 = 129 and 科目代碼125) (select sum(isnull(本期借方余額,0)isnull(本期貸方余額,0)) as 金額 as b where = kjqj from 科目余額表 where 會(huì)計(jì)期間 = kjqj and update 資產(chǎn)負(fù)債表 set 現(xiàn)金及現(xiàn)金等價(jià)物 = from 資產(chǎn)負(fù)債表 as a, delete from 資產(chǎn)負(fù)債表 where 會(huì)計(jì)期間 = kjqj 注意,這里按照科目代碼統(tǒng)計(jì),主要說明資產(chǎn)負(fù)債表的含意和計(jì)算方法 計(jì)算資產(chǎn)負(fù)債表,這里提供計(jì)算的方法僅供演示 from 科目余額表 where 會(huì)計(jì)期間 = kjqjmitGO select 科目代碼, 本期借方余額, 本期貸方余額,0,0,0,0, 本期貸方發(fā)生額, 本年借方累計(jì)發(fā)生額, 本年貸方累計(jì)發(fā)生額, 本期借方余額, 新會(huì)計(jì)期間的科目余額表 本期借方合計(jì) = 0, 本期貸方合計(jì) = 0, 余額 = 0 清除匯總帳簿和明細(xì)帳簿,進(jìn)入新的會(huì)計(jì)期間 將本期匯總帳簿和明細(xì)帳簿倒入歷史,實(shí)例程序不演示當(dāng)前會(huì)計(jì)期間39。 更新會(huì)計(jì)期間 本期貸方余額 = 期初貸方余額 + 本期貸方發(fā)生額 本年貸方累計(jì)發(fā)生額 = 本年貸方累計(jì)發(fā)生額 + 本期貸方發(fā)生額, update 科目余額表 set 科目余額表 as a, 本期匯總帳簿 as b 會(huì)計(jì)期間 = , 余額方向 = 計(jì)算科目余額表,可以統(tǒng)計(jì)資產(chǎn)負(fù)債表/損溢表等 當(dāng)前會(huì)計(jì)期間 exec sf_憑證過帳create proc sf_期末結(jié)帳as begin tran delete from 分錄表