VB.NET NullReferenceException,“;对象引用未设置为对象的实例;当它看起来是
正如标题所示,我得到一个NullReferenceException,它表示“对象引用未设置为对象的实例”。这是我正在开发的一个遗留WinForms应用程序,请记住代码的结构不是我要做的。我试图在对记录集进行更改之前和之后对其进行比较。我在尝试复制旧记录集时遇到了问题 下面是我用来填充模块中旧数据副本的代码:VB.NET NullReferenceException,“;对象引用未设置为对象的实例;当它看起来是,vb.net,Vb.net,正如标题所示,我得到一个NullReferenceException,它表示“对象引用未设置为对象的实例”。这是我正在开发的一个遗留WinForms应用程序,请记住代码的结构不是我要做的。我试图在对记录集进行更改之前和之后对其进行比较。我在尝试复制旧记录集时遇到了问题 下面是我用来填充模块中旧数据副本的代码: Public Function Prevdata(ByRef table As ADODB.Recordset) As ADODB.Recordset Dim i As Integ
Public Function Prevdata(ByRef table As ADODB.Recordset) As ADODB.Recordset
Dim i As Integer
Dim pData As New ADODB.Recordset
table.MoveFirst()
If Not table.BOF And table.EOF Then
While Not table.EOF
For i = 0 To table.Fields.Count - 1
pData.AddNew()
pData(table.Fields(i)).Value = table.Fields(i).Value
Next
pData.Update()
table.MoveNext()
End While
End If
PrevData = pData
End Function
这是我在其中一个表格中的代码。这些只是文件顶部的其他变量声明。GetData只是简单地创建一个记录集:
Public pData As ADODB.Recordset = GetData(tableName)
Public pDataC As ADODB.Recordset = PrevData(pData)
我在PrevData中引用“表”的任何位置都会得到模块中的错误。非常感谢您的帮助。pData是一个没有任何字段的记录集。所以pData(table.Fields(i))总是会失败。@HansPassant,但我得到的错误是“table”不是对象引用。错误首先在table.MoveFirst()处触发。因此,您有多个错误,这种情况会发生。看起来您必须调试GetData(),它没有返回任何内容。像这样的字段初始值设定非常危险,在构造函数完成之前运行。@HansPassant我知道GetData是有效的,因为隔离它,我可以打印记录。这就是为什么我感到困惑。我可以访问pData,但pDataC有问题。