各位大哥有人看过<<Visual Basic 6.0数据库系统开发实例导航 >>这本书吗!!!请大家帮我解决一个错误:”错误是对象变量或with变量未设制”
工程--引用--引用microsoft activex data object 2.x library也打勾了.
情况是这样的:在一个添加员工信息窗口中,输入信息后,点击”保存”按钮后,就也出现了:”实时错误’91’: 错误是对象变量或with变量未设制”
”.代码如下: Option Explicit
'是否改动过记录,ture为改过
Dim mblChange As Boolean
Public txtSQL As String
Dim mrc As ADODB.Recordset
'操作的表名称
Private Sub cboItem_Change()
'有变化设置gblchange
mblChange = True
End Sub
Private Sub cboItem_KeyDown(KeyCode As Integer, Shift As Integer)
EnterToTab KeyCode
End Sub
Private Sub cmdExit_Click()
If mblChange And cmdSave.Enabled Then
If MsgBox("保存当前记录的变化吗?", vbOKCancel + vbExclamation, "警告") = vbOK Then
'保存
Call cmdSave_Click
End If
End If
Unload Me
End Sub
Private Sub cmdSave_Click()
Dim intCount As Integer
Dim txtSQL As String
Dim MsgText As String
Dim sMeg As String
Dim i As Integer
For intCount = 0 To 2
If Trim(txtItem(intCount) & " ") = "" Then
Select Case intCount
Case 0
sMeg = "编号"
Case 1
sMeg = "姓名"
Case 3
sMeg = "部门"
End Select
sMeg = sMeg & "不能为空!"
MsgBox sMeg, vbOKOnly + vbExclamation, "警告"
txtItem(intCount).SetFocus
Exit Sub
End If
Next intCount
If Trim(txtItem(3) & " ") <> "" Then
If Not IsDate(txtItem(3)) Then
MsgBox "生日应输入日期(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
txtItem(3).SetFocus
Exit Sub
Else
txtItem(3) = Format(txtItem(3), "yyyy-mm-dd")
End If
End If
If Trim(txtItem(7) & " ") <> "" Then
If Not IsDate(txtItem(7)) Then
MsgBox "参加工作时间应输入日期(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
txtItem(7).SetFocus
Exit Sub
Else
txtItem(7) = Format(txtItem(7), "yyyy-mm-dd")
End If
End If
If Trim(txtItem(8) & " ") <> "" Then
If Not IsDate(txtItem(8)) Then
MsgBox "入党时间应输入日期(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
txtItem(8).SetFocus
Exit Sub
Else
txtItem(8) = Format(txtItem(8), "yyyy-mm-dd")
End If
End If
If Trim(txtItem(10) & "") <> "" Then
If Not IsDate(txtItem(10)) Then
MsgBox "职称时间应输入日期(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
txtItem(10).SetFocus
Exit Sub
Else
txtItem(10) = Format(txtItem(10), "yyyy-mm-dd")
End If
End If
If Trim(txtItem(14) & "") <> "" Then
If Not IsDate(txtItem(14)) Then
MsgBox "进入公司时间应输入日期(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
txtItem(14).SetFocus
Exit Sub
Else
txtItem(14) = Format(txtItem(14), "yyyy-mm-dd")
End If
End If
If Trim(txtItem(15) & "") <> "" Then
If Not IsDate(txtItem(15)) Then
MsgBox "起薪时间应输入日期(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
txtItem(15).SetFocus
Exit Sub
Else
txtItem(15) = Format(txtItem(15), "yyyy-mm-dd")
End If
End If
If Trim(txtItem(16) & "") <> "" Then
If Not IsDate(txtItem(16)) Then
MsgBox "调入时间应输入日期(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
txtItem(16).SetFocus
Exit Sub
Else
txtItem(16) = Format(txtItem(16), "yyyy-mm-dd")
End If
End If
添加判断是否有相同的ID记录
If gintMode = 1 Then
txtSQL = "select * from manrecord where ygid='" & Trim(txtItem(0)) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
注:运行时错误在这里出现; If mrc.EOF = False Then
MsgBox "已经存在此员工档案编号的记录!", vbOKOnly + vbExclamation, "警告"
txtItem(0).SetFocus
txtItem(0).SelStart = 0
txtItem(0).SelLength = Len(txtItem(0))
Exit Sub
End If
mrc.Close
End If
'先删除已有记录
txtSQL = "delete from manrecord where ygid='" & Trim(txtItem(0)) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
'再加入新记录
txtSQL = "select * from manrecord"
Set mrc = ExecuteSQL(txtSQL, MsgText)
mrc.AddNew
For intCount = 0 To 2
mrc.Fields(intCount) = Trim(txtItem(intCount))
Next intCount
mrc.Fields(3) = Trim(cboItem.Text)
For intCount = 3 To 18
mrc.Fields(intCount + 1) = Trim(txtItem(intCount))
Next intCount
mrc.Update
If gintMode = 1 Then
MsgBox "记录添加成功!", vbOKOnly + vbExclamation, "警告"
For i = 0 To 18
txtItem(i).Text = ""
mblChange = False
Next i
frmManRecord1.Show
frmManRecord1.ZOrder 0
frmManRecord.ShowTitle
frmManRecord.txtSQL = "select * from manrecord"
frmManRecord.ShowData
frmManRecord.ZOrder 1
Else
MsgBox "记录修改成功!", vbOKOnly + vbExclamation, "警告"
Unload Me
frmManRecord.ShowTitle
frmManRecord.txtSQL = "select * from manrecord"
frmManRecord.ShowData
frmManRecord.ZOrder 0
End If
gintMode = 0
End Sub
Private Sub Form_Load()
Dim MsgText As String
Dim intCount As Integer
With cboItem
.AddItem "男"
.AddItem "女"
End With
If gintMode = 1 Then
Me.Caption = Me.Caption & "添加"
cboItem.ListIndex = 0
ElseIf gintMode = 2 Then
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = False Then
With mrc
For intCount = 0 To 2
txtItem(intCount) = .Fields(intCount)
Next intCount
If Not IsNull(!ygsex) Then
cboItem = !ygsex
End If
For intCount = 3 To 18
If Not IsNull(.Fields(intCount + 1)) Then
txtItem(intCount) = .Fields(intCount + 1)
End If
Next intCount
End With
txtItem(0).Enabled = False
End If
mrc.Close
Me.Caption = Me.Caption & "修改"
End If
mblChange = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
'MsgBox "realy want to quit?", vbOKOnly + vbExclamation, "quit"
End Sub
Private Sub txtItem_Change(Index As Integer)
'有变化设置gblchange
mblChange = True
End Sub
txtItem(Index).SelStart = 0
txtItem(Index).SelLength = Len(txtItem(Index))
End Sub
Private Sub txtItem_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
EnterToTab KeyCode
End Sub
工程--引用--引用microsoft activex data object 2.x library也打勾了.
情况是这样的:在一个添加员工信息窗口中,输入信息后,点击”保存”按钮后,就也出现了:”实时错误’91’: 错误是对象变量或with变量未设制”
”.代码如下: Option Explicit
'是否改动过记录,ture为改过
Dim mblChange As Boolean
Public txtSQL As String
Dim mrc As ADODB.Recordset
'操作的表名称
Private Sub cboItem_Change()
'有变化设置gblchange
mblChange = True
End Sub
Private Sub cboItem_KeyDown(KeyCode As Integer, Shift As Integer)
EnterToTab KeyCode
End Sub
Private Sub cmdExit_Click()
If mblChange And cmdSave.Enabled Then
If MsgBox("保存当前记录的变化吗?", vbOKCancel + vbExclamation, "警告") = vbOK Then
'保存
Call cmdSave_Click
End If
End If
Unload Me
End Sub
Private Sub cmdSave_Click()
Dim intCount As Integer
Dim txtSQL As String
Dim MsgText As String
Dim sMeg As String
Dim i As Integer
For intCount = 0 To 2
If Trim(txtItem(intCount) & " ") = "" Then
Select Case intCount
Case 0
sMeg = "编号"
Case 1
sMeg = "姓名"
Case 3
sMeg = "部门"
End Select
sMeg = sMeg & "不能为空!"
MsgBox sMeg, vbOKOnly + vbExclamation, "警告"
txtItem(intCount).SetFocus
Exit Sub
End If
Next intCount
If Trim(txtItem(3) & " ") <> "" Then
If Not IsDate(txtItem(3)) Then
MsgBox "生日应输入日期(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
txtItem(3).SetFocus
Exit Sub
Else
txtItem(3) = Format(txtItem(3), "yyyy-mm-dd")
End If
End If
If Trim(txtItem(7) & " ") <> "" Then
If Not IsDate(txtItem(7)) Then
MsgBox "参加工作时间应输入日期(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
txtItem(7).SetFocus
Exit Sub
Else
txtItem(7) = Format(txtItem(7), "yyyy-mm-dd")
End If
End If
If Trim(txtItem(8) & " ") <> "" Then
If Not IsDate(txtItem(8)) Then
MsgBox "入党时间应输入日期(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
txtItem(8).SetFocus
Exit Sub
Else
txtItem(8) = Format(txtItem(8), "yyyy-mm-dd")
End If
End If
If Trim(txtItem(10) & "") <> "" Then
If Not IsDate(txtItem(10)) Then
MsgBox "职称时间应输入日期(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
txtItem(10).SetFocus
Exit Sub
Else
txtItem(10) = Format(txtItem(10), "yyyy-mm-dd")
End If
End If
If Trim(txtItem(14) & "") <> "" Then
If Not IsDate(txtItem(14)) Then
MsgBox "进入公司时间应输入日期(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
txtItem(14).SetFocus
Exit Sub
Else
txtItem(14) = Format(txtItem(14), "yyyy-mm-dd")
End If
End If
If Trim(txtItem(15) & "") <> "" Then
If Not IsDate(txtItem(15)) Then
MsgBox "起薪时间应输入日期(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
txtItem(15).SetFocus
Exit Sub
Else
txtItem(15) = Format(txtItem(15), "yyyy-mm-dd")
End If
End If
If Trim(txtItem(16) & "") <> "" Then
If Not IsDate(txtItem(16)) Then
MsgBox "调入时间应输入日期(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"
txtItem(16).SetFocus
Exit Sub
Else
txtItem(16) = Format(txtItem(16), "yyyy-mm-dd")
End If
End If
添加判断是否有相同的ID记录
If gintMode = 1 Then
txtSQL = "select * from manrecord where ygid='" & Trim(txtItem(0)) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
注:运行时错误在这里出现; If mrc.EOF = False Then
MsgBox "已经存在此员工档案编号的记录!", vbOKOnly + vbExclamation, "警告"
txtItem(0).SetFocus
txtItem(0).SelStart = 0
txtItem(0).SelLength = Len(txtItem(0))
Exit Sub
End If
mrc.Close
End If
'先删除已有记录
txtSQL = "delete from manrecord where ygid='" & Trim(txtItem(0)) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
'再加入新记录
txtSQL = "select * from manrecord"
Set mrc = ExecuteSQL(txtSQL, MsgText)
mrc.AddNew
For intCount = 0 To 2
mrc.Fields(intCount) = Trim(txtItem(intCount))
Next intCount
mrc.Fields(3) = Trim(cboItem.Text)
For intCount = 3 To 18
mrc.Fields(intCount + 1) = Trim(txtItem(intCount))
Next intCount
mrc.Update
If gintMode = 1 Then
MsgBox "记录添加成功!", vbOKOnly + vbExclamation, "警告"
For i = 0 To 18
txtItem(i).Text = ""
mblChange = False
Next i
frmManRecord1.Show
frmManRecord1.ZOrder 0
frmManRecord.ShowTitle
frmManRecord.txtSQL = "select * from manrecord"
frmManRecord.ShowData
frmManRecord.ZOrder 1
Else
MsgBox "记录修改成功!", vbOKOnly + vbExclamation, "警告"
Unload Me
frmManRecord.ShowTitle
frmManRecord.txtSQL = "select * from manrecord"
frmManRecord.ShowData
frmManRecord.ZOrder 0
End If
gintMode = 0
End Sub
Private Sub Form_Load()
Dim MsgText As String
Dim intCount As Integer
With cboItem
.AddItem "男"
.AddItem "女"
End With
If gintMode = 1 Then
Me.Caption = Me.Caption & "添加"
cboItem.ListIndex = 0
ElseIf gintMode = 2 Then
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = False Then
With mrc
For intCount = 0 To 2
txtItem(intCount) = .Fields(intCount)
Next intCount
If Not IsNull(!ygsex) Then
cboItem = !ygsex
End If
For intCount = 3 To 18
If Not IsNull(.Fields(intCount + 1)) Then
txtItem(intCount) = .Fields(intCount + 1)
End If
Next intCount
End With
txtItem(0).Enabled = False
End If
mrc.Close
Me.Caption = Me.Caption & "修改"
End If
mblChange = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
'MsgBox "realy want to quit?", vbOKOnly + vbExclamation, "quit"
End Sub
Private Sub txtItem_Change(Index As Integer)
'有变化设置gblchange
mblChange = True
End Sub
txtItem(Index).SelStart = 0
txtItem(Index).SelLength = Len(txtItem(Index))
End Sub
Private Sub txtItem_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
EnterToTab KeyCode
End Sub
注:运行时错误在这里出现; If mrc.EOF = False Then
MsgBox "已经存在此员工档案编号的记录!", vbOKOnly + vbExclamation, "警告"
txtItem(0).SetFocus
txtItem(0).SelStart = 0
txtItem(0).SelLength = Len(txtItem(0))
Exit Sub
End If
mrc.Close
End If
'先删除已有记录
txtSQL = "delete from manrecord where ygid='" & Trim(txtItem(0)) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
'再加入新记录
txtSQL = "select * from manrecord"
Set mrc = ExecuteSQL(txtSQL, MsgText)
mrc.AddNew
For intCount = 0 To 2
mrc.Fields(intCount) = Trim(txtItem(intCount))
Next intCount
mrc.Fields(3) = Trim(cboItem.Text)
For intCount = 3 To 18
mrc.Fields(intCount + 1) = Trim(txtItem(intCount))
Next intCount
mrc.Update
If gintMode = 1 Then
MsgBox "记录添加成功!", vbOKOnly + vbExclamation, "警告"
For i = 0 To 18
txtItem(i).Text = ""
mblChange = False
Next i
frmManRecord1.Show
frmManRecord1.ZOrder 0
frmManRecord.ShowTitle
frmManRecord.txtSQL = "select * from manrecord"
frmManRecord.ShowData
frmManRecord.ZOrder 1
Else
MsgBox "记录修改成功!", vbOKOnly + vbExclamation, "警告"
Unload Me
frmManRecord.ShowTitle
frmManRecord.txtSQL = "select * from manrecord"
frmManRecord.ShowData
frmManRecord.ZOrder 0
End If
gintMode = 0
End Sub