classfunction.cls

来自「一个关于电脑管理汽车的软件」· CLS 代码 · 共 435 行

CLS
435
字号
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "ClassFunction"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit
Public VarPrice As Long
Public CurrentKeyIndex As Long
Private FinishedBS() As Boolean
Public CurrentFinishIndex As Long
Public Sub CreateAllUserToMysql(ByVal UserName As String, ByVal Password As String)
 Dim TempSQL As String
 Dim TempCnn As MYSQL_CONNECTION
 
 Set TempCnn = New MYSQL_CONNECTION
 With gCnn
  TempCnn.OpenConnection .HostName, .UserName, .Password, "mysql"
 End With
 TempSQL = "GRANT ALL PRIVILEGES ON *.* TO '" & Trim(UserName) & "'@'%' IDENTIFIED By '" & Trim(Password) & "' WITH GRANT OPTION"
 TempCnn.Execute TempSQL
 TempCnn.CloseConnection
 Set TempCnn = Nothing
End Sub

Public Sub ModifyUserToMysql(ByVal OrgUserName As String, ByVal NewUserName As String, ByVal Password As String)
 Dim TempSQL As String
 Dim TempCnn As MYSQL_CONNECTION
 Dim TempRS As New MYSQL_RS
 
 Set TempCnn = New MYSQL_CONNECTION
 With frmConnect
  TempCnn.OpenConnection .txtHost, .Combo1, .txtPassword, "mysql"
 End With
 TempSQL = "Select user, password from user Where user =" & Quote(OrgUserName)
 TempRS.OpenRs TempSQL, TempCnn
 TempRS.Fields(0) = NewUserName
 TempRS.Fields(1) = Password
 TempRS.CloseRecordset
 TempRS.ReleaseMemory
 Set TempRS = Nothing
 TempCnn.CloseConnection
 Set TempCnn = Nothing
End Sub

Public Function CheckMenuPopedom(ByVal VarStr As String, ByVal ItemNumber As Long) As Boolean
 Dim PopedomIndex As Long
 If GPopedomBS(1) = True Then
    CheckMenuPopedom = True
 Else
 Select Case VarStr
  Case "Maintenance"
   Select Case ItemNumber
    Case 1, 4, 7  '"更换操作员"
     CheckMenuPopedom = True
     Exit Function
    Case 3, 5 '"操作员设置"
     CheckMenuPopedom = False
     Exit Function
   End Select
  Case "Data"
    Select Case ItemNumber
     Case 1
      PopedomIndex = 2
     Case 2
      PopedomIndex = 3
     Case 3
      PopedomIndex = 4
     Case 5
      PopedomIndex = 5
     Case 6
      PopedomIndex = 6
     Case 7
      PopedomIndex = 7
     Case 9
      PopedomIndex = 8
     Case 10
      PopedomIndex = 9
     Case 11
      PopedomIndex = 10
     Case 13
      PopedomIndex = 11
     Case 14
      PopedomIndex = 12
    End Select
  Case "StockTable"
   Select Case ItemNumber
    Case 1 '"进货单"
     PopedomIndex = 13
    Case 2 '"进货退货处理"
     PopedomIndex = 14
    Case 4 '"进(退)货历史单据"
     PopedomIndex = 15
   End Select
  Case "StoreGoods"
   Select Case ItemNumber
    Case 1
     PopedomIndex = 16
    Case 2
     PopedomIndex = 17
    Case 4
     PopedomIndex = 18
   End Select
  Case "SellTable"
   Select Case ItemNumber
    Case 1
     PopedomIndex = 19
    Case 2
     PopedomIndex = 20
    Case 4
     PopedomIndex = 21
    Case 6
     PopedomIndex = 22
    Case 8
     PopedomIndex = 23
   End Select
  Case "Maintain"
   Select Case ItemNumber
    Case 1
     PopedomIndex = 24
    Case 3
     PopedomIndex = 25
    Case 5
     PopedomIndex = 26
    Case 7
     PopedomIndex = 27
   End Select
  Case "Stat"
   Select Case ItemNumber
    Case 1
     PopedomIndex = 28
    Case 3 To 7
     PopedomIndex = 29 - 3 + ItemNumber
    Case 9
     PopedomIndex = 34
    Case 10
     PopedomIndex = 35
    Case 11
     PopedomIndex = 36
   End Select
  Case "Account"
   Select Case ItemNumber
    Case 1
     PopedomIndex = 37
    Case 2
     PopedomIndex = 38
   End Select

  End Select
  CheckMenuPopedom = GPopedomBS(PopedomIndex)
 End If
