劉勇濤
各階段產生的數(shù)據(jù)進行全面管理,同時對管理的各項數(shù)據(jù)采用自定義篩選的方式,通過點擊數(shù)據(jù)網(wǎng)格的某個標題欄,對數(shù)據(jù)網(wǎng)格中的標題欄綁定的數(shù)據(jù)字段進行排序、常規(guī)篩選或自定義條件篩選,達到快速、便捷、高效的篩選出想要的數(shù)據(jù),生成各類簡明報表和直觀圖表,提高公司管理水平和工作效率。
關鍵詞:管子加工管理系統(tǒng);自定義篩選; 數(shù)據(jù)網(wǎng)絡
中圖分類號:TP315? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼:A
Improving Work Efficiency of Pipe Processing Management System by Achieving Custom Screening
LIU Yongtao
(CSSC Huangpu Wenchong Shipbuilding Co., Ltd., Guangzhou 510725 )
Abstract: The pipe processing management system is used to comprehensively manage the data generated in each stage of processing, such as processing receipt, contract, incoming goods, inventory, production arrangement, invoice and payment collection of the order. At the same time, the custom screening method is provided for the management of various data, by clicking a title bar of the data grid, the data in the data grid can be sorted, screened by general or user-defined conditions according to the data fields bound to the title bar, so as to achieve fast, convenient and efficient screening of the desired data, generate various concise reports and intuitive charts, improve the management level and work efficiency of the company.
Key words: Pipe processing management system; Custom screening; Data network
1? ? ?前言
我司年加工管子約45萬支,從接單、訂貨、庫存、加工、送貨、收款等階段都會產生了大量的數(shù)據(jù),靠手工臺帳或EXCEL電子表格進行管理效率低下,有必要借助管子加工管理系統(tǒng),對接單的加工小票、合同、來貨、庫存、生產安排、發(fā)票及收款等各階段產生的數(shù)據(jù)進行全面管理,對各項數(shù)據(jù)進行快速、便捷、高效的篩選,生成各類簡明報表和直觀圖表,提高公司管理水平和生產效率。
本系統(tǒng)的數(shù)據(jù)庫采用SQL SERVER2008,程序的開發(fā)工具是Delphi 6.0。
2? ? ?系統(tǒng)功能
系統(tǒng)主要分為:基礎數(shù)據(jù)、小票、合同、來貨、庫存、生產安排、查詢、打印、發(fā)票及收款九大項。
(1)基礎數(shù)據(jù)
包括:客戶維護、船舶維護、卡位維護、員工維護和材料牌號維護。
(2)小票
包括:小票導入、小票數(shù)據(jù)維護(導入)、小票數(shù)據(jù)維護(自錄)、小票查詢、數(shù)據(jù)狀態(tài)維護和接收外網(wǎng)小票文件。
(3)合同
包括:加工合同導入、加工合同查詢、采購合同導入、采購合同查詢、供貨合同導入和供貨合同查詢。
(4)來貨
包括:加工來貨導入、加工來貨查詢、采購來貨導入、采購來貨查詢、供貨來貨導入、供貨來貨查詢。
(5)庫存
包括:入庫查詢、生產發(fā)料、發(fā)料查詢、備料發(fā)料、發(fā)料修改、庫存盤點、盤盈盤虧和庫存出庫。
(6)生產安排
包括:號料表和裝箱清單編制、號料表和裝箱清單完成情況、隨車送貨單生成、過磅重量維護、管材備料送貨單、結算單維護和供貨單。
(7)查詢
包括:合同來貨情況、庫存(年)查詢、裝箱單完工、小票完成情況、小票材料檢查、發(fā)票查詢、供貨合同送貨情況、送貨單未開申請、采購合同來貨情況。
(8)打印
包括:成品送貨單打印、成品發(fā)料單打印、備料單打印、管材備料送貨打印、結算單打印。
(9)發(fā)票及收款
包括:結算單關聯(lián)發(fā)票、發(fā)票收款登記、送貨單付款登記。
3? ? ?自定義篩選功能設計
如何達到對管理的各項數(shù)據(jù)進行快速、便捷、高效的篩選,必須從篩選功能設計下手。
一般的篩選界面設計方式,其篩選的內容可以直接輸入或從下拉框中選擇,然后點擊篩選按鈕,此時會對數(shù)據(jù)庫的數(shù)據(jù)進行篩選,并以固定的排序方式顯示在界面的數(shù)據(jù)網(wǎng)格中。熟悉EXCEL的用戶都會被EXCEL強大的排序和篩選功能折服,這也是用戶在使用管理軟件時,喜歡將數(shù)據(jù)導出至EXCEL,再借助EXCEL強大的排序和篩選功能,快速、便捷地得到想要的數(shù)據(jù)。
下面以小票查詢界面為例,介紹如何設計出強大的自定義篩選功能。
實現(xiàn)自定義篩選功能的思路是:放置一個用于顯示數(shù)據(jù)的數(shù)據(jù)網(wǎng)格,點擊數(shù)據(jù)網(wǎng)格的某個標題欄,通過該標題欄綁定的數(shù)據(jù)字段對數(shù)據(jù)網(wǎng)格中的數(shù)據(jù)進行排序、常規(guī)篩選或自定義條件篩選。如果執(zhí)行的是數(shù)據(jù)篩選操作,則將該標題欄作特殊顯示,告知用戶此時數(shù)據(jù)網(wǎng)格中顯示的數(shù)據(jù)是通過對該標題欄做了篩選操作的。
3.1? ?界面設計
點擊菜單File、New、Form,添加一個窗體,將該窗體的名稱設為xpcxfrm、Caption設為小票查詢,F(xiàn)ormStyle設為fsMDIChild,同時將該窗體保存為xpcx_frm。
從工具欄中點擊EhLib面板,將控件DBGridEh拖放至表單xpcxfrm中,采用系統(tǒng)默認的命名DBGridEh1,設置好其相關的屬性值。
要使DBGridEh1數(shù)據(jù)網(wǎng)格中能夠顯示數(shù)據(jù),必須綁定數(shù)據(jù)源。
從工具欄中點擊Ado面板,向窗體添加二個AdoQuery,為a1、a2;再點擊Data Access面板,向窗體添加一個DataSource,其名稱設為DataSource1、DataSet設為a1、DataSource設為DataSource1。
雙擊小票查詢表單的OnShow,通過a1從數(shù)據(jù)庫中篩選數(shù)據(jù)并顯示于數(shù)據(jù)網(wǎng)格DBGridEh1中。
3.2? ?設置排序和篩選菜單
點擊數(shù)據(jù)網(wǎng)格的標題欄,出現(xiàn)可操作的菜單項,包括升序、降序、從XXX中清除篩選、文本/數(shù)字篩選、搜索框、多選條件框和搜索、確認、取消按鈕。
(1) 添加排序和篩選面板(菜單)
① 點擊Standard面板,添加一個Sele_Panel;從工具欄中點擊Additional面板,添加7個控件(Sele_Panel_Asc、Sele_Panel_Desc、Sele_Panel_Clear、Sele_Panel_Select、Sele_Panel_Find、Sele_Panel_Confirm、Sele_Panel_Cancel);點擊Standard面板,添加1個Edit控件(Sele_Panel_Edit),Text設為搜索;
點擊1stClass面板,添加1個控件(Sele_panel_fc)。
以上控件的其余屬性做相應的設置即可;
② 在程序運行時,點擊數(shù)據(jù)網(wǎng)格的某個標題欄時,假設點擊了數(shù)據(jù)網(wǎng)格的規(guī)格標題欄,系統(tǒng)將彈出排序和篩選面板(菜單);
點擊升序菜單項,則數(shù)據(jù)網(wǎng)格中顯示的數(shù)據(jù)將按規(guī)格以升序的方式重新排序;點擊降序菜單項,則數(shù)據(jù)網(wǎng)格中顯示的數(shù)據(jù)將按規(guī)格以降序的方式重新排序;點擊從‘規(guī)格中清除篩選菜單項,數(shù)據(jù)網(wǎng)格中顯示的將是清除后的數(shù)據(jù)。
多選框中的規(guī)格,是當前數(shù)據(jù)網(wǎng)格中按規(guī)格唯一值篩選出來的,也可通過在搜索文本框中輸入想篩選規(guī)格的關鍵字來減少多選框中顯示的規(guī)格;
③ 對于文本型數(shù)據(jù),常用的篩選方式有:等于、不等于、開頭是、結尾是、包含和不包含;
④ 對于數(shù)值型數(shù)據(jù),常用的篩選方式有:等于、不等于、大于、大于或等于、小于、小于或等于、介于、N個最大的值、高于平均值、低于平均值。對于本實例中顯示的數(shù)據(jù),只有長度和重量是數(shù)值型,其它均是文本型。
(2) 添加文本篩選面板(菜單)
點擊Standard面板,向窗體添加一個Exp_Panel;點擊Additional面板,向Exp_Panel面板添加7個SpeedButton控件(Exp_Panel_Bt1、Exp_Panel_Bt2、Exp_Panel_Bt3、Exp_Panel_Bt4、Exp_Panel_Bt5、Exp_Panel_Bt6、Exp_Panel_Bt7);向Exp_Panel面板添加3個Sharp控件,作為上面7個菜單項的分隔符,依次設置控件的屬性值。
當把鼠標指針移動到文本篩選菜單項時,系統(tǒng)將彈出文本篩選面板(菜單)。
(3) 添加數(shù)字篩選面板(菜單)
點擊Standard面板,添加一個Spe_Panel;點擊Additional面板,添加11個SpeedButton控件(Spe_Panel_Bt1~Spe_Panel_Bt11);向Spe_Panel面板添加3個Sharp控件,作為上面11個菜單項的分隔符。
當把鼠標指針移動到數(shù)字篩選菜單項時,系統(tǒng)將彈出數(shù)字篩選面板(菜單)。
3.3? ?添加自定義自動篩選窗體
點擊文本篩選菜單項或數(shù)字篩選菜單項(除10個最大的值、高于平均值、低于平均值菜單項外),出現(xiàn)對所選字段可由用戶自行輸入或選擇內容且自由組合該字段篩選方式的窗體。
點擊菜單File、New、Form,添加一個窗體,改名為zdsxfsfrm,Caption改為自定義自動篩選方式,同時將該窗體保存為zdsxfs_frm。
點擊Standard面板,添加2個Label、4個ComboBox和2個RadioButton;點擊Additional面板,添加2個SpeedButton和1個Sharp。
3.4? ?添加自動篩選前10個窗體
點擊菜單File、New、Form,添加一個窗體,改名為zdsxfs1frm,Caption改為自動篩選前10個,同時將該窗體保存為zdsxfs1_frm。
點擊Standard面板,添加2個ComboBox、1個Label和1個Edit;點擊Additional面板,添加2個SpeedButton和1個Sharp;點擊Win32面板,添加1個UpDown。
4? ? 代碼實現(xiàn)
在xpcxfrm表單中定義8個過程和1個記錄型數(shù)據(jù):
(1)8個過程
① procedure showdata(Fir:Boolean):按設置的條件篩選數(shù)據(jù),并顯示于數(shù)據(jù)網(wǎng)板中;
②procedure showtj(sTitle:string;sZd:String):根據(jù)點擊標題欄篩選網(wǎng)格中的數(shù)據(jù),并顯示于多選條件框中;
③procedure showpanel(i:integer):根據(jù)點擊標題欄顯示排序和篩選菜單;
④procedure Decide(Node:TfcTreeNode):判斷點擊多選條件框項,同時更改多選條件框各項的勾選狀態(tài);
⑤procedure DataSort:對數(shù)據(jù)網(wǎng)格中顯示的數(shù)據(jù),根據(jù)點擊標題欄項進行升序或降序顯示;
⑥procedure showcheck(sZd:String):根據(jù)點擊的標題欄和輸入的搜索內容從數(shù)據(jù)網(wǎng)格中篩選數(shù)據(jù)并顯示于多選條件框中;
⑦procedure SetExpress:設置并獲得自定義篩選條件;
⑧procedure SetSpecial:設置并獲得特別項數(shù)據(jù)(如最大的前10項)。
(2)用于記錄各字段已經(jīng)設置的篩選條件:1個記錄型數(shù)據(jù)
type
Expr = record
Field:string;
Expr:string;
MaxExpr:string;
Ishl:integer;
Null:String;
Spe:integer;
end;
各項含義說明如下:
Field:用于存放篩選條件的字段名;
Expr:用于存放篩選條件的表達式;
MaxExpr:用于存放最大或最小的值;
Ishl:用于記錄篩選條件中字段已使用的次數(shù);
Null:用于存放篩選條件是否是空值;
Spe:用于記錄篩選條件的方式,0為正常,1為最大項,2為最大百分比,3為最小項,4為最小百分比,5為高于平均值,6為低于平均值,其中1-4時MaxExpr的值為項數(shù)或百分比數(shù)。
當程序運行時,初始化記錄型數(shù)據(jù)TJexpr:
procedure Txpcxfrm.FormShow(Sender: TObject);
var
i:integer;
begin
self.Resize;
Setlength(Tjexpr,DBgrideh1.Columns.Count);? //初始化記錄型數(shù)據(jù)TJexpr
for i:=0 to DBgrideh1.Columns.Count-1 do
begin
DBgrideh1.Columns[i].Title.TitleButton:=True;? ? ?//將數(shù)據(jù)網(wǎng)格的標題設置為按鈕
DBgrideh1.Columns[i].Title.Hint:=DBgrideh1.Columns[i].Title.Caption;
Tjexpr[i].field:=DBgrideh1.Columns[i].FieldName;
Tjexpr[i].expr:='';
TJexpr[i].MaxExpr:='';
Tjexpr[i].null:='';
Tjexpr[i].ishl:=0;
Tjexpr[i].spe:=0;
end;
sField:=DBGrideh1.Columns[0].FieldName;
showdata(True);? ? ? ?//第一次,顯示所有數(shù)據(jù)于數(shù)據(jù)網(wǎng)格中;
End。
5? ? 結論
至此,管子系統(tǒng)中的小票查詢界面的強大的自定義篩選功能設計完成。進入系統(tǒng)后,點擊面板菜單中的小票查詢按鈕,根據(jù)所顯示的界面用鼠標點擊數(shù)據(jù)網(wǎng)格的標題欄,即可體驗到對數(shù)據(jù)網(wǎng)格中的數(shù)據(jù)進行排序和自定義篩選功能,從而提高工作效率。
參考文獻
[1] 王晟,萬科. Delphi數(shù)據(jù)庫開發(fā)經(jīng)典案例解析[M]. 北京:清華大學出
版社, 2005.
[2] 毛新軍. 面向主體的軟件開發(fā)[M]. 北京:清華大學出版社, 2005.
[3] 張友生, 李雄. 軟件開發(fā)模型研究綜述[J]. 計算機工程與應用, 2006,
42(3): 109-115.