clsOpMerch.cls
Upload User: czxfzx
Upload Date: 2015-02-25
Package Size: 749k
Code Size: 7k
Development Platform:

Visual Basic

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "clsOpMerch"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
  15. Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
  16. Option Explicit
  17. '==============================================================
  18. '
  19. ' 处理增、删、改
  20. '
  21. '===============================================================
  22. '管理增加操作
  23. Public Sub Add(ctl As Object, nTypeId As Long)
  24.   Dim obj As clsMerch
  25.   Dim Result As gxcAddNew
  26.   
  27.   If nTypeId = 0 Then
  28.     MsgBox "请选择商品类型"
  29.     Exit Sub
  30.   End If
  31.   '显示添商品对话框并获取数据
  32.   If Not frmMerch.ShowDlg(obj, vtadd, nTypeId) Then Exit Sub
  33.   '更新数据库
  34.   Result = obj.AddNew
  35.   If Result = AddNewOK Then
  36.     AddToLvw obj, ctl, False
  37.   ElseIf Result = DuplicateName_AddNew Then
  38.     MsgBox "名称重复"
  39.   Else
  40.     MsgBox "错误"
  41.   End If
  42. End Sub
  43. '管理修改操作
  44. Public Sub Modify(ctl As Object)
  45.   Dim obj As clsMerch
  46.   Dim strName As String
  47.   
  48.   '获取列表框选中的商品,如果没有选中的对象则退出函数
  49.   If GetObjFromControl(ctl, obj) = False Then
  50.     MsgBox "请选择商品类型"
  51.     Exit Sub
  52.   End If
  53.   
  54.   '显示添加客户对话框并获取数据
  55.   If Not frmMerch.ShowDlg(obj, vtModify) Then Exit Sub
  56.   '更新数据库
  57.   Dim Result As gxcUpdate
  58.   Result = obj.Update
  59.   If Result = UpdateOK Then
  60.     '将商品在更表框中更新
  61.     AddToLvw obj, ctl, True
  62.   ElseIf Result = DuplicateName_Update Then
  63.     MsgBox "名称重复"
  64.   Else
  65.     MsgBox "错误"
  66.   End If
  67.   
  68. End Sub
  69. '管理删除操作
  70. Public Sub Delete(ctl As Object)
  71.   Dim obj As clsMerch
  72.   Dim Result As gxcDelete
  73.   
  74.   '获取列表框中选中的商品,如果没有选中的对象则退出函数
  75.   If GetObjFromControl(ctl, obj) = False Then
  76.     MsgBox "请选择商品类型"
  77.     Exit Sub
  78.   End If
  79.   
  80.   If MsgBox("真的要删除吗?", vbQuestion + vbYesNo + _
  81.             vbDefaultButton2) = vbNo Then Exit Sub
  82.   
  83.   '从数据库中删除
  84.   Result = obj.Delete
  85.   If Result = DeleteFail Then
  86.     MsgBox "删除失败!"
  87.   ElseIf Result = DeleteOK Then
  88.     '来到这,说明删除成功,从树形图中删除节点
  89.     ctl.ListItems.Remove ctl.SelectedItem.index
  90.   End If
  91. End Sub
  92. '==============================================================
  93. '
  94. ' 处理ListView控件:AddToLvw,InitListview, ObjsToListView,
  95. '                   FillListView, GetObjFromControl
  96. '
  97. '===============================================================
  98. '将单个对象加入列表,或在列表中更新
  99. Public Sub AddToLvw(ByVal obj As clsMerch, _
  100.                           ByRef lvw As Object, _
  101.                           ByVal IsOverWrite As Boolean)
  102.   '第三个参数如果是TRUE,则说明是更新当前已存在的某个列表项,否则是新加一个列表项
  103.   Dim Itm As ListItem
  104.   Dim sIcon As String
  105.   Dim bIcon As String
  106.   
  107.   '图标关键字
  108.   sIcon = "sboy"
  109.   bIcon = "bboy"
  110.   
  111.   '如果是更新(即覆盖),则使用当前选种的元素
  112.   If IsOverWrite Then
  113.     Set Itm = lvw.SelectedItem
  114.     If Itm Is Nothing Then Exit Sub
  115.   Else
  116.     Set Itm = lvw.ListItems.Add(, "A" & obj.ID, , bIcon, sIcon)
  117.   End If
  118.   With obj  '这里要与InitListview相对应
  119.     Itm.SmallIcon = sIcon
  120.     Itm.Icon = bIcon
  121.     Itm.Text = .MerchName
  122.     Itm.SubItems(1) = .TypeName
  123.     Itm.SubItems(2) = .Storage
  124.     Itm.SubItems(3) = "件/个"
  125.     Itm.SubItems(4) = .Introduce
  126.     Itm.SubItems(5) = .Remark
  127.   End With
  128.   Set Itm = Nothing
  129. End Sub
  130. '设置ListView的显示样式
  131. Public Sub InitListview(ByRef lvw As Object)
  132.   With lvw
  133.     .ColumnHeaders.Clear
  134.     '加入列首
  135.     .ColumnHeaders.Add , , "名称", 1200
  136.     .ColumnHeaders.Add , , "类别", 1500
  137.     .ColumnHeaders.Add , , "库存量", 1500
  138.     .ColumnHeaders.Add , , "单位", 1300
  139.     .ColumnHeaders.Add , , "介绍", 1500
  140.     .ColumnHeaders.Add , , "备注", 1000
  141.   End With
  142. End Sub
  143. '将对象集合显示到ListView中
  144. Public Sub ObjsToListView(ByVal objs As clsMerchs, ByRef lvw As Object)
  145.   '传入参数为商品的集合类与列表框
  146.   Dim i As Long
  147.   
  148.   '如果列表还未初始化,则初始化之(你可以采用其它方法判断是否初始化,这里是个笨办法)
  149.   If lvw.ColumnHeaders.Count < 6 Then InitListview lvw
  150.   lvw.ListItems.Clear '清除当前的列表内容
  151.   
  152.   For i = 1 To objs.Count
  153.     '将每个“商品”都加入到该列表中,调用了单独的函数,没有全部做到这
  154.     '个函数中,为什么呢?参看AddToLvw函数
  155.     AddToLvw objs.Item(i), lvw, False
  156.   Next i
  157. End Sub
  158. '显示指定类型对象到列表控件
  159. Public Sub FillListView(ByRef lvw As Object, Optional lngTypeId As Long = 0)
  160.   Dim objs As New clsMerchs
  161.   Dim rstObjs As clsMerchs
  162.   
  163.   'Find的参数取默认值,此时查找全部
  164.   Set rstObjs = objs.Find(, lngTypeId)
  165.   
  166.   '检查是否找到数据
  167.   If rstObjs Is Nothing Then
  168.     Exit Sub
  169.   End If
  170.   
  171.   '将查找到的商品集合添加到列表控件中
  172.   ObjsToListView rstObjs, lvw
  173.   
  174.   Set objs = Nothing
  175.   Set rstObjs = Nothing
  176.   
  177. End Sub
  178. '库存量排行
  179. Public Sub FindStorage(ByRef lvw As Object, _
  180.                       Optional IsDesc As Boolean = True, _
  181.                       Optional nCount As Integer = 10)
  182.   Dim objs As New clsMerchs
  183.   Dim rstObjs As clsMerchs
  184.   
  185.   'Find的参数取默认值,此时查找全部
  186.   Set rstObjs = objs.FindStorage(IsDesc, nCount)
  187.   
  188.   '检查是否找到数据
  189.   If rstObjs Is Nothing Then
  190.     Exit Sub
  191.   End If
  192.   
  193.   '将查找到的客户集合添加到列表控件中
  194.   ObjsToListView rstObjs, lvw
  195.   
  196.   Set objs = Nothing
  197.   Set rstObjs = Nothing
  198.                       
  199. End Sub
  200. '从列表或树型图中得到一个对象
  201. Public Function GetObjFromControl(ByVal lvw As Object, _
  202.                                     ByRef obj As clsMerch) As Boolean
  203.   '如果列表中没有被选择的项,则直接退出
  204.   If lvw.SelectedItem Is Nothing Then
  205.     GetObjFromControl = False
  206.     Exit Function
  207.   End If
  208.   Dim objs As New clsMerchs
  209.   Dim ID As Long
  210.   '去除Listview中列表项的KEY属性前的字母“A”,即为该商品的ID值
  211.   ID = GetID(lvw.SelectedItem.Key)
  212.   On Error Resume Next '为了防止未查找到,因此加入了错误判断语句
  213.   Set obj = objs.Find(ID).Item(1)
  214.   GetObjFromControl = (Err.Number = 0)
  215. End Function
  216. '==============================================================
  217. '
  218. ' 处理Combo控件:FillCombo,ObjsToCombo
  219. '
  220. '===============================================================
  221. '传入参数为对象的集合类与组合框
  222. Private Sub ObjsToCombo(ByVal objs As clsMerchs, ByRef cbo As ComboBox)
  223.   Dim i As Long
  224.   
  225.   cbo.Clear '清除当前的列表内容
  226.   
  227.   For i = 1 To objs.Count
  228.     Call cbo.AddItem(objs.Item(i).MerchName, i - 1)
  229.     cbo.ItemData(i - 1) = objs.Item(i).ID
  230.   Next i
  231.   
  232. End Sub
  233. '将数据库中全部对象加入到组合框中
  234. Public Sub FillCombo(ByRef cbo As Object)
  235.   Dim objs As New clsMerchs
  236.   Dim rstObjs As clsMerchs
  237.   
  238.   Set rstObjs = objs.Find
  239.   ObjsToCombo rstObjs, cbo
  240.   
  241.   Set objs = Nothing
  242.   Set rstObjs = Nothing
  243.   
  244. End Sub