End Function
Public Sub ListViewLoad2(lvwData As Control, rs As MYSQL_RS, VarHistory As ChangeHistory)
    On Error Resume Next
     
    Dim lngCounter As Long
     
    Dim FirstColumn As Boolean
    Dim TempRS As New MYSQL_RS
    Dim TempStr As String
    Dim TempLow As Long
    Dim TempCount As Long
    Dim TempSQL As String
    'Dim TempHistory As ChangeHistory
    
    lvwData.View = lvwReport                    'THESE PARAMETERS CREATE
    lvwData.LabelEdit = lvwManual               'A DATAGRID-LIKE APPEARANCE
    lvwData.GridLines = True
    lvwData.FullRowSelect = True
     
    lvwData.ListItems.Clear
    lvwData.ColumnHeaders.Clear
    
    VarHistory.KeyCount = 0
    VarHistory.DelKeyCount = 0
    TempLow = 0
    TempCount = 0
    TempSQL = "Select * From chinesetable " 'where englishname = " & Quote(TempStr)
    
    Set TempRS = gCnn.Execute(TempSQL)
    For lngCounter = 0 To rs.FieldCount - 1
        TempStr = rs.Fields(lngCounter).Name
       With rs.Fields(lngCounter + 1)
        If TempStr = "AKey" Or TempStr = "typebs" Or ((TempStr = "billnum" Or TempStr = "drawbillnum") And ((.Name = "goodscoding") Or (.Name = "itemcode") Or (.Name = "datacontxt"))) Then
          If ((.Name = "goodscoding") Or (.Name = "itemcode") Or (.Name = "datacontxt")) And (TempStr = "billnum" Or TempStr = "drawbillnum") Then TempLow = TempLow + 1
         If TempStr = "AKey" Then TempLow = TempLow + 1
        Else
         With TempRS
          .MoveFirst
          .MovePrevious
          .FindNext "englishname", TempStr
          lvwData.ColumnHeaders.Add , , .Fields(2).Value
         End With
         TempCount = TempCount + 1
        End If
       End With
    Next
    TempRS.CloseRecordset
    TempRS.ReleaseMemory
    Set TempRS = Nothing
     
    'PREALLOCATE MEMORY FOR ROWS
    SendMessage lvwData.hWnd, LVM_SETITEMCOUNT, TempCount, 0&
     
    Dim MyItems As MSComctlLib.ListItems
    Set MyItems = lvwData.ListItems
     
    Do Until rs.EOF
        FirstColumn = True      'FIRST COLUMN IS A LISTITEM, REST ARE LISTSUBITEMS
        'Set TempHistory = VarHistory
        For lngCounter = TempLow To rs.FieldCount - 1
         If rs.Fields(lngCounter).Name <> "typebs" Then
            If FirstColumn Then
                If Not IsNull(rs.Fields(lngCounter).Value) Then
                    MyItems.Add , , rs.Fields(lngCounter).Value
                    TempCount = rs.Fields(0).Value
                  If TempLow > 0 Then VarHistory.AddRecordlstKey TempCount
                Else
                    MyItems.Add , , ""  'NULL FIELDS NEED A BLANK ITEM
                End If                  'TO KEEP DATA FROM SHIFTING LEFT
                FirstColumn = False
            Else
                If Not IsNull(rs.Fields(lngCounter).Value) Then
                    MyItems(MyItems.Count).ListSubItems.Add , , rs.Fields(lngCounter).Value
                Else
                    MyItems(MyItems.Count).ListSubItems.Add , , ""
                End If
            End If
          End If
        Next
      '  If Not IsMissing(Owner) Then Owner.pbrProgress.Value = (rs.AbsolutePosition / rs.RecordCount) * 100
        rs.MoveNext
    Loop

