📄 frmoperator.frm
字号:
EndProperty
_NumberOfBands = 1
_Band(0).Cols = 3
_Band(0).GridLinesBand= 0
_Band(0).TextStyleBand= 0
_Band(0).TextStyleHeader= 0
End
End
Attribute VB_Name = "frmOperator"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Oper_ID As Variant
Private Oper_Name As Variant
Private Oper_Pass As Variant
Private Sub IniFlexGrid(ByVal flexGrid As MSHFlexGrid)
flexGrid.Clear
With flexGrid
.Cols = 4
.Rows = 2
.FixedCols = 0
.FixedRows = 1
.SelectionMode = flexSelectionByRow
.TextMatrix(0, 1) = "编号"
.TextMatrix(0, 2) = "姓名"
.TextMatrix(0, 3) = "密码"
.ScrollBars = flexScrollBarVertical
.GridLines = flexGridNone
.GridLinesFixed = flexGridNone
'.AllowBigSelection = True
.AllowUserResizing = flexResizeNone
.ColWidth(0) = 1
.ColWidth(1) = 1000
.ColWidth(2) = 2000
.ColWidth(3) = 3420
.ColAlignment(1) = 3
.ColAlignment(2) = 0
.ColAlignment(3) = 0
.ColAlignmentFixed(1) = 3
.FillStyle = flexFillSingle
.ScrollTrack = True
.Row = 1
.Col = 0
.RowSel = 1
.ColSel = .Cols - 1
End With
End Sub
Private Sub showdata(ByVal Recordset As ADODB.Recordset, ByVal flexGrid As MSHFlexGrid)
Dim i As Integer
Dim j As Integer
If Recordset.RecordCount > 0 Then
Recordset.MoveFirst
With flexGrid
.Row = 1
While Not Recordset.EOF
.Rows = .Rows + 1
For i = 1 To Recordset.Fields.Count
.Col = i
If (.Row Mod 2) = 0 Then
.CellBackColor = &HF4D3A6
Else
.CellBackColor = vbWhite
End If
.Text = Recordset.Fields(i - 1)
Next i
.Row = .Row + 1
Recordset.MoveNext
Wend
'.Col = 1
.Row = 1
.Col = 0
.RowSel = 1
.ColSel = .Cols - 1
'.Row = 1
End With
End If
End Sub
Private Sub GetRecordIdName(ByVal flex As MSHFlexGrid, lngRecordId As Variant, strRecordName As Variant, strPass As Variant)
If flex.Row <> 0 Then
If flex.TextMatrix(flex.Row, 1) <> Empty Then
lngRecordId = flex.TextMatrix(flex.Row, 1)
strRecordName = flex.TextMatrix(flex.Row, 2)
strPass = flex.TextMatrix(flex.Row, 3)
Else
lngRecordId = -1
strRecordName = Empty
strPass = Empty
End If
End If
End Sub
Private Function SavetoRecords(ByVal rctSave As ADODB.Recordset, ByVal firstField_value As String, ByVal secondField_value As String, ByVal thirdField_value As String) As Boolean
On Error GoTo Save_Error
rctSave.Fields(0).Value = firstField_value
rctSave.Fields(1).Value = secondField_value
rctSave.Fields(2).Value = thirdField_value
rctSave.Update
SavetoRecords = True
Exit Function
Save_Error:
If Err.Number <> 0 Then
rctSave.CancelUpdate
SavetoRecords = False
MsgBox "错误代码:" & Err.Number & vbCrLf & _
"错误描述:" & Err.Description, vbCritical + vbOKOnly, "保存记录失败"
Else
SavetoRecords = True
End If
End Function
Public Function RecordDelete(ByVal rstDelete As ADODB.Recordset, ByVal strOption As Long) As Boolean
If (rstDelete.EOF = True) Or (rstDelete.BOF = True) Then
RecordDelete = False
Exit Function
End If
On Error GoTo Delete_error
rstDelete.Delete strOption
rstDelete.Update
RecordDelete = True
rstDelete.Update
Delete_error:
If Err.Number <> 0 Then
rstDelete.CancelUpdate
RecordDelete = False
MsgBox "错误代码:" & Err.Number & vbCrLf & _
"错误描述:" & Err.Description, vbCritical + vbOKOnly, "删除错误"
Else
RecordDelete = True
rstDelete.Update
End If
End Function
Private Sub flexOper_SelChange()
Call GetRecordIdName(flexOper, Oper_ID, Oper_Name, Oper_Pass)
If Oper_ID <> -1 Then
txtOperId.Text = Oper_ID
txtOperName.Text = Oper_Name
txtOperPass.Text = Oper_Pass
rctOperatorList.MoveFirst
rctOperatorList.Find ("Oper_ID = " & CStr(Oper_ID))
Else
txtOperId.Text = Empty
txtOperName.Text = Empty
txtOperPass.Text = Empty
End If
End Sub
'Download by http://www.codefans.net
Private Sub Form_Load()
Call IniFlexGrid(flexOper)
Call showdata(rctOperatorList, flexOper)
End Sub
Private Sub tblOperator_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Key
Case "add"
flexOper.Row = flexOper.Rows - 1 '移到最后一行
flexOper.Col = 0 '称到最后一行的第一列
flexOper.RowSel = flexOper.Rows - 1 '选定一行
flexOper.ColSel = flexOper.Cols - 1 '选定所有列
If flexOper.Rows > 7 Then
flexOper.TopRow = flexOper.Rows - 7
End If
tblOperator.Buttons("delete").Enabled = False
tblOperator.Buttons("add").Enabled = False
rctOperatorList.AddNew
flexOper.Enabled = False
txtOperId.SetFocus
Case "delete"
If Oper_ID > 0 Then
If MsgBox("您确定要删除此记录吗?", vbQuestion + vbYesNo, "删除记录") = vbYes Then
If RecordDelete(rctOperatorList, adAffectCurrent) = True Then
Call IniFlexGrid(flexOper)
Call showdata(rctOperatorList, flexOper)
End If
End If
End If
Case "cancel"
If Not (rctOperatorList.EOF Or rctOperatorList.BOF) Then
rctOperatorList.CancelUpdate
End If
flexOper.Enabled = True
If flexOper.Rows > 2 Then
flexOper.Row = flexOper.Rows - 2 '移到倒数第二行
flexOper.Col = 0 '称到最后一行的第一列
flexOper.RowSel = flexOper.Rows - 2 '选定一行
flexOper.ColSel = flexOper.Cols - 1 '选定所有列
End If
'rctDepartList.CancelUpdate
tblOperator.Buttons("delete").Enabled = True
tblOperator.Buttons("add").Enabled = True
Case "save"
If Trim(txtOperId.Text) = Empty Then
MsgBox "编码不能为空", vbInformation + vbOKOnly, "输入不完整"
txtOperId.SetFocus
Exit Sub
End If
If Trim(txtOperName.Text) = Empty Then
MsgBox "操作员姓名不能为空", vbInformation + vbOKOnly, "输入不完整"
txtOperName.SetFocus
Exit Sub
End If
If Trim(txtOperPass.Text) = Empty Then
MsgBox "密码不能为空", vbInformation + vbOKOnly, "输入不能为空"
txtOperPass.SetFocus
Exit Sub
End If
If SavetoRecords(rctOperatorList, Trim(txtOperId.Text), Trim(txtOperName.Text), Trim(txtOperPass.Text)) = True Then
MsgBox "保存成功"
Else
MsgBox "保存失败"
End If
flexOper.Enabled = True
tblOperator.Buttons("delete").Enabled = True
tblOperator.Buttons("add").Enabled = True
Call IniFlexGrid(flexOper)
Call showdata(rctOperatorList, flexOper)
Case "help"
End Select
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -