我做了一个from,是修改用的,有个combobox取数据时(表Product_type)好用,可是修改后不往数据库里(表Employee)添加代码:Option Explicit
Private rsEmployee As ADODB.Recordset
Private strMaxNum As String
Private blnIsSQL As Boolean
Dim rs As New ADODB.Recordset
Dim FileName As String
Private Sub CmdDep_Click(Index As Integer)
Dim intAnswer As Integer
Select Case Index
Case 0
Call EmpAddNew
Case 1
Call IsEdit(True)
Me.txtemployee_name.SetFocus
Case 2
FrmSql.intNumField = 3
FrmSql.Show vbModal
Select Case FrmSql.intNumField
Case -1
blnIsSQL = False
CmdDep(0).Enabled = True
CmdDep(3).Enabled = True
rsEmployee.Filter = Me.DataGrid1.Columns.Item(0).DataField & _
"<>''"
Case -2
Case Else
blnIsSQL = True
CmdDep(0).Enabled = False
CmdDep(3).Enabled = False
rsEmployee.Filter = Me.DataGrid1.Columns.Item(FrmSql.intNumField).DataField & _
" like '*" & FrmSql.strSqlField & "*'"
End Select
Case 3
intAnswer = MsgBox("确认删除当前记录吗?", vbYesNo + vbQuestion, "删除确认")
If intAnswer = vbYes Then
With rsEmployee
.Delete
.UpdateBatch
If .RecordCount <> 0 Then
.MoveFirst
Else
For intAnswer = 1 To 4
If intAnswer <> 4 Then
CmdDep(intAnswer).Enabled = False
End If
Next
End If
End With
End If
Case 4
Case 5
Unload Me
End Select
End SubPrivate Sub DCboEmp_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Me.txtemployee_name.SetFocus
End Sub
Private Sub CmdAct_Click(Index As Integer)
On Error GoTo Err:
With rsEmployee
Select Case Index
Case 0
.UpdateBatch
.MoveLast
Case 1
.CancelUpdate
If .RecordCount <> 0 Then
.MoveFirst
End If
End Select
End With
Call IsEdit(False)
Me.DataGrid1.Refresh
Exit Sub
Err:
If Err.Number = -2147467259 Then
MsgBox "品牌编号重复!请重新录入新的品牌编号!", vbCritical, "错误"
End If
End SubPrivate Sub Form_Load()
intNumWindows = OpenWindow(intNumWindows)
Me.Height = 6300
Me.Width = 5730
'向cmbLeibie加入类别列表
If rs.State = adStateOpen Then rs.Close
rs.Open "product_type", connclient
If Not rs.BOF And Not rs.EOF Then
cmbLeibie.Text = rs("type_name")
End If
Do While Not rs.EOF
cmbLeibie.AddItem rs("type_name")
rs.MoveNext
Loop
rs.Close
Call SetFormStu(Me, frmMain)
Set rsEmployee = DEjxc.rsComEmployee
Call IsEdit(False)
End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If CmdDep(5).Enabled = False Then
MsgBox "请先退出编辑状态后再退出该程序!", , "提示"
Cancel = True
End If
End SubPrivate Sub Form_Unload(Cancel As Integer)
intNumWindows = Closewindow(intNumWindows)
rsEmployee.Filter = Me.DataGrid1.Columns.Item(0).DataField & "<>''"
rsEmployee.Close
Set rsEmployee = Nothing
End SubPrivate Sub EmpAddNew()
Dim strSQL As String
With rsEmployee
If .RecordCount = 0 Then
strMaxNum = 0
Else
.MoveLast
strMaxNum = !employee_id
End If
.AddNew "employee_id", ""
Me.txtemployee_id = Format(CLng(strMaxNum) + 1, "0###")
Call IsEdit(True)
Me.txtemployee_id.SetFocus
End With
End SubPrivate Sub IsEdit(blnIsEdit As Boolean)
Dim intNum As Integer
Me.txtemployee_id.Enabled = blnIsEdit
Me.txtemployee_name.Enabled = blnIsEdit
Me.cmbLeibie.Enabled = blnIsEdit
For intNum = 0 To 1
Me.CmdAct(intNum).Enabled = blnIsEdit
Next
For intNum = 0 To 5
If intNum <> 4 Then
Me.CmdDep(intNum).Enabled = Not blnIsEdit
End If
Next
If blnIsSQL = True Then
CmdDep(0).Enabled = False
CmdDep(3).Enabled = False
End If
If rsEmployee.RecordCount = 0 Then
For intNum = 1 To 4
If intNum <> 4 Then
Me.CmdDep(intNum).Enabled = False
End If
Next
End If
End SubPrivate Sub txtemployee_id_KeyPress(KeyAscii As Integer)
Dim strValid As String
strValid = "0123456789"
If KeyAscii > 26 Then
If InStr(strValid, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End If
If KeyAscii = 13 Then Me.cmbLeibie.SetFocus
End Sub
Private rsEmployee As ADODB.Recordset
Private strMaxNum As String
Private blnIsSQL As Boolean
Dim rs As New ADODB.Recordset
Dim FileName As String
Private Sub CmdDep_Click(Index As Integer)
Dim intAnswer As Integer
Select Case Index
Case 0
Call EmpAddNew
Case 1
Call IsEdit(True)
Me.txtemployee_name.SetFocus
Case 2
FrmSql.intNumField = 3
FrmSql.Show vbModal
Select Case FrmSql.intNumField
Case -1
blnIsSQL = False
CmdDep(0).Enabled = True
CmdDep(3).Enabled = True
rsEmployee.Filter = Me.DataGrid1.Columns.Item(0).DataField & _
"<>''"
Case -2
Case Else
blnIsSQL = True
CmdDep(0).Enabled = False
CmdDep(3).Enabled = False
rsEmployee.Filter = Me.DataGrid1.Columns.Item(FrmSql.intNumField).DataField & _
" like '*" & FrmSql.strSqlField & "*'"
End Select
Case 3
intAnswer = MsgBox("确认删除当前记录吗?", vbYesNo + vbQuestion, "删除确认")
If intAnswer = vbYes Then
With rsEmployee
.Delete
.UpdateBatch
If .RecordCount <> 0 Then
.MoveFirst
Else
For intAnswer = 1 To 4
If intAnswer <> 4 Then
CmdDep(intAnswer).Enabled = False
End If
Next
End If
End With
End If
Case 4
Case 5
Unload Me
End Select
End SubPrivate Sub DCboEmp_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Me.txtemployee_name.SetFocus
End Sub
Private Sub CmdAct_Click(Index As Integer)
On Error GoTo Err:
With rsEmployee
Select Case Index
Case 0
.UpdateBatch
.MoveLast
Case 1
.CancelUpdate
If .RecordCount <> 0 Then
.MoveFirst
End If
End Select
End With
Call IsEdit(False)
Me.DataGrid1.Refresh
Exit Sub
Err:
If Err.Number = -2147467259 Then
MsgBox "品牌编号重复!请重新录入新的品牌编号!", vbCritical, "错误"
End If
End SubPrivate Sub Form_Load()
intNumWindows = OpenWindow(intNumWindows)
Me.Height = 6300
Me.Width = 5730
'向cmbLeibie加入类别列表
If rs.State = adStateOpen Then rs.Close
rs.Open "product_type", connclient
If Not rs.BOF And Not rs.EOF Then
cmbLeibie.Text = rs("type_name")
End If
Do While Not rs.EOF
cmbLeibie.AddItem rs("type_name")
rs.MoveNext
Loop
rs.Close
Call SetFormStu(Me, frmMain)
Set rsEmployee = DEjxc.rsComEmployee
Call IsEdit(False)
End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If CmdDep(5).Enabled = False Then
MsgBox "请先退出编辑状态后再退出该程序!", , "提示"
Cancel = True
End If
End SubPrivate Sub Form_Unload(Cancel As Integer)
intNumWindows = Closewindow(intNumWindows)
rsEmployee.Filter = Me.DataGrid1.Columns.Item(0).DataField & "<>''"
rsEmployee.Close
Set rsEmployee = Nothing
End SubPrivate Sub EmpAddNew()
Dim strSQL As String
With rsEmployee
If .RecordCount = 0 Then
strMaxNum = 0
Else
.MoveLast
strMaxNum = !employee_id
End If
.AddNew "employee_id", ""
Me.txtemployee_id = Format(CLng(strMaxNum) + 1, "0###")
Call IsEdit(True)
Me.txtemployee_id.SetFocus
End With
End SubPrivate Sub IsEdit(blnIsEdit As Boolean)
Dim intNum As Integer
Me.txtemployee_id.Enabled = blnIsEdit
Me.txtemployee_name.Enabled = blnIsEdit
Me.cmbLeibie.Enabled = blnIsEdit
For intNum = 0 To 1
Me.CmdAct(intNum).Enabled = blnIsEdit
Next
For intNum = 0 To 5
If intNum <> 4 Then
Me.CmdDep(intNum).Enabled = Not blnIsEdit
End If
Next
If blnIsSQL = True Then
CmdDep(0).Enabled = False
CmdDep(3).Enabled = False
End If
If rsEmployee.RecordCount = 0 Then
For intNum = 1 To 4
If intNum <> 4 Then
Me.CmdDep(intNum).Enabled = False
End If
Next
End If
End SubPrivate Sub txtemployee_id_KeyPress(KeyAscii As Integer)
Dim strValid As String
strValid = "0123456789"
If KeyAscii > 26 Then
If InStr(strValid, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End If
If KeyAscii = 13 Then Me.cmbLeibie.SetFocus
End Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货