⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 proj.cls

📁 本系统实现了软件项目开发的流程管理和控制
💻 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 = "Proj"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
'1 ProjId  Int 项目编号
'2 ProjName  Varchar 50  项目名称
'3 Status  Tinyint 项目状态(1 - 申请立项,2 - 批准立项,3 - 实施项目,4 - 中止项目,5 - 申请验收,6 - 完成项目)
'4 Client  Varchar 50  客户单位
'5 Contact Varchar 50  联系人姓名
'6 Ctel  Varchar 50  联系人电话
'7 ApplyDate Varchar 10  申请立项日期
'8 ApplyEmp  Varchar 50  申请人
'9 StartDate Varchar 10  启动日期
'10  Softmanager Varchar 50  负责项目的软件开发主管
'11  Amount0 Decimal 15,2  预算项目总金额
'12  Benefit0  Decimal 15,2  预算项目利润
'13  FinishDate0 Varchar 10  预计完成项目日期
'14  Amount0 Decimal 15,2  实际项目金额
'15  Benefit Decmial 15,2  实际项目利润
'16  FinishDate  Varchar 10  实际完成日期
'17  TesterSign  Varchar 50  测试工程师签字
'18  SQASign Varchar 50  质量控制工程师签字
'19  ApplyerSign Varchar 50  业务主管签字

Public ProjId As Long
Public ProjName As String
Public Status As Integer
Public Client As String
Public Contact As String
Public Ctel As String
Public ApplyDate As String
Public ApplyEmp As String
Public StartDate As String
Public Softmanager As String
Public Amount0 As Single
Public Benefit0 As Single
Public FinishDate0 As String
Public Amount As Single
Public Benefit As Single
Public FinishDate As String
Public TesterSign As String
Public SQASign As String
Public ApplyerSign As String

Public Sub Init()
  ProjId = 0
  ProjName = ""
  Status = 0
  Client = ""
  Contact = ""
  Ctel = ""
  ApplyDate = ""
  ApplyEmp = ""
  StartDate = ""
  Softmanager = ""
  Amount0 = 0
  Benefit0 = 0
  FinishDate0 = ""
  Amount = 0
  Benefit = 0
  FinishDate = ""
  TesterSign = ""
  SQASign = ""
  ApplyerSign = ""
End Sub

Public Function CountProj(ByVal TmpStatus As Integer, _
                     ByVal TmpUser As String, _
                     ByVal TmpUserType As Integer) As Integer
  DB_Connect
  
  Select Case TmpUserType
    Case 2
      SqlStmt = "SELECT Count(ProjId) FROM Proj WHERE Status=" _
              + Trim(TmpStatus)
    Case 3
      SqlStmt = "SELECT Count(ProjId) FROM Proj WHERE Status=" _
              + Trim(TmpStatus) + " And ApplyEmp='" + Trim(TmpUser) + "'"
    Case 4
      SqlStmt = "SELECT Count(ProjId) FROM Proj WHERE Status=" _
              + Trim(TmpStatus) + " And Softmanager='" + Trim(TmpUser) + "'"
    Case 5, 6, 7
      SqlStmt = "SELECT Count(p.ProjId) FROM Proj p, Team t WHERE p.Status=" _
          + Trim(TmpStatus) + " And p.ProjId=t.ProjId And t.Ename='" + Trim(TmpUser) + "'"
  End Select
  OdbcExt (SqlStmt)
  If SQLFetch(Hstmt) <> SQL_NO_DATA_FOUND Then
    ColVal = String(40, 0)
    Rc = SQLGetData(Hstmt, 1, 1, ColVal, Len(ColVal), pcblen)
    CountProj = Val(ColVal)
  Else
    CountProj = 0
  End If
  Rc = SQLFreeStmt(Hstmt, SQL_DROP)
  
  DB_Disconnect
End Function

'删除
Public Sub Delete(ByVal TmpProjId As Long)
  DB_Connect
  
  SqlStmt = "DELETE FROM Proj WHERE ProjId=" + Trim(Str(TmpProjId))
  OdbcExt (SqlStmt)
  Rc = SQLFreeStmt(Hstmt, SQL_DROP)

  DB_Disconnect
End Sub

Public Sub GetInfo(ByVal TmpProjId As Long)
  ProjId = TmpProjId
  If TmpProjId <= 0 Then
    Init
    Exit Sub
  End If
  DB_Connect
  
  SqlStmt = "SELECT * FROM Proj WHERE ProjId=" + Trim(Str(TmpProjId))
  OdbcExt (SqlStmt)
  If SQLFetch(Hstmt) <> SQL_NO_DATA_FOUND Then
    ColVal = String(400, 0)
    Rc = SQLGetData(Hstmt, 2, 1, ColVal, Len(ColVal), pcblen)
    ProjName = TrimStr(ColVal)
    
    ColVal = String(4, 0)
    Rc = SQLGetData(Hstmt, 3, 1, ColVal, Len(ColVal), pcblen)
    Status = Val(ColVal)
    
    ColVal = String(400, 0)
    Rc = SQLGetData(Hstmt, 4, 1, ColVal, Len(ColVal), pcblen)
    Client = TrimStr(ColVal)
    
    ColVal = String(400, 0)
    Rc = SQLGetData(Hstmt, 5, 1, ColVal, Len(ColVal), pcblen)
    Contact = TrimStr(ColVal)
    
    ColVal = String(400, 0)
    Rc = SQLGetData(Hstmt, 6, 1, ColVal, Len(ColVal), pcblen)
    Ctel = TrimStr(ColVal)
    
    ColVal = String(400, 0)
    Rc = SQLGetData(Hstmt, 7, 1, ColVal, Len(ColVal), pcblen)
    ApplyDate = TrimStr(ColVal)
  
    ColVal = String(400, 0)
    Rc = SQLGetData(Hstmt, 8, 1, ColVal, Len(ColVal), pcblen)
    ApplyEmp = TrimStr(ColVal)
    
    ColVal = String(400, 0)
    Rc = SQLGetData(Hstmt, 9, 1, ColVal, Len(ColVal), pcblen)
    StartDate = TrimStr(ColVal)
  
    ColVal = String(400, 0)
    Rc = SQLGetData(Hstmt, 10, 1, ColVal, Len(ColVal), pcblen)
    Softmanager = TrimStr(ColVal)
    
    ColVal = String(40, 0)
    Rc = SQLGetData(Hstmt, 11, 1, ColVal, Len(ColVal), pcblen)
    Amount0 = Val(ColVal)
    
    ColVal = String(40, 0)
    Rc = SQLGetData(Hstmt, 12, 1, ColVal, Len(ColVal), pcblen)
    Benefit0 = Val(ColVal)
    
    ColVal = String(40, 0)
    Rc = SQLGetData(Hstmt, 13, 1, ColVal, Len(ColVal), pcblen)
    FinishDate0 = TrimStr(ColVal)
    
    ColVal = String(40, 0)
    Rc = SQLGetData(Hstmt, 14, 1, ColVal, Len(ColVal), pcblen)
    Amount = Val(ColVal)
    
    ColVal = String(40, 0)
    Rc = SQLGetData(Hstmt, 15, 1, ColVal, Len(ColVal), pcblen)
    Benefit = Val(ColVal)
  
    ColVal = String(40, 0)
    Rc = SQLGetData(Hstmt, 16, 1, ColVal, Len(ColVal), pcblen)
    FinishDate = TrimStr(ColVal)
    
    ColVal = String(40, 0)
    Rc = SQLGetData(Hstmt, 17, 1, ColVal, Len(ColVal), pcblen)
    TesterSign = TrimStr(ColVal)
    
    ColVal = String(40, 0)
    Rc = SQLGetData(Hstmt, 18, 1, ColVal, Len(ColVal), pcblen)
    SQASign = TrimStr(ColVal)
    
    ColVal = String(40, 0)
    Rc = SQLGetData(Hstmt, 19, 1, ColVal, Len(ColVal), pcblen)
    ApplyerSign = TrimStr(ColVal)
  Else
    Init
  End If
  Rc = SQLFreeStmt(Hstmt, SQL_DROP)
  
  DB_Disconnect
End Sub

Public Sub Insert()
  DB_Connect
  
  SqlStmt = "INSERT INTO Proj (ProjName, Status, Client, Contact, Ctel," _
          + " ApplyDate, ApplyEmp, StartDate, Softmanager, Amount0, Benefit0," _
          + " FinishDate0, Amount, Benefit, FinishDate, TesterSign, SQASign, ApplyerSign)" _
          + " VALUES('" + Trim(ProjName) + "',1,'" + Trim(Client) + "','" _
          + Trim(Contact) + "','" + Trim(Ctel) + "','" + Trim(ApplyDate) _
          + "','" + Trim(ApplyEmp) + "','" + Trim(StartDate) + "','" + Trim(Softmanager) + "'," _
          + Trim(Amount0) + "," + Trim(Benefit0) + ",'" + Trim(FinishDate0) + "'," _
          + Trim(Amount) + "," + Trim(Benefit) + ",'" + Trim(FinishDate) + "','" _
          + Trim(TesterSign) + "','" + Trim(SQASign) + "','" + Trim(ApplyerSign) + "')"
  OdbcExt (SqlStmt)
  Rc = SQLFreeStmt(Hstmt, SQL_DROP)
  DB_Disconnect
End Sub

'读取当前用户的项目信息到Arr_ProjId()和Arr_ProjName数组中
Public Function Loadproj(ByVal TmpUser As String, _
                         ByVal TmpUserType As Integer) As Integer
  Dim i As Integer
  '初始化数组
  Erase Arr_ProjId
  Erase Arr_ProjName
  ReDim Arr_ProjId(0)
  ReDim Arr_ProjName(0)
  '连接数据库
  DB_Connect
  '根据用户类型的不同,设置SQL语句
  Select Case TmpUserType
    Case 2  '项目主管可以查看所有项目
      SqlStmt = "SELECT ProjId, ProjName FROM Proj WHERE Status>1"
    Case 3  '业务主管可以查看自己申请的项目
      SqlStmt = "SELECT ProjId, ProjName FROM Proj WHERE Status>1" _
              + " And ApplyEmp='" + Trim(TmpUser) + "'"
    Case 4  '软件开发主管可以查看自己负责的项目
      SqlStmt = "SELECT ProjId, ProjName FROM Proj WHERE Status>1" _
              + " And Softmanager='" + Trim(TmpUser) + "'"
    Case 5, 6, 7  '其他用户只能查看自己参与的项目
      SqlStmt = "SELECT p.ProjId, p.ProjName FROM Proj p, Team t WHERE p.Status>1" _
          + " And p.ProjId=t.ProjId And t.Ename='" + Trim(TmpUser) + "'"
  End Select
  '执行SQL语句
  OdbcExt (SqlStmt)
  '依次从结果集中读取项目编号和项目名称数据
  i = 0
  Do While SQLFetch(Hstmt) <> SQL_NO_DATA_FOUND
    ColVal = String(40, 0)
    Rc = SQLGetData(Hstmt, 1, 1, ColVal, Lench(ColVal), pcblen)
    ReDim Preserve Arr_ProjId(i + 1)
    Arr_ProjId(i) = Val(ColVal)
    
    ColVal = String(400, 0)
    Rc = SQLGetData(Hstmt, 2, 1, ColVal, Lench(ColVal), pcblen)
    ReDim Preserve Arr_ProjName(i + 1)
    Arr_ProjName(i) = TrimStr(ColVal)
    
    i = i + 1
  Loop
  Rc = SQLFreeStmt(Hstmt, SQL_DROP)
  '断开与数据库的连接
  DB_Disconnect
End Function

