?? mdlshowmodify.bas
字號(hào):
Attribute VB_Name = "mdlShowModify"
Option Explicit
'根據(jù)當(dāng)前操作狀態(tài)顯示不同的修改界面
Public Sub ShowModifyInterface()
'如果列表視圖沒有選中的項(xiàng)目,則退出過程的執(zhí)行
If frmMain.ListView.SelectedItem Is Nothing Then Exit Sub
'如果數(shù)據(jù)庫中不存在用戶要修改的項(xiàng)目,則退出過程的執(zhí)行
If Not ItemExist Then Exit Sub
Dim lvw As ListView
Dim frm As Form
Dim i As Long
Set lvw = frmMain.ListView
'按照當(dāng)前操作狀態(tài)初始化并顯示不同的窗體作為修改界面
Select Case CurrentOperation
Case BrowseUser:
If UserType = 0 And UserID <> GetIDFromLvw Then
MsgBox "普通用戶僅能修改自己的密碼!", vbInformation
Exit Sub
End If
'初始化修改界面
Set frm = frmUser
frm.lblTitle = "修改用戶"
frm.cmdUser.Caption = "修改(&M)"
frm.txt(0).Enabled = False
If UserType = 0 Then frm.txt(3).Enabled = False: frm.cbo.Enabled = False
frm.txt(0) = lvw.SelectedItem.Text
frm.txt(3) = lvw.SelectedItem.ListSubItems(1).Text
frm.cbo.ListIndex = IIf(lvw.SelectedItem.ListSubItems(3).Text = "普通用戶", 0, 1)
'把要修改的項(xiàng)目的ID值存儲(chǔ)到修改界面(窗體)的Tag當(dāng)中
frm.Tag = GetIDFromLvw
'有模式顯示修改界面
frm.Show vbModal, frmMain
Case BrowseSupplier:
Set frm = frmSupplier
frm.lblTitle = "修改供貨商"
frm.cmdSupplier.Caption = "修改(&M)"
frm.txt(0) = lvw.SelectedItem.Text
frm.txt(1) = lvw.SelectedItem.ListSubItems(1).Text
frm.txt(2) = lvw.SelectedItem.ListSubItems(2).Text
frm.txt(3) = lvw.SelectedItem.ListSubItems(3).Text
frm.Tag = GetIDFromLvw
frm.Show vbModal, frmMain
Case BrowseType:
Set frm = frmType
frm.lblTitle = "修改商品類型"
frm.cmdType.Caption = "修改(&M)"
frm.txt(0) = lvw.SelectedItem.Text
frm.txt(1) = lvw.SelectedItem.ListSubItems(1).Text
frm.Tag = GetIDFromLvw
frm.Show vbModal, frmMain
Case BrowseBuy:
Set frm = frmBuy
frm.lblTitle = "修改進(jìn)貨信息"
frm.cmdBuy.Caption = "修改(&M)"
Dim Buys As New clsBuys
Buys.Query GetIDFromLvw
For i = 0 To frm.cbo.ListCount - 1
If frm.cbo.ItemData(i) = Buys.Item(1).GoodsID Then
frm.cbo.ListIndex = i
Exit For
End If
Next i
frm.txt(0) = lvw.SelectedItem.ListSubItems(2).Text
frm.txt(1) = lvw.SelectedItem.ListSubItems(3).Text
frm.txt(2) = lvw.SelectedItem.ListSubItems(6).Text
frm.txt(3) = lvw.SelectedItem.ListSubItems(7).Text
frm.txt(4) = lvw.SelectedItem.ListSubItems(12).Text
frm.Tag = GetIDFromLvw
frm.Show vbModal, frmMain
Case BrowseSale:
Set frm = frmSale
frm.lblTitle = "修改銷售信息"
frm.cmdSale.Caption = "修改(&M)"
Dim Sales As New clsSales
Sales.Query GetIDFromLvw
For i = 0 To frm.cbo.ListCount - 1
If frm.cbo.ItemData(i) = Sales.Item(1).GoodsID Then
frm.cbo.ListIndex = i
Exit For
End If
Next i
frm.txt(0) = lvw.SelectedItem.ListSubItems(1).Text
frm.txt(1) = lvw.SelectedItem.ListSubItems(2).Text
frm.txt(2) = lvw.SelectedItem.ListSubItems(9).Text
frm.Tag = GetIDFromLvw
frm.Show vbModal, frmMain
Case BrowseGoods:
Set frm = frmGoods
frm.lblTitle = "修改商品信息"
frm.cmdGoods.Caption = "修改(&M)"
frm.txt(0) = lvw.SelectedItem.Text
frm.txt(1) = lvw.SelectedItem.ListSubItems(1).Text
Dim Goodses As New clsGoodses
Goodses.Query GetIDFromLvw
For i = 0 To frm.cbo(0).ListCount - 1
If frm.cbo(0).ItemData(i) = Goodses.Item(1).TypeId Then
frm.cbo(0).ListIndex = i
Exit For
End If
Next i
For i = 0 To frm.cbo(1).ListCount - 1
If frm.cbo(1).ItemData(i) = Goodses.Item(1).SupplierID Then
frm.cbo(1).ListIndex = i
Exit For
End If
Next i
frm.txt(2).Text = lvw.SelectedItem.ListSubItems(2).Text
frm.txt(3).Text = lvw.SelectedItem.ListSubItems(5).Text
frm.txt(4).Text = lvw.SelectedItem.ListSubItems(6).Text
frm.Tag = GetIDFromLvw
frm.Show vbModal, frmMain
Case BrowseSpoilage:
Set frm = frmSpoilage
frm.lblTitle = "修改商品報(bào)損"
frm.cmdSpoilage.Caption = "修改(&M)"
Dim Spoilages As New clsSpoilages
Spoilages.Query GetIDFromLvw
frm.txt(0) = Format(Spoilages.Item(1).BuyId, "000000")
frm.txt(1) = lvw.SelectedItem.Text
frm.txt(2) = lvw.SelectedItem.ListSubItems(1).Text
frm.txt(3) = lvw.SelectedItem.ListSubItems(3).Text
frm.txt(4) = lvw.SelectedItem.ListSubItems(8).Text
frm.Tag = GetIDFromLvw
frm.Show vbModal, frmMain
Case Else:
End Select
End Sub
'驗(yàn)證用戶要修改的項(xiàng)目是否存在的函數(shù)
'該函數(shù)和數(shù)據(jù)庫相應(yīng)存儲(chǔ)過程在執(zhí)行更新操作時(shí)都對(duì)要修改的項(xiàng)目是否存在進(jìn)行驗(yàn)證。
'為什么呢?
'因?yàn)樵谛薷慕缑骘@示時(shí)就驗(yàn)證,而不是用戶填寫完新值并由存儲(chǔ)過程執(zhí)行更新時(shí)才驗(yàn)證可
'以避免用戶徒勞對(duì)修改界面進(jìn)行新值的填寫和提交更新請(qǐng)求
'而存儲(chǔ)過程進(jìn)行驗(yàn)證是為防止在顯示修改界面和用戶填寫完新值并單擊“修改”按鈕的
'時(shí)間范圍內(nèi),對(duì)應(yīng)項(xiàng)目被其他用戶刪除
Private Function ItemExist() As Boolean
'根據(jù)當(dāng)前操作狀態(tài)確定要驗(yàn)證何種項(xiàng)目是否存在
Dim objs As Variant
Select Case CurrentOperation
Case BrowseUser:
Set objs = New clsUsers
Case BrowseSupplier:
Set objs = New clsSuppliers
Case BrowseType:
Set objs = New clsGoodsTypes
Case BrowseBuy:
Set objs = New clsBuys
Case BrowseSale:
Set objs = New clsSales
Case BrowseGoods:
Set objs = New clsGoodses
Case BrowseSpoilage:
Set objs = New clsSpoilages
Case Else:
Exit Function
End Select
'按照ID查詢并返回對(duì)象的集合
objs.Query GetIDFromLvw
'如果集合元素?cái)?shù)目為0,說明要修改的項(xiàng)目不存在
If objs.Count = 0 Then
MsgBox "您要修改的項(xiàng)目不存在,可能已經(jīng)被別的用戶刪除!", vbInformation
'該項(xiàng)目在數(shù)據(jù)庫中已不存在,故從列表視圖中刪除
DelObjFromLvw
Exit Function
End If
'返回函數(shù)值
ItemExist = True
End Function
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -