clsOpBuy.cls
Upload User: czxfzx
Upload Date: 2015-02-25
Package Size: 749k
Code Size: 8k
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 = "clsOpBuy"
  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. Public Sub Add(ctl As Object, strUser As String)
  18.   Dim obj As clsBuy
  19.   Dim Result As gxcAddNew
  20.   
  21.   '显示添加对话框并获取数据
  22.   If Not frmBuy.ShowDlg(obj, vtadd, strUser) Then Exit Sub
  23.   '更新数据库
  24.   Result = obj.AddNew
  25.   If Result = AddNewOK Then
  26.     AddToLvw obj, ctl, False
  27.   ElseIf Result = DuplicateName_AddNew Then
  28.     MsgBox "名称重复"
  29.   Else
  30.     MsgBox "错误"
  31.   End If
  32.   
  33. End Sub
  34. Public Sub Modify(ctl As Object, strUser As String)
  35.   Dim obj As clsBuy
  36.   Dim strName As String
  37.   
  38.   '获取选中元素,如果没有选中的对象则退出函数
  39.   If GetObjFromControl(ctl, obj) = False Then
  40.     MsgBox "请选择商品类型"
  41.     Exit Sub
  42.   End If
  43.   
  44.   '显示添加对话框并获取数据
  45.   If Not frmBuy.ShowDlg(obj, vtModify, strUser) Then Exit Sub
  46.   '更新数据库
  47.   Dim Result As gxcUpdate
  48.   Result = obj.Update
  49.   If Result = UpdateOK Then
  50.     '将进货信息类型加入列表框
  51.     AddToLvw obj, ctl, True
  52.   ElseIf Result = DuplicateName_Update Then
  53.     MsgBox "名称重复"
  54.   Else
  55.     MsgBox "错误"
  56.   End If
  57.   
  58. End Sub
  59. Public Sub Delete(ctl As Object)
  60.   Dim obj As clsBuy
  61.   Dim Result As gxcDelete
  62.   
  63.   '获取选中的XXX,如果没有选中的对象则退出函数
  64.   If GetObjFromControl(ctl, obj) = False Then
  65.     MsgBox "请选择进货记录"
  66.     Exit Sub
  67.   End If
  68.   
  69.   If MsgBox("真的要删除吗?", vbQuestion + vbYesNo + _
  70.             vbDefaultButton2) = vbNo Then Exit Sub
  71.   
  72.   '从数据库中删除
  73.   Result = obj.Delete
  74.   If Result = DeleteFail Then
  75.     MsgBox "删除失败!"
  76.   ElseIf Result = DeleteOK Then
  77.     '来到这,说明删除成功,
  78.     ctl.ListItems.Remove ctl.SelectedItem.index
  79.   End If
  80. End Sub
  81. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  82. '将单个客户加入列表,或在列表中更新
  83. '特意将该函数单独做出来,而没有将本函数中的代码完全在MerchsToListview函数中实现
  84. 'Why?
  85. '因为在设计该功能时,你还应考虑到在以后的编程过程中,很可能要用到
  86. '将某个单独的“商品”对象加入列表框(比如新增加了一个客户)。
  87. Public Sub AddToLvw(ByVal obj As clsBuy, _
  88.                           ByRef lvw As Object, _
  89.                           ByVal IsOverWrite As Boolean)
  90.   '第三个参数如果是TRUE,则说明是更新当前已存在的某个列表项,否则是新加一个列表项
  91.   Dim Itm As ListItem
  92.   Dim sIcon As String
  93.   Dim bIcon As String
  94.   
  95.   '图标关键字
  96.   sIcon = "sboy"
  97.   bIcon = "bboy"
  98.   
  99.   '如果是更新(即覆盖),则使用当前选种的元素
  100.   If IsOverWrite Then
  101.     Set Itm = lvw.SelectedItem
  102.     If Itm Is Nothing Then Exit Sub
  103.   Else
  104.     Set Itm = lvw.ListItems.Add(, "A" & obj.ID, , bIcon, sIcon)
  105.   End If
  106.   With obj  '这里要与InitListview相对应
  107.     Itm.SmallIcon = sIcon
  108.     Itm.Icon = bIcon
  109.     Itm.Text = .MerchName
  110.     Itm.SubItems(1) = .ProviderName
  111.     Itm.SubItems(2) = .StockDate
  112.     Itm.SubItems(3) = .Count
  113.     Itm.SubItems(4) = "件/个"
  114.     Itm.SubItems(5) = .StockPrice
  115.     Itm.SubItems(6) = .Deliver
  116.     Itm.SubItems(7) = .Consignee
  117.     Itm.SubItems(8) = .Remark
  118.   End With
  119.   Set Itm = Nothing
  120. End Sub
  121. '设置ListView的显示样式
  122. Public Sub InitListview(ByRef lvw As Object)
  123.   With lvw
  124.     .ColumnHeaders.Clear
  125.     '加入四个列首
  126.     .ColumnHeaders.Add , , "商品名称", 1500
  127.     .ColumnHeaders.Add , , "供货商", 1500
  128.     .ColumnHeaders.Add , , "进化时间", 1200
  129.     .ColumnHeaders.Add , , "进货数量", 1000
  130.     .ColumnHeaders.Add , , "单位", 800
  131.     .ColumnHeaders.Add , , "单价(元)", 800
  132.     .ColumnHeaders.Add , , "送货人", 1000
  133.     .ColumnHeaders.Add , , "经手人", 1000
  134.     .ColumnHeaders.Add , , "备注", 4000
  135.   End With
  136. End Sub
  137. '将进货信息集合显示到ListView中
  138. Public Sub ObjsToListView(ByVal objs As clsBuys, ByRef lvw As Object)
  139.   '传入参数为进货信息的集合类与列表框
  140.   Dim i As Long
  141.   
  142.   '如果列表还未初始化,则初始化之(你可以采用其它方法判断是否初始化,这里是个笨办法)
  143.   If lvw.ColumnHeaders.Count = 0 Then InitListview lvw
  144.   lvw.ListItems.Clear '清除当前的列表内容
  145.   
  146.   For i = 1 To objs.Count
  147.     AddToLvw objs.Item(i), lvw, False
  148.   Next i
  149. End Sub
  150. ' 显示全部进货信息到列表控件
  151. Public Sub FillListView(ByRef lvw As Object, Optional lngTypeId As Long = 0)
  152.   Dim objs As New clsBuys
  153.   Dim rstObjs As clsBuys
  154.   
  155.   'Find的参数取默认值,此时查找全部
  156.   Set rstObjs = objs.Find(, lngTypeId)
  157.   
  158.   '检查是否找到数据
  159.   If rstObjs Is Nothing Then
  160.     Exit Sub
  161.   End If
  162.   
  163.   '将查找到的进货信息集合添加到列表控件中
  164.   ObjsToListView rstObjs, lvw
  165.   
  166.   Set objs = Nothing
  167.   Set rstObjs = Nothing
  168.   
  169. End Sub
  170. Public Sub FindStorage(ByRef lvw As Object, _
  171.                       Optional IsDesc As Boolean = True, _
  172.                       Optional nCount As Integer = 10)
  173.   Dim objs As New clsBuys
  174.   Dim rstObjs As clsBuys
  175.   
  176.   'Find的参数取默认值,此时查找全部
  177.   Set rstObjs = objs.FindStorage(IsDesc, nCount)
  178.   
  179.   '检查是否找到数据
  180.   If rstObjs Is Nothing Then
  181.     Exit Sub
  182.   End If
  183.   
  184.   '将查找到的客户集合添加到列表控件中
  185.   AnaObjsToListView rstObjs, lvw
  186.   
  187.   Set objs = Nothing
  188.   Set rstObjs = Nothing
  189.   
  190. End Sub
  191. '从列表或树型图中得到一个对象
  192. Public Function GetObjFromControl(ByVal lvw As Object, _
  193.                                     ByRef obj As clsBuy) As Boolean
  194.   '如果列表中没有被选择的项,则直接退出
  195.   If lvw.SelectedItem Is Nothing Then
  196.     GetObjFromControl = False
  197.     Exit Function
  198.   End If
  199.   Dim objs As New clsBuys
  200.   Dim ID As Long
  201.   '去除Listview中列表项的KEY属性前的字母“A”,即为该客户的ID值
  202.   ID = GetID(lvw.SelectedItem.Key)
  203. '  On Error Resume Next '为了防止未查找到,因此加入了错误判断语句
  204.   Set obj = objs.Find(ID).Item(1)
  205.   GetObjFromControl = (Err.Number = 0)
  206. End Function
  207. '=====================================================================
  208. '
  209. ' 以下以Ana开头的方法是供分析使用,
  210. ' 因为所显示的内容与列都不相同,所以另外做一套函数,
  211. ' 其实与clsOpBuy关系不很大
  212. '
  213. '=====================================================================
  214. Public Sub AnaAddToLvw(ByVal obj As clsBuy, _
  215.                           ByRef lvw As Object, _
  216.                           ByVal IsOverWrite As Boolean)
  217.   '第三个参数如果是TRUE,则说明是更新当前已存在的某个列表项,否则是新加一个列表项
  218.   Dim Itm As ListItem
  219.   Dim sIcon As String
  220.   Dim bIcon As String
  221.   
  222.   '图标关键字
  223.   sIcon = "sboy"
  224.   bIcon = "bboy"
  225.   
  226.   '如果是更新(即覆盖),则使用当前选种的元素
  227.   If IsOverWrite Then
  228.     Set Itm = lvw.SelectedItem
  229.     If Itm Is Nothing Then Exit Sub
  230.   Else
  231.     Set Itm = lvw.ListItems.Add(, "A" & obj.ID, , bIcon, sIcon)
  232.   End If
  233.   With obj  '这里要与InitMerchListview相对应
  234.     Itm.SmallIcon = sIcon
  235.     Itm.Icon = bIcon
  236.     Itm.Text = .TypeName
  237.     Itm.SubItems(1) = .MerchName
  238.     Itm.SubItems(2) = .StockTimes
  239.     Itm.SubItems(3) = .TotalPrice
  240.     Itm.SubItems(4) = "元"
  241.  End With
  242.   Set Itm = Nothing
  243. End Sub
  244. '按照“商品”设置ListView的显示样式
  245. Public Sub AnaInitListview(ByRef lvw As Object)
  246.   With lvw
  247.     .ColumnHeaders.Clear
  248.     '加入列首
  249.     .ColumnHeaders.Add , , "商品类型", 1500
  250.     .ColumnHeaders.Add , , "商品名称", 1500
  251.     .ColumnHeaders.Add , , "进货登记次数", 1500
  252.     .ColumnHeaders.Add , , "进货总价", 1500
  253.     .ColumnHeaders.Add , , "单位", 800
  254.   End With
  255.   
  256. End Sub
  257. '将进货信息集合显示到ListView中
  258. Public Sub AnaObjsToListView(ByVal objs As clsBuys, ByRef lvw As Object)
  259.   '传入参数为进货信息的集合类与列表框
  260.   Dim i As Long
  261.   
  262.   '如果列表还未初始化,则初始化之(你可以采用其它方法判断是否初始化,这里是个笨办法)
  263.   AnaInitListview lvw
  264.   lvw.ListItems.Clear '清除当前的列表内容
  265.   
  266.   For i = 1 To objs.Count
  267.     '将每个“商品”都加入到该列表中,调用了单独的函数,没有全部做到这
  268.     '个函数中,为什么呢?参看AddMerchToLvw函数
  269.     AnaAddToLvw objs.Item(i), lvw, False
  270.   Next i
  271. End Sub