我有一个 SQL OleDbDataReader 从访问中获取数据到我的 Visual Basic 前端。是否有可能找到读者持有的记录数?因为我想用这个值来结束一个循环。
下面是我的代码。这部分用于查找数据以运行计算并将值重新插入访问。我目前正在使用批处理方法,因为我有超时错误指出代码在一次计算所有数据点以进行计算时花费了太长时间。下面的代码适用于第一批,但在第二批中失败,因为它无法查看阅读器中的下一部分数据。未来阅读器中的数据可能不会以正确的顺序排列,因此一次查看所有阅读器是最好的解决方案。要解决这个问题,我需要制作Do Until SearchCounter =
the length of the reader
. 我尝试将阅读器的内容放入数组中以查找其长度,但这非常耗时。任何其他建议将非常受欢迎。
For CalcParameterCounter = 0 To CalcParams.GetLength(0) - 1
ParamQuery = "ID_PAR = " & Format(CalcParams(CalcParameterCounter), "0")
conditions = ParamQuery ' & UploadQuery
DatabaseConnection("SELECT " & FieldNames & " FROM " & tablename & " WHERE " & conditions, "Read Recordset"
CalcDataRecordPointer = 0
Do Until rdrOLEDB.Read = False
SearchCounter = 0
Do Until SearchCounter = CalcData.GetLength(1)
CalcDataRecordPointer = CalcDataRecordPointer + 1
If CalcDataRecordPointer = CalcData.GetLength(1) Then CalcDataRecordPointer = 0
Value = rdrOLEDB.Item(1)
If CDate(rdrOLEDB.Item(0).ToString()) = CDate(CalcData(0, CalcDataRecordPointer)) Then
match = True
CalcData(CalcParameterCounter + 1, CalcDataRecordPointer) = rdrOLEDB.Item(1).ToString()
Exit Do
Else
match = False
End If
SearchCounter = SearchCounter + 1
Loop
Loop
'Close:
rdrOLEDB.Close()
cnnOLEDB.Close()
Next