'更新数据
Public Sub Update(ByVal TmpProjId As Long)
  DB_Connect
    
  SqlStmt = "UPDATE Proj SET ProjName='" + Trim(ProjName) _
          + "',Client='" + Trim(Client) + "',Contact='" + Trim(Contact) _
          + "',Ctel='" + Trim(Ctel) + "',ApplyDate='" + Trim(ApplyDate) _
          + "',ApplyEmp='" + Trim(ApplyEmp) + "',Amount0=" + Trim(Amount0) _
          + ",Benefit0=" + Trim(Benefit0) + ",FinishDate0='" + Trim(FinishDate0) _
          + "' WHERE ProjId=" + Trim(Str(TmpProjId))
  OdbcExt (SqlStmt)
  Rc = SQLFreeStmt(Hstmt, SQL_DROP)
  DB_Disconnect
End Sub

'更新软件主管
Public Sub UpdateSoft(ByVal TmpProjId As Long)
  DB_Connect
    
  SqlStmt = "UPDATE Proj SET Softmanager='" + Trim(Softmanager) _
          + "' WHERE ProjId=" + Trim(Str(TmpProjId))
  OdbcExt (SqlStmt)
  Rc = SQLFreeStmt(Hstmt, SQL_DROP)
  DB_Disconnect
End Sub

'更新状态
Public Sub UpdateStatus(ByVal TmpProjId As Long)
  DB_Connect
    
  SqlStmt = "UPDATE Proj SET Status=" + Trim(Status) _
          + " WHERE ProjId=" + Trim(Str(TmpProjId))
  OdbcExt (SqlStmt)
  Rc = SQLFreeStmt(Hstmt, SQL_DROP)
  DB_Disconnect
End Sub

'更新启动日期
Public Sub UpdateStart(ByVal TmpProjId As Long)
  DB_Connect
  
  CreateDate = Format(Now, "yyyy-mm-dd")
  SqlStmt = "UPDATE Proj SET StartDate='" + Trim(StartDate) _
          + "' WHERE ProjId=" + Trim(Str(TmpProjId))
  OdbcExt (SqlStmt)
  Rc = SQLFreeStmt(Hstmt, SQL_DROP)
  DB_Disconnect
End Sub

'更新结果
Public Sub UpdateResult(ByVal TmpProjId As Long)
  DB_Connect
  
  SqlStmt = "UPDATE Proj SET Amount=" + Trim(Amount) + ", Benefit=" _
          + Trim(Benefit) + ", FinishDate='" + Trim(FinishDate) _
          + "' WHERE ProjId=" + Trim(Str(TmpProjId))
  OdbcExt (SqlStmt)
  Rc = SQLFreeStmt(Hstmt, SQL_DROP)
  DB_Disconnect
End Sub

'更新测试工程师签字
Public Sub UpdateTester(ByVal TmpProjId As Long)
  DB_Connect
  
  SqlStmt = "UPDATE Proj SET TesterSign='" + Trim(TesterSign) _
          + "' WHERE ProjId=" + Trim(Str(TmpProjId))
  OdbcExt (SqlStmt)
  Rc = SQLFreeStmt(Hstmt, SQL_DROP)
  DB_Disconnect
End Sub

'更新质量工程师签字
Public Sub UpdateSQA(ByVal TmpProjId As Long)
  DB_Connect
  
  SqlStmt = "UPDATE Proj SET SQASign='" + Trim(SQASign) _
          + "' WHERE ProjId=" + Trim(Str(TmpProjId))
  OdbcExt (SqlStmt)
  Rc = SQLFreeStmt(Hstmt, SQL_DROP)
  DB_Disconnect
End Sub

'更新业务主管签字
Public Sub UpdateApplyer(ByVal TmpProjId As Long)
  DB_Connect
  
  SqlStmt = "UPDATE Proj SET ApplyerSign='" + Trim(ApplyerSign) _
          + "' WHERE ProjId=" + Trim(Str(TmpProjId))
  OdbcExt (SqlStmt)
  Rc = SQLFreeStmt(Hstmt, SQL_DROP)
  DB_Disconnect
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -