如何解决对象变量或with块未设置问题?

yuzhongsang2008 2008-11-29 11:26:20
我用adodc控件连接的数据库,要在数据库的学生表中插入一条记录,我该选什么命令呢?
命令类型:8-adcmdunknown,1-adcmdtext,2-adcmdtable,4-adcmdstroedproc
代码:
Private Sub Form_Load()
'Me.Move Screen.Width - 100, Screen.Height - 50
Adodc1.Recordset.AddNew [color=#FF0000]??执行到这儿就提示:对象变量或with 块变量未设置.[/color]


Private Sub 录入_Click()
On Error GoTo errMsg
If 班级.Text = "" Then

MsgBox "班别不能为空,请核实!", vbOKOnly + vbExclamation, "系统提示"
班级.SetFocus
Exit Sub
End If
'学号
If Text1.Text = "" Then
MsgBox "学号不能为空,请核实!", vbOKOnly + vbExclamation, "系统提示"
Text1.SetFocus
Exit Sub
End If
'Adodc1.RecordSource = "select * from 学生"
'Adodc1.Recordset.MoveFirst
'Do While Not Adodc1.Recordset.EOF
' If Text1.Text = Adodc1.Recordset.Fields("学号") Then
' MsgBox "学号重复,请重新输入!", vbOKOnly + vbExclamation, "退出询问"
' Text1.SetFocus
'Exit Sub
'End If
'Adodc1.Recordset.MoveNext
'Loop
'姓名
If Text2.Text = "" Then
MsgBox "姓名不能为空,请核实!", vbOKOnly + vbExclamation, "系统提示"
Text2.SetFocus
Exit Sub
End If
'电话
If Text3.Text = "" Then
MsgBox "电话不能为空,请核实!", vbOKOnly + vbExclamation, "系统提示"
Text3.SetFocus
Exit Sub
End If
Adodc1.Recordset("学号") = "& Text1.Text &"
Adodc1.Recordset("姓名") = "& Text2.Text &"
Adodc1.Recordset("性别") = "& sex.Text &"
Adodc1.Recordset("系别") = "& 所在系.Text &"
Adodc1.Recordset("专业") = "& 专业.Text &"
Adodc1.Recordset("电话") = "& 电话.Text &"
Adodc1.Recordset("年龄") = "& 年龄.Text &"
Adodc.Recordset.Update
Form_Load
'出错提示
errMsg:
If Err.Number <> 0 Then
MsgBox Err.Number & Err.Description, vbOKOnly + vbCritical, "出错提示"
End If
End Sub

谢谢各位的问答,急!

...全文
553 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
aohan 2008-11-30
  • 打赏
  • 举报
回复
对象变量或with块未设置问题


这种错误一般是回为对象未初始化造成


比如下面的语句

dim Rs as adodb.recordset

rs.addnew '这种情况就一定会出现上面的错误

解决这种问题要记住,对于对象,应该首先为其分配内存

所以应该写成

dim Rs as adodb.recordset

set rs=new recordset 或者

dim Rs as new ADOdb.recordset

由此基本可以判定你上面的问题出在哪里
zzyong00 2008-11-30
  • 打赏
  • 举报
回复
在Form_Load() 中用
Adodc1.Recordset.AddNew 
commandtype=2-adcmdtable
yachong 2008-11-30
  • 打赏
  • 举报
回复
Private Sub Form_Load()
Adodc1.Refresh '加上这句
Adodc1.Recordset.AddNew


如果给Adodc1绑定了其它控件就不会出现这个问题
clear_zero 2008-11-30
  • 打赏
  • 举报
回复
Private Sub Form_Load()
'Me.Move Screen.Width - 100, Screen.Height - 50
Adodc1.Recordset.AddNew

你可以设置一个break point然后把adodc1加入到watch里面去看看

你设置datasource了么?
yuzhongsang2008 2008-11-29
  • 打赏
  • 举报
回复
连接数据库是没问题的了.我保证,请大家帮忙解决!谢谢,各位!
Sandrer 2008-11-29
  • 打赏
  • 举报
回复
对象变量或with块未设置

这种情况一般是一个对象变量未被初始化而发生

例如:
Dim MyObj As Recordset
MyObj.Open(xxxx) '这里就会发生错误,因为MyObj未被初始化

Set MyObj = new Recordset ' 或者:Dim MyObj As New Recordset
MyObj.Open(xxxx) '这个就没问题
SYSSZ 2008-11-29
  • 打赏
  • 举报
回复
大部分这种情况是由于没有连接到数据库,没有打开网就对数据库或网页进行操作之类的问题引起,比如要操作数据库,就要先连接到数据库等
hpygzhx520 2008-11-29
  • 打赏
  • 举报
回复
Adodc1要有个初始化的过程,Form_Load中AddNew之前确保已经连接上数据库指定的表

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