clsOpAdmin.cls
上传用户:czxfzx
上传日期:2015-02-25
资源大小:749k
文件大小:7k
源码类别:

企业管理

开发平台:

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 = "clsOpAdmin"
  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. Private mvarAccount As String   '局部复制
  18. Public Property Let Account(ByVal vData As String)
  19. '向属性指派值时使用,位于赋值语句的左边。
  20. 'Syntax: X.IsDefault = 5
  21.     mvarAccount = vData
  22. End Property
  23. Public Property Get Account() As String
  24. '检索属性值时使用,位于赋值语句的右边。
  25. 'Syntax: Debug.Print X.IsDefault
  26.     Account = mvarAccount
  27. End Property
  28. '==============================================================
  29. '
  30. ' 处理增、删、改
  31. '
  32. '===============================================================
  33. Public Sub Add(ctl As Object)
  34.   Dim obj As clsAdmin
  35.   Dim Result As gxcAddNew
  36.   
  37.   '显示添加客户对话框并获取数据
  38.   If Not frmUser.ShowDlg(obj, vtadd) Then Exit Sub
  39.   '更新数据库
  40.   Result = obj.AddNew
  41.   If Result = AddNewOK Then
  42.     AddToLvw obj, ctl, False
  43.   ElseIf Result = DuplicateName_AddNew Then
  44.     MsgBox "名称重复"
  45.   Else
  46.     MsgBox "错误"
  47.   End If
  48.   
  49. End Sub
  50. Public Sub Modify(ctl As Object)
  51.   Dim obj As clsAdmin
  52.   Dim strName As String
  53.   
  54.   '获取树上选中的客户类型,如果没有选中的对象则退出函数
  55.   If GetObjFromControl(ctl, obj) = False Then
  56.     MsgBox "请选择用户类型"
  57.     Exit Sub
  58.   End If
  59.   
  60.   '显示添加客户对话框并获取数据
  61.   If Not frmUser.ShowDlg(obj, vtModify) Then Exit Sub
  62.   '更新数据库
  63.   Dim Result As gxcUpdate
  64.   Result = obj.Update
  65.   If Result = UpdateOK Then
  66.     '将客户类型加入列表框(更新)
  67.     AddToLvw obj, ctl, True
  68.   ElseIf Result = DuplicateName_Update Then
  69.     MsgBox "名称重复"
  70.   Else
  71.     MsgBox "错误"
  72.   End If
  73.   
  74. End Sub
  75. Public Sub Delete(ctl As Object)
  76.   Dim obj As clsAdmin
  77.   Dim Result As gxcDelete
  78.   
  79.   '获取树上选中的客户类型,如果没有选中的对象则退出函数
  80.   If GetObjFromControl(ctl, obj) = False Then
  81.     MsgBox "请选择供应商类型"
  82.     Exit Sub
  83.   End If
  84.   
  85.   '无法删除系统默认帐号
  86.   If obj.IsDefault = True Then
  87.     MsgBox "无法删除系统默认帐号", vbExclamation + vbOKOnly
  88.     Exit Sub
  89.   End If
  90.     
  91.   
  92.   If MsgBox("真的要删除吗?", vbQuestion + vbYesNo + _
  93.             vbDefaultButton2) = vbNo Then Exit Sub
  94.   
  95.   '从数据库中删除
  96.   Result = obj.Delete
  97.   If Result = DeleteFail Then
  98.     MsgBox "删除失败!"
  99.   ElseIf Result = DeleteOK Then
  100.     '来到这,说明删除成功,从树形图中删除节点
  101.     'ctl.Nodes.Remove ctl.SelectedItem.index
  102.     ctl.ListItems.Remove ctl.SelectedItem.index
  103.   End If
  104. End Sub
  105. '==============================================================
  106. '
  107. ' 处理ListView控件:AddToLvw,InitListview, ObjsToListView,
  108. '                   FillListView, GetObjFromControl
  109. '
  110. '===============================================================
  111. '将单个客户加入列表,或在列表中更新
  112. '特意将该函数单独做出来,而没有将本函数中的代码完全在MerchsToListview函数中实现
  113. 'Why?
  114. '因为在设计该功能时,你还应考虑到在以后的编程过程中,很可能要用到
  115. '将某个单独的“商品”对象加入列表框(比如新增加了一个客户)。
  116. Public Sub AddToLvw(ByVal obj As clsAdmin, _
  117.                           ByRef lvw As Object, _
  118.                           ByVal IsOverWrite As Boolean)
  119.   '第三个参数如果是TRUE,则说明是更新当前已存在的某个列表项,否则是新加一个列表项
  120.   Dim Itm As ListItem
  121.   Dim sIcon As String
  122.   Dim bIcon As String
  123.   
  124.   '图标关键字
  125.   sIcon = "sboy"
  126.   bIcon = "bboy"
  127.   
  128.   '如果是更新(即覆盖),则使用当前选种的元素
  129.   If IsOverWrite Then
  130.     Set Itm = lvw.SelectedItem
  131.     If Itm Is Nothing Then Exit Sub
  132.   Else
  133.     Set Itm = lvw.ListItems.Add(, "A" & obj.Account, , bIcon, sIcon)
  134.   End If
  135.   With obj  '这里要与InitMerchListview相对应
  136.     Itm.SmallIcon = sIcon
  137.     Itm.Icon = bIcon
  138.     Itm.Text = .Account
  139.     Itm.SubItems(1) = "*******"
  140.     Itm.SubItems(2) = IIf(.IsDefault, "默认用户", "新增用户")
  141.   End With
  142.   Set Itm = Nothing
  143. End Sub
  144. '按照“商品”设置ListView的显示样式
  145. Public Sub InitListview(ByRef lvw As Object)
  146.   With lvw
  147.     .ColumnHeaders.Clear
  148.     '加入四个列首
  149. '    .ColumnHeaders.Add , , "编号", 1200
  150.     .ColumnHeaders.Add , , "用户名", 1200
  151.     .ColumnHeaders.Add , , "密码", 1500
  152.     .ColumnHeaders.Add , , "级别", 1000
  153.   End With
  154. End Sub
  155. '将客户集合显示到ListView中
  156. Public Sub ObjsToListView(ByVal objs As clsAdmins, ByRef lvw As Object)
  157.   '传入参数为客户的集合类与列表框
  158.   Dim i As Long
  159.   
  160.   '如果列表还未初始化,则初始化之(你可以采用其它方法判断是否初始化,这里是个笨办法)
  161.   If lvw.ColumnHeaders.Count = 0 Then InitListview lvw
  162.   lvw.ListItems.Clear '清除当前的列表内容
  163.   
  164.   For i = 1 To objs.Count
  165.     '将每个“商品”都加入到该列表中,调用了单独的函数,没有全部做到这
  166.     '个函数中,为什么呢?参看AddMerchToLvw函数
  167.     AddToLvw objs.Item(i), lvw, False
  168.   Next i
  169. End Sub
  170. ' 显示全部客户到列表控件
  171. Public Sub FillListView(ByRef lvw As Object)
  172.   Dim objs As New clsAdmins
  173.   Dim rstObjs As clsAdmins
  174.   
  175.   'Find的参数取默认值,此时查找全部
  176.   Set rstObjs = objs.Find
  177.   
  178.   '检查是否找到数据
  179.   If rstObjs Is Nothing Then
  180.     Exit Sub
  181.   End If
  182.   
  183.   '将查找到的客户集合添加到列表控件中
  184.   ObjsToListView rstObjs, lvw
  185.   
  186.   Set objs = Nothing
  187.   Set rstObjs = Nothing
  188.   
  189. End Sub
  190. '得到某个节点或列表项所表示的对象的实际ID,如“A11”,则得到11,“B2”,则得到2
  191. Private Function GetAccount(strKey As String) As String
  192.   GetAccount = Right(strKey, Len(strKey) - 1)
  193. End Function
  194. '从列表或树型图中得到一个客户对象
  195. Public Function GetObjFromControl(ByVal lvw As Object, _
  196.                                     ByRef obj As clsAdmin) As Boolean
  197.   '如果列表中没有被选择的项,则直接退出
  198.   If lvw.SelectedItem Is Nothing Then
  199.     GetObjFromControl = False
  200.     Exit Function
  201.   End If
  202.   Dim objs As New clsAdmins
  203.   Dim Account As String
  204.   '去除Listview中列表项的KEY属性前的字母“A”,即为该客户的ID值
  205.   Account = GetAccount(lvw.SelectedItem.Key)
  206.   On Error Resume Next '为了防止未查找到,因此加入了错误判断语句
  207.   Set obj = objs.Find(Account).Item(1)
  208.   GetObjFromControl = (Err.Number = 0)
  209. End Function
  210. '==============================================================
  211. '
  212. ' 处理Combo控件:FillCombo,ObjsToCombo
  213. '
  214. '===============================================================
  215. Private Sub ObjsToCombo(ByVal objs As clsAdmins, ByRef cbo As ComboBox)
  216.   '传入参数为客户的集合类与列表框
  217.   Dim i As Long
  218.   
  219.   cbo.Clear '清除当前的列表内容
  220.   
  221.   For i = 1 To objs.Count
  222.     '将每个“商品”都加入到该列表中,调用了单独的函数,没有全部做到这
  223.     '个函数中,为什么呢?参看AddClientToLvw函数
  224.     Call cbo.AddItem(objs.Item(i).Account, i - 1)
  225.     cbo.ItemData(i - 1) = objs.Item(i).Account
  226.   Next i
  227.   
  228. End Sub
  229. Public Sub FillCombo(ByRef cbo As Object)
  230.   Dim objs As New clsAdmins
  231.   Dim rstObjs As clsAdmins
  232.   
  233.   Set rstObjs = objs.Find
  234.   ObjsToCombo rstObjs, cbo
  235.   
  236.   Set objs = Nothing
  237.   Set rstObjs = Nothing
  238.   
  239. End Sub