End Sub
Public Function MaxValue(ByVal CurrentValue As Long, ByVal KeyIndex As Long, ByVal FinishedIndex As Long)
 If CurrentValue >= VarPrice Then
   VarPrice = CurrentValue
   CurrentKeyIndex = KeyIndex
   CurrentFinishIndex = FinishedIndex
 End If
End Function
Public Function MinValue(ByVal CurrentValue As Long, ByVal KeyIndex As Long, ByVal FinishedIndex As Long)
 If VarPrice = 0 Then
  VarPrice = CurrentValue
  CurrentKeyIndex = KeyIndex
   CurrentFinishIndex = FinishedIndex
  Exit Function
 End If
 If CurrentValue <= VarPrice Then
   VarPrice = CurrentValue
   CurrentKeyIndex = KeyIndex
   CurrentFinishIndex = FinishedIndex
 End If
End Function
Public Function DealSellOrder(VarRS As MYSQL_RS, SellGoodsWay As Long) As Long
Dim i As Integer
i = 0
VarPrice = 0
CurrentKeyIndex = 0
CurrentFinishIndex = 0
With VarRS
 .MoveFirst
 Do Until .EOF
   i = i + 1
   Select Case SellGoodsWay
   Case 0
    If FinishedBS(i) = False Then MaxValue .Fields("goodsprice"), .Fields(0), i
   Case 1
    If FinishedBS(i) = False Then MinValue .Fields("goodsprice"), .Fields(0), i
   Case 2
   Case 3
  End Select
  .MoveNext
 
 Loop
End With
FinishedBS(CurrentFinishIndex) = True
End Function
Public Sub InitFinishBS(ByVal VarCount As Long)
 ReDim FinishedBS(1 To VarCount)
End Sub
Public Sub ReleaseClass()
 Dim NullBS() As Boolean
 VarPrice = 0
 CurrentKeyIndex = 0
 CurrentFinishIndex = 0
 FinishedBS = NullBS
End Sub
Public Function FindSameVariant(ByVal VarVariant As Variant, VarVariants() As Variant, VariantsLen As Long, Optional VarPos As Long) As Boolean
 Dim i As Long
 For i = 1 To VariantsLen
  If VarVariant = VarVariants(i) Then
   VarPos = i
   FindSameVariant = True
   Exit Function
  End If
 Next i
 FindSameVariant = False
End Function
Public Function FindSameDate(ByVal VarDate As Date, VarDates() As Date, DatesLen As Long) As Boolean
 Dim i As Long
 For i = 1 To DatesLen
  If VarDate = VarDates(i) Then
   FindSameDate = True
   Exit Function
  End If
 Next i
 FindSameDate = False
End Function
Public Function DefFormat(ByVal VarVariant As Variant) As String
 DefFormat = Format(VarVariant, "0.00")
End Function
Public Sub ListViewLoad3(lvwData As Control, rs As MYSQL_RS, Optional PageNum As Long = 0)
'---------------------------------------------------------------------------------------
' Procedure : ListViewLoad
' DateTime  : 03/07/04 14:09
' Author    : Robert Rowe
' Purpose   : Modified to work with VBMySQLDirect
'---------------------------------------------------------------------------------------

