JoinRS

 Principal Novedades Utilidades Código Enlaces Access Acerca de mí

     
 
Principal
Arriba

 

 

 

 

 

 

 

 

 

 

 

 

 

 

JoinRS
      En ocasiones necesitamos trasladar todos los registros de una columna de un recordset a un sólo campo de texto, separando los distintos elementos con un carácter, un estilo a lo que hace Join() con los valores de una matriz. Las soluciones que se suelen dar a esto habitualmente consisten en recorrer el recordset e ir concatenando los valores en una cadena de texto, lo que penaliza doblemente la eficacia de la función, primero por ir recorriendo el recordset y, segundo, por usar concatenación de   variables, pues ambas cosas son grandes consumidoras de recursos.

      El método aquí propuesto utiliza GetRows() para cargar los valores del campo en todos los registros en una matriz de una sola vez, invierte filas y columnas en una matriz para poder trabajar con ella y, finalmente, traslada el resultado a una cadena de texto utilizando Join().

'---------------------------------------------------------------------------------------
' Procedure : JoinRS
' DateTime  : 25/09/04
' Author    : José Bengoechea Ibaceta (Chea)
' Purpose   : Devuelve una cadena de texto con todos los valores del campo NombreCampo
'           : en el recordset RS, separados con Separador
'            Estás autorizado a utilizar este código dentro de una aplicación
'            siempre que esta nota de autor permanezca inalterada.
'            En el caso de querer publicarlo en una página Web, por favor,
'            contactar con el autor en
'
'                 UA@bengoechea.net
'---------------------------------------------------------------------------------------
Public Function JoinRS(rs As ADODB.Recordset, NombreCampo As Variant, Separador _
    As String) As String
Dim stTemp As String, v As Variant, i As Integer
v = rs.GetRows(, , NombreCampo)
ReDim matriz(UBound(v, 2)) As Variant
For i = 0 To UBound(v, 2) - 1
    matriz(i) = v(0, i)
Next i
stTemp = Join(matriz, Separador)
JoinRS = stTemp
End Function