关于VB方法返回值为值类型时,出现要求对象的理解
2013-03-26 15:56
344 查看
今天写代码时,要写一个带返回值的方法,如下:
当调用这个方法时,弹出 编译错误,要求对象的错误框。
从网上找了好久,也没找到类似的问题,
刚开始以为是
cmd.Execute (lngRecs)
的错误,以为是类型定义出错了。
后来把
cmd.Execute (lngRecs)
注释掉后,把红色部分的代码随便赋了一个整形值,
执行程序,还是错误。
后来 想到返回值为Long,是值类型,不是对象类型,所以应该不用Set,
把Set去掉之后,调用方法,成功!
结论:
只有对象类型的变量赋值才用Set,值类型的变量可以直接赋值。
也就是说只有能New的类型才能用Set。
vb中set语句的意思就是:将对象引用赋给变量或属性。
dim a as recordset '声明对象句柄
set a = new recordset '给对象分配内存空间,实例化、创建新的对象。
set之后a才可以使用。
dim b as Long '声明Long类型变量,
声明之后就可以使用。
'更新数据库操作 Public Function ExecuteCommand(ByVal strSql As String, _ ByVal dbcn As ADODB.Connection, _ Optional ByVal cmdType As ADODB.CommandTypeEnum = adCmdText _ ) As Long '截获错误 On Error GoTo Err1 Set cmd.ActiveConnection = dbcn With cmd .CommandText = strSql .CommandType = cmdType End With '必须设置一个RecordSet类型的对象来接收,否则lngRecs的返回结果不正确 Set rs = cmd.Execute(lngRecs) Set ExecuteCommand = lngRecs Exit Function '错误处理'增加这行(必须增加) Err1: MsgBox "出现异常错误:" & vbCrLf & "错误编号:" & Err.Number & " 错误描述:" & Err.Description '返回出错语句的下一句继续执行余下的代码 Resume Next End Function
当调用这个方法时,弹出 编译错误,要求对象的错误框。
从网上找了好久,也没找到类似的问题,
刚开始以为是
cmd.Execute (lngRecs)
的错误,以为是类型定义出错了。
后来把
cmd.Execute (lngRecs)
注释掉后,把红色部分的代码随便赋了一个整形值,
执行程序,还是错误。
后来 想到返回值为Long,是值类型,不是对象类型,所以应该不用Set,
把Set去掉之后,调用方法,成功!
结论:
只有对象类型的变量赋值才用Set,值类型的变量可以直接赋值。
也就是说只有能New的类型才能用Set。
vb中set语句的意思就是:将对象引用赋给变量或属性。
dim a as recordset '声明对象句柄
set a = new recordset '给对象分配内存空间,实例化、创建新的对象。
set之后a才可以使用。
dim b as Long '声明Long类型变量,
声明之后就可以使用。
相关文章推荐
- 关于Javascript与表单结合时出现"对象不支持此属性或方法"的问题总结(不断更新中...)
- 关于JSON转换为对象时出现的:数据协定类型 “***”无法反序列化,因为未找到必需的数据成员 **(字段名)
- 关于FreeMarker获取一个对象中另一个对象出现的问题以及解决方法
- 关于C++中string对象向int、float、double类型的转换的方法汇总
- 关于jquery html()方法获取带有OBJECT标签的元素内容时,出现“类型不匹配。”的解决办法
- js中精确判断对象类型--关于typeof 和Object.prototype.toString方法的区别
- .net 关于JSON转换为对象时出现的:数据协定类型 “***”无法反序列化,因为未找到必需的数据成员 **(字段名)
- 关于android编程的curso对象 moveToNext()方法的一些理解
- C++11 理解 (二十八) 之 用于计算函数对象返回类型的统一方法
- c#关于int(或其他类型)的字段在对象初始化时默认初始化问题的解决方法
- jsp中遇到Integer的方法valueOf()和parseInt()的区别.前者要求是对象类型,后者是数字型字符串
- 面向对象的编程:关于对象的 属性、方法和事件 的理解
- 一道理解c#中对象(引用类型)相互赋值和方法覆盖(overriding)的题目
- 关于Java两种同步方法的理解(代码块级同步对象设置)
- 写一个方法,参数接收一个String类型的对象,最终可以把这个字符串参数中出现过的每一个字母打印出来 例如: "wwqweqdasdafdsfdsferer" 将来方法接收这个参数后会打印:
- 第二章.一切都是对象之作用域、方法、参数、返回值、新类型
- 关于使用ASP.NE 1.1发送电子邮件时出现的 未能访问“CDO.Message”对象 的错误的解决方法
- 关于Java中方法重写的访问修饰符和返回值类型的限制
- 关于 取得对象类型的方法
- java关于类方法返回值是对象以及空返回的区别