'THIS FUNCTION IS USED TO TAKE DATA FROM A ADODB RECORDSET AND LOAD IT INTO
'A LISTVIEW CONTROL. PLACING A PROGRESS BAR NAMED pbrProgress ON OWNER FORM
'WILL ALLOW FOR AN UPDATING PROGRESS BAR TO SHOW HOW FAR ALONG YOU ARE WHEN
'OWNER PARAMETER IS SPECIFIED DURING CALL.
'
'NOTE: LISTVIEWS ARE NOT VERY EFFICIENT WITH MEMORY, AND THIS FUNCTION
'IS NOT RECCOMENDED FOR RECORDSETS WITH > 10,000 RECORDS
'
'AUTHOR: MIKE HILLYER
'
'USAGE: ListViewLoad lvwMyListView, rsMyRecordset[, me]
 
    On Error Resume Next
     
    Dim lngCounter As Long
     
    Dim FirstColumn As Boolean
    Dim TempRS As New MYSQL_RS
    Dim TempStr As String
    Dim TempLow As Long
    Dim TempCount As Long
    Dim TempSQL As String
    Dim i As Long
    
    lvwData.View = lvwReport                    'THESE PARAMETERS CREATE
    lvwData.LabelEdit = lvwManual               'A DATAGRID-LIKE APPEARANCE
    lvwData.GridLines = True
    lvwData.FullRowSelect = True
     
    lvwData.ListItems.Clear
    lvwData.ColumnHeaders.Clear
    
    TempLow = 0
    TempCount = 0
    TempSQL = "Select * From chinesetable " 'where englishname = " & Quote(TempStr)
    Set TempRS = gCnn.Execute(TempSQL)
    For lngCounter = 0 To rs.FieldCount - 1
        TempStr = rs.Fields(lngCounter).Name
       With rs.Fields(lngCounter + 1)
        If TempStr = "AKey" Or TempStr = "typebs" Or ((TempStr = "billnum" Or TempStr = "drawbillnum") And ((.Name = "goodscoding") Or (.Name = "itemcode") Or (.Name = "datacontxt"))) Then
          If ((.Name = "goodscoding") Or (.Name = "itemcode") Or (.Name = "datacontxt")) And (TempStr = "billnum" Or TempStr = "drawbillnum") Then TempLow = TempLow + 1
         If TempStr = "AKey" Then TempLow = TempLow + 1
        Else
         With TempRS
          .MoveFirst
          .MovePrevious
          .FindNext "englishname", TempStr
          lvwData.ColumnHeaders.Add , , .Fields(2).Value
         End With
         TempCount = TempCount + 1
        End If
      End With
    Next
    TempRS.CloseRecordset
    TempRS.ReleaseMemory
    Set TempRS = Nothing
 
    'PREALLOCATE MEMORY FOR ROWS
    SendMessage lvwData.hWnd, LVM_SETITEMCOUNT, TempCount, 0&
     
    Dim MyItems As MSComctlLib.ListItems
    Set MyItems = lvwData.ListItems
    If PageNum = -1 Then
     PageNum = (rs.RecordCount - 1) \ VarInitData.EachPageRSCount
     If PageNum < 0 Then PageNum = 0
    End If
    If PageNum > 0 Then
     i = PageNum * VarInitData.EachPageRSCount
     If rs.RecordCount > i Then
      rs.Move i, 1
     Else
      PageNum = PageNum - 1
     End If
    End If
    i = 0
    Do Until (rs.EOF Or i >= VarInitData.EachPageRSCount)
        FirstColumn = True      'FIRST COLUMN IS A LISTITEM, REST ARE LISTSUBITEMS
        For lngCounter = TempLow To rs.FieldCount - 1
          If rs.Fields(lngCounter).Name <> "typebs" Then
            If FirstColumn Then
                If Not IsNull(rs.Fields(lngCounter).Value) Then
                    MyItems.Add , , rs.Fields(lngCounter).Value
                Else
                    MyItems.Add , , ""  'NULL FIELDS NEED A BLANK ITEM
                End If                  'TO KEEP DATA FROM SHIFTING LEFT
                FirstColumn = False
            Else
                If Not IsNull(rs.Fields(lngCounter).Value) Then
                    MyItems(MyItems.Count).ListSubItems.Add , , rs.Fields(lngCounter).Value
                Else
                    MyItems(MyItems.Count).ListSubItems.Add , , ""
                End If
            End If
          End If
        Next
     '   If Not IsMissing(Owner) Then Owner.pbrProgress.Value = (rs.AbsolutePosition / rs.RecordCount) * 100
        rs.MoveNext
        i = i + 1
    Loop
    If MyItems.Count > 1 Then
     lvwData.SortKey = 0
     lvwData.SortOrder = 0
     lvwData.Sorted = True
    End If

End Sub

⌨️ 快捷键说明

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