vba - objects - Pasar el registro ADO actual a otra función
microsoft activex data objects 6.0 library download (3)
Lamentablemente, no ... no se puede extraer un solo registro de un conjunto de registros ... ya que G. Mastros dijo que no hay gastos indirectos adicionales que pasen todo el conjunto de registros por referencia y que trabajen con el registro actual, así que es mejor que lo haga así.
Quizás he pasado demasiado tiempo en .NET, pero parece extraño que no pueda pasar fácilmente el registro actual de un RecordSet ADO a otro método.
Private Sub ProcessData(data As ADODB.Recordset)
While (Not data.EOF)
ProcessRecord ([data.CurrentRecord]) '' <-- There is no CurrentRecord property.
data.MoveNext
Wend
End Sub
Private Sub ProcessRecord(singleRecord As ADODB.Record)
'' Do stuff.
End Sub
La escasa información que he encontrado sobre el tema dice que debe pasar todo el RecordSet o crear un nuevo registro y copiar manualmente cada campo.
StackOverflow, ¿hay una mejor manera?
Personalmente, pasaría todo el conjunto de registros a la subrutina ProcessRecord. Los conjuntos de registros siempre se pasan por referencia, por lo que no hay gastos generales (rendimiento o consumo de memoria) que pasen un conjunto de registros. Solo asegúrese de no pasar al siguiente registro en la subrutina ProcessRecord.
puede usar el método GetRows () para cargar los datos en una matriz y luego dejar que ProcessRecord solo funcione con la matriz, pero eso ''desconecta'' el método del conjunto de datos y puede que esto no sea lo que usted desea.
El método GetRows () toma argumentos opcionales para especificar cuántas filas obtener, dónde comenzar y los campos para obtener
Asi que:
ProcessRecord (data.GetRows (1, adBookmarkCurrent))
debería hacerlo para todos los campos