【正文】
編號號物資編號狀態(tài)操作日期調整數(shù)量號物資名稱圖413 盤點表屬性ER分圖用戶信息包括用戶ID、用戶名稱、用戶密碼、用戶權限,用戶所屬部門等。用戶ID用戶名稱用戶權限用戶密碼號用戶信息用戶所屬部門圖414 用戶信息屬性ER分圖供應商資料表中,編號是其主鍵,每次增加,自動加一。信譽等級是根據(jù)供應商的供貨速度,供應商品質量的一個評價,五星最好,零星最差。具體如表41。主鍵,自動增加1Provider文本20不可以供應商名稱Address文本50可以地址Telephone數(shù)字整形不可以電話Fax數(shù)字整形可以傳真Grade數(shù)字整形可以信譽等級 Goods文本50不可以提供商品Introduce文本100可以簡介物資資料表中,編號是其主鍵,每次增加,自動加一。供應商編號與供應商名稱為其外鍵。具體如表42。主鍵,自動增加Good文本20不可以物資名稱Unit文本5可以計量單位。外鍵Provider文本20不可以供應商名稱。為日期后加6位數(shù),初始數(shù)為000000,如201233000000。申購部門從登陸信息中獲取。表43申購單信息表字段名數(shù)據(jù)類型字段大小可否為空說明SubscibeID數(shù)字整形不可以申購單號。自動提取系統(tǒng)時間Subscriber文本10不可以申購人SDepartment文本10不可以申購部門State數(shù)字整形不可以狀態(tài)0. 待審核 1. 已審核GoodID數(shù)字整形不可以物資編號。為日期后加6位數(shù),初始數(shù)為000000,如201233000000。采購人由采購部門主任指定,狀態(tài)分為“待審批”、“采購中”、“已入庫”、“已關閉”4個。表44采購單信息表字段名數(shù)據(jù)類型字段大小可否為空說明StockID數(shù)字整形不可以采購單號。外鍵Good文本20不可以物資名稱Stocker文本10不可以采購人Amount數(shù)字整形不可以采購數(shù)量Price貨幣不可以采購單價Total貨幣不可以采購總額采購總額=采購數(shù)量*采購單價State貨幣不可以狀態(tài)0.待審批1.采購中2.已入庫3. 已關閉庫存信息表中,物資編號是其主鍵,每次增加,自動加一。供應商名稱為其外鍵。具體如表45。主鍵 Good文本20不可以物資名稱State數(shù)字整形不可以物資狀態(tài)0. 不可用1. 可用Price貨幣可以采購價Provider文本20可以供應商名稱。小于“正常儲備”HighStore數(shù)字數(shù)字可以最高儲備。為8位數(shù),初始數(shù)為00000000。狀態(tài)分為“待審批”與“已審批”兩個。表46盤點信息表字段名數(shù)據(jù)類型字段大小可否為空說明CheckID數(shù)字整形不可以編號。正數(shù)為“盈”負數(shù)為“虧”PerformDate日期/時間不可以操作日期Performer文本10不可以操作人員State數(shù)字整形不可以狀態(tài)0. 待審批1. 已審批用戶信息表中,用戶ID是其主鍵,由管理員定義。用戶權限為一數(shù)值,具體請參照第五章內(nèi)容。表47用戶信息表字段名數(shù)據(jù)類型字段大小可否為空說明ID數(shù)字整形不可以用戶ID。如圖51。創(chuàng)建3個標簽,分別為“物資采購管理系統(tǒng)”、“用戶名”、“密碼”,以顯示需求信息。另外,還要建立“確定”及“取消”兩個按鈕實現(xiàn)登陸及退出程序功能。圖51 系統(tǒng)登錄界面該功能部分代碼如下:Private Sub xpbutton1_Click()On Error GoTo finish 39。 amp。 39。 amp。 39。以上使用最通用的方法來查詢數(shù)據(jù)庫中是否有匹配的記錄If = True Then 39。pnum就是密碼驗證次數(shù),當次數(shù)超過3次,系統(tǒng)會自動保護退出 pnum = pnum + 1 Beep MsgBox 用戶名或密碼錯誤!, vbInformation, 錯誤次數(shù): amp。供應商記錄體:Type Supplier id As Integer name As String adress As String telephone As Integer fax As String grade As Integer good As String introduce As StringEnd Type同樣的,也為物資按照第四章的內(nèi)容定義一個記錄體Material。并且建立所需的標簽、按鈕等,分別設計各自界面。52供應商信息界面53物資信息界面該窗體用于顯示和修改供應商的相關資料。在程序運行中,通過用戶操作,對記錄數(shù)組進行增加、修改、刪除等操作,所以需要為供應商和物資資料各自定義一個動態(tài)記錄數(shù)組【26】。供應商與物資的查找主要依據(jù)分別為“供應商編號”和“物資編號”。 cgtable) = 1 39。必須+1,因為實際上為4行,但第一行是隱藏的For i = 0 To i 1 39。讀取表中的各字段名Nextn = ii = 1Do While Not 39。設定讀取列 If (j 1) = Null Then 39。 (i, j).Text End If End If Next i = i + 1 39。如圖555所示。55 采購單窗口采購單中的重要變量如下:1)采購單號,用于對數(shù)據(jù)查找的主要依據(jù);2)狀態(tài),根據(jù)此來開放對申購單的操作權限,并且影響界面的顯示信息,當采購單關閉后,將不能進行任何操作;3)申購部門,當申購單不通過審批時,會返回該部門一個信息提示并告之不通過原因。當選擇“申購單審核”時只顯示未通過審核的申購單。只有“填寫申購單”與“申購單修改”功能中,能對申購單信息進行修改,而當生成采購單后,只有采購部門主任可以修改采購人信息,其余信息則不能進行更改,只能根據(jù)操作更改“狀態(tài)”信息。提交操作On Error GoTo finish: 39。明細表中沒有內(nèi)容時退出操作MsgBox 明細表內(nèi)無內(nèi)容,確定后輸入...Exit SubEnd If39。 amp。 39。以下是將生成一個SQL所需要使用的語句,把這些內(nèi)容放到SQL字符串中,在后面在執(zhí)行sql = insert into 申購單 values(39。 amp。,39。 amp。,39。 xtext5(0).Text amp。,39。 amp。,39。 _ xtext5(1).Text amp。,39。 amp。,39。 amp。,39。 amp。,39。 amp。,39。 _ xtext5(2).Text amp。,39。 amp。,39。)Set cg1 = (sql) 39。這里循環(huán)從第一行到最后一行 If (i, 1).Text = Then MsgBox 提交成功,等待審核... Call Form_Load = 1 Exit Sub End If 39。 amp。 39。 amp。 39。 amp。 39。 (i, 4).Text amp。 amp。 39。 0,39。 (i, 5).Text amp。, 39。 (i, j).Text amp。 0, End If Next sql = sql amp。 amp。 39。 amp。 39。執(zhí)行SQL語句 NextMsgBox 提交成功,等待審核...Call Form_Load = 1Exit Subfinish:MsgBox End SubPrivate Sub XPButton6_Click()If system(1) = False ThenMsgBox 無審核權限!Exit SubEnd IfIf = adStateOpen Then End If select * from 申購單 where 采購單號=39。 amp。, n, adOpenKeyset, adLockOptimistic, adCmdTextIf = 審核 ThenIf = False Then(11) = 已審核Call Form_LoadMsgBox 審核完成! = LoadPicture( amp。 \images\)ElseMsgBox 無此訂單,審核無效!Call Form_LoadEnd IfEnd IfEnd Sub首先,為庫存信息、盤點表建立一個動態(tài)記錄數(shù)組Storage,Checking和窗體及界面。只有簡單的增加、修改、刪除功能。當盤點表通過審批后會進行入庫操作,并同步更新庫存信息。 ( 1, i).Text End If End If Next LoopExit Subfinish: MsgBox End Sub“采購單分析”模塊首先先判定用戶的選擇,然后按照用戶選擇要求對采購單資料進行搜索,被搜索的采購單為已關閉的采購單。“庫存分析”模塊中庫存的消耗速度計算方式:本月1號時該物資庫存量加上上一個月對該物資的采購量減去上一個月1號時該物資的庫存量等于上一個月的庫存消耗量,為此每個月1號系統(tǒng)自動生成一個庫存表記錄當前物資的庫存量。“庫存分析”模塊同樣按用戶需求計算并顯示最終結果。管理員對用戶的管理基于本模塊來實現(xiàn),界面如圖57所示。其中“用戶權限”為系統(tǒng)重要依據(jù)。每個用戶的“用戶權限”數(shù)值等于他所擁有的權限所代表的值的乘積。當用戶使用軟件時,判斷是否擁有該權限的標準為:“用戶權限”能否整除權限所代表的數(shù)值。57 用戶管理窗口部分核心代碼:Private Sub Form_Load() With Grid1 .AllowUserResizing = True .DisplayFocusRect = False 39。RGB(90, 158, 214) .BackColorFixedSel = RGB(128, 217, 193) 39。RGB(90, 158, 214) .BackColorScrollBar = RGB(128, 217, 193) .BackColor1 = RGB(231, 235, 247) .BackColor2 = RGB(239, 243, 255) .GridColor = RGB(148, 190, 231) .Column(0).Width = 0 .Column(1).Width = 100 .Column(2).Width = 100End WithFor i = 3 To 139。當前指向表名為權限Call callmainEnd SubIf Poperdom Mod 3 = 0 Then 39。申購單的審核與生成quanxian5 = tureEnd IfIf Poperdom Mod 7 = 0 Then 39。采購單的審核與關閉quanxian11 = tureEnd IfIf Poperdom Mod 13 = 0 Then 39。盤點表的審批quanxian17 = tureEnd IfIf Poperdom Mod 19 = 0 Then 39。用戶信息的添加、權限修改與刪除quanxian23 = tureEnd If由于Access數(shù)據(jù)庫的ODBC驅動程序擁有的SQL指令比較全,執(zhí)行效率高,所以Access后臺數(shù)據(jù)庫+VB程序界面,是一個精練實用而又高效的組合模式。在VB程序中,由VB Script建立對Access數(shù)據(jù)庫連接,為客戶能夠訪問后臺數(shù)據(jù)庫的提供了前提【30】。其中,數(shù)據(jù)庫名是我們需要指定的參數(shù),用我們要打開的數(shù)據(jù)庫的實際名稱替代?! 〉诙航⒁粋€ADO對象集中的Connection對象,也即連接對象。執(zhí)行這行程序后,Conn成為一個連接對象。因為我們要打開的是Access數(shù)據(jù)庫,所以要指定ODBC驅動程序參數(shù),表示要透過Access的ODBC驅動程序來訪問數(shù)據(jù)庫:driver={Microsoft Access Driver (*.mdb)}。執(zhí)行這行后,rs就成為一個Recordset對象?!?1】代碼如下:Public n As New Public cg1 As New Public cg2 As New Public cg3 As New Public cg4 As New Public Declare Function GetPrivateProfileString Lib kernel32 Alias GetPrivateProfileStringA (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As LongPub