【正文】
Basic(簡(jiǎn)稱VB)是美國(guó)微軟公司(Microsoft)于1990年推出的一套完整的Windows系統(tǒng)軟件開發(fā)工具,可用于開發(fā)Windows環(huán)境下的各類應(yīng)用程序,是一種可視化、面向?qū)ο?、用事件?qū)動(dòng)方式的結(jié)構(gòu)化高級(jí)程序設(shè)計(jì)語言和工具,是目前使用最廣泛的編程語言之一。系統(tǒng)引進(jìn)了窗體和控件的機(jī)制,用于設(shè)計(jì)應(yīng)用程序界面。VB的另一重要特點(diǎn)是事件驅(qū)動(dòng)。程序員不必?fù)?dān)心如何判斷事件是否已發(fā)生,只需要編寫一段代碼告訴計(jì)算機(jī)在事件發(fā)生以后應(yīng)該做什么工作就可以了。利用VB的可視性特點(diǎn),可方便的設(shè)計(jì)了程序的窗體界面,并在各個(gè)窗體中的合適位置繪制所需的每種控件。利用VB的事件驅(qū)動(dòng)性特點(diǎn),只需在窗體或控件上的代碼窗口中添加少量的代碼,便可達(dá)到告訴當(dāng)在相應(yīng)的窗體或控件上發(fā)生某一事件時(shí),它們?cè)谑录l(fā)生后應(yīng)該做什么工作的目的。 數(shù)據(jù)庫組件介紹在使用Visual Basic開發(fā)數(shù)據(jù)庫應(yīng)用程序的時(shí)候,會(huì)經(jīng)常使用數(shù)據(jù)庫訪問控件。下面將分別對(duì)這些控件的主要功能及使用方法進(jìn)行介紹。它使用Recordset對(duì)象提供對(duì)存儲(chǔ)在數(shù)據(jù)庫中數(shù)據(jù)的訪問。許多其他的數(shù)據(jù)庫操作控件都需要Data控件或類似的數(shù)據(jù)源控件(比如ADO Data控件)。Data控件通常需要與其他控件結(jié)合使用。因?yàn)槌绦騿T無需編寫任何代碼,就可以在這些控件中顯示當(dāng)前記錄的數(shù)據(jù)。當(dāng)與Data控件相連接時(shí),DataList、DataCombo、DataGrid和MSHFlexGrid控件都能管理記錄集合。內(nèi)部的Picture、Label、TextBox、CheckBox、Image、OLE、ListBox和ComboBox控件也是數(shù)據(jù)覺察的,能和由Data控件管理的Recordset對(duì)象的某個(gè)字段相連接。用戶可以使用ADO Data控件快速地創(chuàng)建一個(gè)到數(shù)據(jù)庫的連接。DataCombo控件的功能與DataList控件完全相同,只不過DataCombo控件是一個(gè)組合框。這時(shí)就要借助于DaatGrid控件。這個(gè)DataGrid控件實(shí)際上是一個(gè)固定的列集合,每一列的行數(shù)都是不確定的。這會(huì)使枯燥的數(shù)據(jù)變得更加生動(dòng)直觀,增加了程序的實(shí)用價(jià)值。 SQL語言在VB中的應(yīng)用為實(shí)現(xiàn)使用VB程序調(diào)用SQL語言訪問Access數(shù)據(jù)庫多個(gè)記錄的目的,我們利用SQL提供的函數(shù)。假定“Orders”是數(shù)據(jù)庫文件中地一張表格,則x=Dsum(“[Feight]”,”O(jiān)rder”.”[ship country]=’UK’”)在進(jìn)信息查詢和統(tǒng)計(jì)地過程中,我們往往需要從記錄集中根據(jù)待定的條件提取其中的一部分記錄信息。(1)建立一個(gè)新的查詢set mydb=Open Database(“c:\DIR1\”)(打開數(shù)據(jù)庫文件c:\DIR1\)set myquery= QueryDef(“monthquery”)(創(chuàng)建查詢名為monthquery的查詢)=”select*from OPNRPT where mid $(year,7,2)=’”amp。”’…”(利用查詢的SQL屬性,建立查詢依據(jù),即查詢的條件。需要說明的兩點(diǎn)是:①使用前先定義Dim mydb AS Database及myquery AS querydef.②查詢”monthquery”沒有使用Data控件,也就不直接顯示信息。計(jì)算機(jī)通過增加了條件的monthquery查詢組成了新的記錄集。通過這一個(gè)方法定義的記錄集可以使用move和Find方法逐條記錄的進(jìn)行操作。在Access中,用戶不需要編寫復(fù)雜的程序就可以建立一個(gè)完整的數(shù)據(jù)庫應(yīng)用系統(tǒng),是一個(gè)典型的開放式數(shù)據(jù)庫系統(tǒng),它可以和Windows下的其他應(yīng)用程序共享數(shù)據(jù)庫資源。Access 的優(yōu)點(diǎn)在于它能使用數(shù)據(jù)表示圖或自定義窗體收集信息。另外,Access 允許創(chuàng)建自定義報(bào)表用于打印或輸出數(shù)據(jù)庫中的信息。Access 是一種關(guān)系數(shù)據(jù)庫工具,關(guān)系數(shù)據(jù)庫是已開發(fā)的最通用的數(shù)據(jù)庫之一。庫存管理系統(tǒng)設(shè)計(jì)分析本套應(yīng)用程序名稱為“庫存管理系統(tǒng)”,主要用于倉庫貨品信息的管理,系統(tǒng)包括倉庫管理、入庫、出庫、一些統(tǒng)計(jì)查詢和報(bào)表等幾部分組成。對(duì)于一個(gè)倉庫來說,最大的功能就是存儲(chǔ)貨品,所以倉庫管理就是對(duì)貨品信息,倉庫信息,短線貨品及超儲(chǔ)貨品的管理,用戶可以根據(jù)實(shí)際情況對(duì)各種貨品信息進(jìn)行分類管理,包括添加,刪除更新數(shù)據(jù)庫等。有了貨品的入庫,自然也就有貨品的出庫,這部分提供的功能與入庫操作流程差不多,有所區(qū)別的只是對(duì)一些出庫貨品的管理,也很方便數(shù)據(jù)的輸入。本系統(tǒng)實(shí)現(xiàn)對(duì)貨品信息的管理和總體的統(tǒng)計(jì)等,倉庫信息,供貨單位和經(jīng)辦人員信息的查看及維護(hù)。報(bào)表是一個(gè)數(shù)據(jù)庫中最重要的功能之一,有了報(bào)表才能清楚地知道貨品的出入庫情況,在數(shù)據(jù)報(bào)表功能中包括出庫報(bào)表,庫存報(bào)表及經(jīng)辦人員報(bào)表等一些基本信息的打印,方便簡(jiǎn)潔。 ●系統(tǒng)特色: ,即時(shí)對(duì)系統(tǒng)數(shù)據(jù)進(jìn)行安全設(shè)置與保護(hù)。,采用先進(jìn)的數(shù)據(jù)庫訪問方式,數(shù)據(jù)更安全,性能更穩(wěn)定。易懂易會(huì)。庫存管理系統(tǒng)倉庫管理入庫管理出庫管理盤存管理綜合管理附項(xiàng)分類歷史數(shù)據(jù)管理打印、查詢系統(tǒng)貨品信息管理貨品庫存管理短線貨品管理超儲(chǔ)貨品管理出庫登記管理貨品出庫年度統(tǒng)計(jì)收貨單位年度收貨金額統(tǒng)計(jì)盤存錄入貨品出入庫期間匯總表倉庫信息管理供貨單位管理收貨單位管理經(jīng)辦人員管理 基本模塊與功能:包括用戶管理,密碼管理,關(guān)閉系統(tǒng),以及數(shù)據(jù)的備份與恢復(fù),可以根據(jù)需要對(duì)整個(gè)數(shù)據(jù)庫進(jìn)行備份,以確保數(shù)據(jù)的安全性。據(jù)流程圖:登陸庫存管理系統(tǒng)驗(yàn)證用戶信息系統(tǒng)主窗體倉庫管理入庫管理出庫管理盤存管理綜合管理附項(xiàng)分類歷史數(shù)據(jù)管理打印、查詢系統(tǒng)貨品入庫單經(jīng)辦人員報(bào)表貨品出庫單數(shù)據(jù)備份備份輸出庫存匯總圖4-1 庫存管理系統(tǒng)數(shù)據(jù)流程圖 密碼錯(cuò)誤 匯總計(jì)算貨品信息管理數(shù)據(jù)流程圖:貨品登記基本信息錄入貨品基本信息管理貨品調(diào)配匯總出庫貨品信息管理入庫貨品信息管理貨品其他信息管理圖4-2 貨品信息管理數(shù)據(jù)流程圖本庫存管理系統(tǒng)是應(yīng)用在單機(jī)系統(tǒng)上的,所以只需建立起一個(gè)數(shù)據(jù)庫,在此數(shù)據(jù)庫基礎(chǔ)上建立起表格,現(xiàn)將部分?jǐn)?shù)據(jù)結(jié)構(gòu)表描述如下:貨品信息表字段名數(shù)據(jù)類型字段長(zhǎng)度是否為空貨品編碼文本5貨品名稱文本10類別文本8型號(hào)文本4單位文本2倉庫編碼文本5存放倉庫文本12入庫計(jì)劃單價(jià)貨幣出庫計(jì)劃單價(jià)貨幣原始庫存數(shù)字長(zhǎng)整型默認(rèn)貨位文本5警戒底線庫存數(shù)字長(zhǎng)整型警戒高線庫存數(shù)字長(zhǎng)整型表1 貨品信息表入庫登記表字段名數(shù)據(jù)類型字段長(zhǎng)度是否為空入庫日期日期/時(shí)間入庫單號(hào)文本10貨物編碼文本5數(shù)量數(shù)字長(zhǎng)整型進(jìn)貨價(jià)貨幣總額貨幣已付貨款貨幣供貨單位編碼文本5供貨單位文本20經(jīng)辦人編碼文本5經(jīng)辦人文本8增值稅率數(shù)字單精度型備注備注表2 入庫登記表出庫登記表字段名數(shù)據(jù)類型字段長(zhǎng)度是否為空出庫日期日期/時(shí)間出庫單號(hào)文本10貨物編碼文本5貨物名稱文本10數(shù)量數(shù)字長(zhǎng)整型單價(jià)貨幣出貨價(jià)貨幣總額貨幣已收獲款貨幣收貨單位編碼文本5收貨單位文本20經(jīng)辦人編碼文本5經(jīng)辦人文本8增值稅率數(shù)字單精度型備注備注表3 貨品出庫表倉庫信息表字段名數(shù)據(jù)類型字段長(zhǎng)度是否為空倉庫編號(hào)文本5倉庫名稱文本12存貨種類文本2存貨價(jià)值貨幣表4 倉庫信息表供貨單位信息表(收貨單位表)字段名數(shù)據(jù)類型字段長(zhǎng)度是否為空單位編號(hào)文本5單位名稱文本50單位地址文本50電話文本15聯(lián)系人文本8表5 供貨單位信息表經(jīng)辦人員表字段名數(shù)據(jù)類型字段長(zhǎng)度是否為空編號(hào)文本5姓名文本8家庭住址文本50辦公電話文本15家庭電話文本15表6 經(jīng)辦人員表用戶表字段名數(shù)據(jù)類型字段長(zhǎng)度是否為空UserID文本10userPWD文本6表7 用戶表另外,我們還建立了幾張查詢表,用以存放部分用于計(jì)算的統(tǒng)計(jì)信息,以便查詢。入庫登記_n字段名數(shù)據(jù)類型字段長(zhǎng)度是否為空貨物名稱文本10入庫日期日期/時(shí)間年度數(shù)量數(shù)字長(zhǎng)整型表8 入庫登記_n入庫登記_w字段名數(shù)據(jù)類型字段長(zhǎng)度是否為空供貨單位文本50入庫日期日期/時(shí)間年度供貨總額數(shù)字長(zhǎng)整型表9 入庫登記_w庫存匯總字段名數(shù)據(jù)類型字段長(zhǎng)度是否為空貨物編碼文本5入庫日期日期/時(shí)間貨物名稱文本10數(shù)量(入庫)數(shù)字長(zhǎng)整型進(jìn)貨價(jià)貨幣數(shù)量(出庫)數(shù)字長(zhǎng)整型庫存數(shù)量數(shù)字長(zhǎng)整型表10 庫存匯總表出庫登記_h字段名數(shù)據(jù)類型字段長(zhǎng)度是否為空貨物名稱文本10出庫日期日期/時(shí)間年度數(shù)量數(shù)字長(zhǎng)整型表11 出庫登記_h出庫登記_d字段名數(shù)據(jù)類型字段長(zhǎng)度是否為空收貨單位文本50出庫日期日期/時(shí)間年度金額總額數(shù)字長(zhǎng)整型表12 出庫登記_d第五章 應(yīng)用程序設(shè)計(jì)本應(yīng)用程序由33個(gè)窗體組成,主要的分別是:主窗體,歡迎界面,登陸窗體,入庫窗體,出庫窗體,庫存匯總,打印及查詢等窗體組成。需要哪個(gè)功能的時(shí)候就點(diǎn)哪個(gè)菜單,相對(duì)應(yīng)的窗體會(huì)自動(dòng)彈出。保存用戶名39。創(chuàng)建連接Set rs = New 39。Data Source=E:\庫存管理\ strArray = Split(sql) strConnection 39。返回記錄集 iflag = 1 Else sql 39。 iflag = 2 Resume TransactSQL_ExitEnd Function●主窗體的程序代碼圖5-1 主窗體界面Private Sub a1_Click()End SubPrivate Sub a2_Click()Dim fAdd As New frmAddUser 0End SubPrivate Sub a3_Click()Dim fChangePWD As New frmChangePWD End SubPrivate Sub a4_Click()End SubPrivate Sub a5_Click() 39。調(diào)入數(shù)據(jù)恢復(fù) Load main_sjhf End SubPrivate Sub b1_Click()End SubPrivate Sub b12_Click() sql = select * from 貨品信息 order by 貨品編碼 (sql) End SubPrivate Sub b2_Click()End SubPrivate Sub B3_Click()End SubPrivate Sub b4_Click()End SubPrivate Sub c1_Click()End SubPrivate Sub c2_Click()End SubPrivate Sub c3_Click()End SubPrivate Sub c4_Click()End SubPrivate Sub Command1_Click()date1 = amp。 amp。 date2 = amp。 amp。 = date1End SubPrivate Sub d1_Click()End SubPrivate Sub d2_Click()End SubPrivate Sub d3_Click()End SubPrivate Sub d4_Click(