首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

出现异常"对象变量未设置或With块变量未设置"

2012-01-10 
出现错误对象变量未设置或With块变量未设置已经有人发个这个贴了,但我还是没有解决问题,http://topic.cs

出现错误"对象变量未设置或With块变量未设置"
已经有人发个这个贴了,但我还是没有解决问题,
http://topic.csdn.net/t/20030824/08/2181702.html

源代码链接:http://www.downcode.com/downcode/j_2133_2c98e50a.shtml

初学者,请多多指教~



[解决办法]
1、定义mrc的时候加上new关键字
set mrc=new adodb.recordset
2、确保mrc确实被装载数据了
在执行查询之后判断记录集的状态
if mrc.state = adstateclosed then
msgbox "查询失败 "
endif
[解决办法]
Set ExecuteSQL = rst rst 为局部变量,过程结束就消失了,


Set mrc = ExecuteSQL(txtSQL, MsgText) MRC也就没有意义了,是空!!!
建议Set ExecuteSQL = rst
用公共变量接收返回
[解决办法]
出现这种情况有几种可能
1、在工程/引用 中没有引用ado(miscrosoft Activex data objects 2.x library)
2、数据源不对,也就是你的连接数据库的字符串不对
3、你的sql语句不对
最好的方法是设置断点或单步执行(F8)看看是什么问题

在说 If mrc.EOF = True Then 这句话完全可以用
if mrc.recordcount <1 then 来代替
[解决办法]
楼主的这本书我好像买过
把Dim mrc As ADODB.Recordset改成Dim mrc As New ADODB.Recordset也是可以的
不过还得手工在ODBC中配置DSN
如果不配置DSN那么改连接字串也是可以的
[解决办法]
先把 On Error GoTo ExecuteSQL_Error 这句删掉,看看执行ExcuteSql函数的时候是否发生了错误
如果这个函数里面发生了错误,就会执行到
ExecuteSQL_Exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
这几句,然后肯定会造成楼主描述的错误
[解决办法]
楼主的数据库连接字符串有问题
Public Function ConnectString() _
As String
'returns a DB ConnectString
ConnectString = "FileDSN=studentinfo.dsn;UID=sa;PWD= " (问题在这里,没有studentinfo.dsn文件)
End Function
建议写成
ConnectString = "Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User ID=sa;Initial Catalog=studentinfo;Data Source=localhost "

当然,服务器名和口令 用户可以自己用变量代替

最后这个function修改为

Public Function ConnectString() As String
ConnectString = "Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User ID=sa;Initial Catalog=studentinfo;Data Source=localhost "
End Function

热点排行