为什么和何时在Access VBA中声明新记录集时使用New关键字?

阿迪布·阿卡莱(Adib Akale)

之间有什么区别

Dim rs as New adodb.recordset

Dim rs as adodb.recordset

在什么情况下我想使用还是不使用New语句?对于上下文,我正在研究连接到SQL Server后端的ADODB访问应用程序。

马修·金登(Mathieu Guindon)

New关键字创建一个的对象的实例,此类型的ADODB.Recordset

一个对象变量在访问之前需要有一个引用,因此:

Dim rs As ADODB.Recordset
rs.Open "SELECT * FROM TableName"

...将在运行时因错误#91-“对象或未设置块变量”而爆炸。该消息的重要部分是“未设置”。

当您这样做时:

Dim rs As New ADODB.Recordset

您确实在做:

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

Set关键字用于分配一个参考给对象变量。


特别是关于ADODB.Recordset,我想您通常不想New建立一个记录集。相反,您将通过运行参数化来获得一个ADODB.Command(例如,当命令运行一条SELECT语句时,您将收到Recordset结果)。


我建议不要As New在过程范围内使用快捷方式。主要是因为:

Private Sub Test()
    Dim c As New Collection
    c.Add "Test"
    Set c = Nothing
    Debug.Print c.Count 'what happens here?
End Sub

如果您认为上面的代码因为访问c时不再“设置”而炸毁c.Count,那么您就被咬了。

此代码的行为符合预期:

Private Sub Test()
    Dim c As Collection
    Set c = New Collection
    c.Add "Test"
    Set c = Nothing
    Debug.Print c.Count 'what happens here? that's right, boom!
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在JavaScript中创建新对象时,何时需要括号和新关键字?

来自分类Dev

为什么和何时需要在MongoDB中重建索引?

来自分类Dev

为什么和/或何时避免使用intransitive()或not避免?

来自分类Dev

在JavaScript中创建新对象时,什么时候需要括号和新关键字?

来自分类Dev

为什么在创建数组时需要“ new”关键字?

来自分类Dev

为什么在创建数组时需要“ new”关键字?

来自分类Dev

在创建新的对象/类时,闭包可以使用new关键字,例如,区别是什么

来自分类Dev

尝试读取记录集字段时,为什么未定义Access VBA抛出子或函数?

来自分类Dev

在声明和方法中两次调用新关键字

来自分类Dev

为什么在调用函数时使用`go`关键字?

来自分类Dev

为什么和何时在asp.net中覆盖和使用OnPreRender

来自分类Dev

当可以重复使用“ do”时,为什么Lua中存在“ then”关键字?

来自分类Dev

从VBA,DoEvents中的Access处理“大”记录集

来自分类Dev

使用函数和“ new”关键字在Javascript中创建对象的设计的意图是什么?

来自分类Dev

MS Access 使用 vba 复制记录集

来自分类Dev

从泛型类继承时何时应使用new()关键字?

来自分类Dev

创建数组时何时需要使用“ New”关键字?

来自分类Dev

为什么没有新关键字声明为函数的变量未定义?

来自分类Dev

有什么理由不应该对C中的所有变量和函数声明使用“ volatile”关键字吗?

来自分类Dev

什么是何时使用Scala的forSome关键字?

来自分类Dev

当数据存在于 Access DB 中时,excel vba 中的记录集不返回任何内容

来自分类Dev

为什么在C#6.0中将内部“最终”和外部“何时”的执行顺序互换?

来自分类Dev

何时在R中使用missing和NULL值传递未定义的函数参数,为什么?

来自分类Dev

Grunt,Gulp.js和Bower之间有什么区别?为什么和何时使用它们?

来自分类Dev

为什么在Swift变量声明中使用关键字“ get”?

来自分类Dev

为什么我们不能在接口方法声明中使用synced关键字

来自分类Dev

为什么在Swift变量声明中使用关键字“ get”?

来自分类Dev

为什么不在类外部/顶部声明变量以避免使用此关键字?

来自分类Dev

关键字“新建”在VBA中起什么作用?

Related 相关文章

  1. 1

    在JavaScript中创建新对象时,何时需要括号和新关键字?

  2. 2

    为什么和何时需要在MongoDB中重建索引?

  3. 3

    为什么和/或何时避免使用intransitive()或not避免?

  4. 4

    在JavaScript中创建新对象时,什么时候需要括号和新关键字?

  5. 5

    为什么在创建数组时需要“ new”关键字?

  6. 6

    为什么在创建数组时需要“ new”关键字?

  7. 7

    在创建新的对象/类时,闭包可以使用new关键字,例如,区别是什么

  8. 8

    尝试读取记录集字段时,为什么未定义Access VBA抛出子或函数?

  9. 9

    在声明和方法中两次调用新关键字

  10. 10

    为什么在调用函数时使用`go`关键字?

  11. 11

    为什么和何时在asp.net中覆盖和使用OnPreRender

  12. 12

    当可以重复使用“ do”时,为什么Lua中存在“ then”关键字?

  13. 13

    从VBA,DoEvents中的Access处理“大”记录集

  14. 14

    使用函数和“ new”关键字在Javascript中创建对象的设计的意图是什么?

  15. 15

    MS Access 使用 vba 复制记录集

  16. 16

    从泛型类继承时何时应使用new()关键字?

  17. 17

    创建数组时何时需要使用“ New”关键字?

  18. 18

    为什么没有新关键字声明为函数的变量未定义?

  19. 19

    有什么理由不应该对C中的所有变量和函数声明使用“ volatile”关键字吗?

  20. 20

    什么是何时使用Scala的forSome关键字?

  21. 21

    当数据存在于 Access DB 中时,excel vba 中的记录集不返回任何内容

  22. 22

    为什么在C#6.0中将内部“最终”和外部“何时”的执行顺序互换?

  23. 23

    何时在R中使用missing和NULL值传递未定义的函数参数,为什么?

  24. 24

    Grunt,Gulp.js和Bower之间有什么区别?为什么和何时使用它们?

  25. 25

    为什么在Swift变量声明中使用关键字“ get”?

  26. 26

    为什么我们不能在接口方法声明中使用synced关键字

  27. 27

    为什么在Swift变量声明中使用关键字“ get”?

  28. 28

    为什么不在类外部/顶部声明变量以避免使用此关键字?

  29. 29

    关键字“新建”在VBA中起什么作用?

热门标签

归档