📄 departments.cls
字号:
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "Departments"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
'1 DepId 数字,长整型 部门编号,主键
'2 DepName 文本,长度为50 部门名称,必填字段(是),允许空字符串(否)
'3 Describes 文本,长度为255 部门职能描述,必填字段(否),允许空字符串(是)
'4 UpperId 数字,长整型 上级部门编号,,必填字段(是)
Public DepId As Long
Public DepName As String
Public Describes As String
Public UpperId As Long
Public Sub Init()
DepId = -1
DepName = ""
Describes = -1
UpperId = -1
End Sub
'删除Departments
Public Sub Delete(ByVal TmpId As Long)
SqlStmt = "DELETE FROM Departments WHERE DepId=" + Trim(Str(TmpId))
SQLExt (SqlStmt)
End Sub
'读取当前部门记录
Public Sub GetInfo(ByVal TmpId As Long)
Dim rs As New ADODB.Recordset '定义结果集对象
DepId = TmpId
'使用SELECT语句读取指定部门数据
SqlStmt = "SELECT * FROM Departments WHERE DepId=" + Trim(Str(TmpId))
Set rs = QueryExt(SqlStmt)
If Not rs.EOF Then
DepName = Trim(rs.Fields(1)) '部门名称
If IsNull(rs.Fields(2)) Then
Describes = ""
Else
Describes = Trim(rs.Fields(2)) '部门描述
End If
UpperId = rs.Fields(3) '上级编号
Else
Init
End If
End Sub
'根据部门编号,读取部门名称
Public Function GetName(ByVal TmpId As Long) As String
Dim rs As New ADODB.Recordset '定义结果集对象
'使用SELECT语句读取指定部门名称
SqlStmt = "SELECT DepName FROM Departments WHERE DepId=" _
+ Trim(Str(TmpId))
Set rs = QueryExt(SqlStmt)
If Not rs.EOF Then
GetName = Trim(rs.Fields(0))
Else
GetName = ""
End If
End Function
'返回新记录的编号,当前最大编号加1
Public Function GetNewId() As Long
Dim TmpId As Long
Dim rs As New ADODB.Recordset
'使用SELECT语句,读取最大的编号
SqlStmt = "SELECT Max(DepId) FROM Departments"
Set rs = QueryExt(SqlStmt)
If rs.EOF Then
GetNewId = 1
Else
GetNewId = rs.Fields(0) + 1
End If
End Function
'判断指定的部门中是否存在员工记录
Public Function HaveEmp(ByVal TmpDepid As Long) As Boolean
Dim rs As New ADODB.Recordset
'使用SELECT语句在Employees表中读取DepId字段等于TmpDepid的记录
SqlStmt = "SELECT * FROM Employees WHERE DepId=" + Trim(Str(TmpDepid))
Set rs = QueryExt(SqlStmt)
If Not rs.EOF Then
HaveEmp = True
Else
HaveEmp = False
End If
End Function
'判断一个部门是否包含下级部门,在删除部门记录时使用
Public Function HaveSon(ByVal TmpUpperId As Long) As Boolean
Dim rs As New ADODB.Recordset
SqlStmt = "SELECT DepId FROM Departments WHERE UpperId=" _
+ Trim(Str(TmpUpperId))
Set rs = QueryExt(SqlStmt)
If Not rs.EOF Then
HaveSon = True
Else
HaveSon = False
End If
End Function
'判断部门名称是否存在
Public Function In_DB(ByVal DepName As String, _
ByVal DepUpper As Long) As Boolean
Dim rs As New ADODB.Recordset
SqlStmt = "SELECT DepId FROM Departments WHERE DepName='" + Trim(DepName) _
+ "' and UpperId=" + Trim(Str(DepUpper))
Set rs = QueryExt(SqlStmt)
If Not rs.EOF Then
In_DB = True
Else
In_DB = False
End If
End Function
Public Function Insert() As Long
Dim DepId As Long
'生成新的编号
DepId = GetNewId
SqlStmt = "INSERT INTO Departments VALUES(" + Trim(Str(DepId)) + ",'" _
+ Trim(DepName) + "','" + Trim(Describes) _
+ "'," + Trim(Str(UpperId)) + ")"
SQLExt (SqlStmt)
Insert = DepId '返回记录编号
End Function
'读取指定部门编号的所有下级部门信息
Public Sub Load_Departments_ByUpper(UpperId As Long)
Dim i As Integer
Dim rs As New ADODB.Recordset
'初始化部门数组
Erase Arr_DepName
Erase Arr_DepDescribe
Erase Arr_DepId
ReDim Arr_DepName(0)
ReDim Arr_DepDescribe(0)
ReDim Arr_DepId(0)
'设置SELECT语句
SqlStmt = "SELECT DepId,DepName,Describes FROM Departments WHERE UpperId=" _
+ Trim(Str(UpperId)) + " ORDER BY DepId"
Set rs = QueryExt(SqlStmt)
i = 0
Do Until rs.EOF
'读取部门编号
ReDim Preserve Arr_DepId(i + 1)
Arr_DepId(i) = rs.Fields(0)
'读取部门名称
ReDim Preserve Arr_DepName(i + 1)
Arr_DepName(i) = Trim(rs.Fields(1))
'读取部门描述
ReDim Preserve Arr_DepDescribe(i + 1)
If IsNull(rs.Fields(2)) Then
Arr_DepDescribe(i) = ""
Else
Arr_DepDescribe(i) = Trim(rs.Fields(2))
End If
rs.MoveNext
i = i + 1
Loop
End Sub
'更新数据
Public Sub Update(ByVal TmpId As Long)
'设置UPDATE语句
SqlStmt = "UPDATE Departments SET DepName='" + Trim(DepName) _
+ "',Describes='" + Trim(Describes) _
+ "' WHERE DepId=" + Trim(Str(TmpId))
SQLExt (SqlStmt)
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -