Pasar un registro completo a una funcion

30/04/2010 - 12:00 por Bluey | Informe spam
Hola de nuevo, no se si esto se puede hacer. Tengo un procecimiento que
recorre una tabla y procesa sus registros. Dependiendo del tipo de registro
que sea llama a una funcion o a otra y le pasa un monton de valores de
campos de ese registro y me surge la duda de si se puede pasar un registro
de un recordset a una funcion y que en la funcion tome lo que necesita ¿se
puede hacer esto'

Gracias



__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 5074 (20100430) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com

Preguntas similare

Leer las respuestas

#1 Juan M. Afan de Ribera
30/04/2010 - 14:45 | Informe spam
Hola,

bueno, me imagino que habrán diferentes maneras de hacer eso que comentas.
Como hablas de un recordset y sus campos pueden ser de diferentes tipos de
datos, creo que lo más conveniente es que utilices un objeto colección, el
cual admite todo tipo de datos y no tiene por qué tener una dimensión
definida (si utilizas un array debes ir redimensionandolo de manera dinámica
y no es tan flexible, la verdad. Te pongo un ejemplo, aunque no utilizo
ningún recordset, de un procedimiento que lista los nombres de las tablas de
la base actual y, a través de una función lista a su vez los nombres de las
columnas de esas tablas. Cada tabla puede tener los campos que tenga. A esta
función se le pasa como argumento un objeto colección y luego, declarando una
variable tipo variant, puedes recorrer esa colección con el método For
Each Next, que es muy cíomodo, la verdad.

El código:

Sub ListarTablas()
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim col As Collection

For Each tdf In CurrentDb.TableDefs
Set col = New Collection
Debug.Print tdf.Name
For Each fld In tdf.Fields
col.Add fld.Name
Next
Call ListarColumnasTablas(col)
Set col = Nothing
Next

End Sub

Function ListarColumnasTablas(colNombres As Collection)
Dim item As Variant

For Each item In colNombres
Debug.Print "- "; item
Next

End Function
Saludos desde Barcelona,
Juan M. Afán de Ribera
http://accessvbafaq.mvps.org


"Bluey" wrote:

Hola de nuevo, no se si esto se puede hacer. Tengo un procecimiento que
recorre una tabla y procesa sus registros. Dependiendo del tipo de registro
que sea llama a una funcion o a otra y le pasa un monton de valores de
campos de ese registro y me surge la duda de si se puede pasar un registro
de un recordset a una funcion y que en la funcion tome lo que necesita ¿se
puede hacer esto'

Gracias



__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 5074 (20100430) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com




.

Respuesta Responder a este mensaje
#2 Patxi Sanz
30/04/2010 - 17:47 | Informe spam
Una pregunta: ¿y por qué no pasas la colección Fields del Recordset
directamente?

Function MiFuncion(LosCampos As DAO.Fields) As LoQueSea
...
End Function

Un saludo,


Patxi Sanz
Tudela (NA)
http://www.pasa.es.tt/
Respuesta Responder a este mensaje
#3 Juan M. Afan de Ribera
01/05/2010 - 10:59 | Informe spam
Jejeje,

pensándolo bien, pero eso ya será decisión suya, se le puede pasar también
el recordset entero, dependerá de si tiene necesidad de ello... pero
pensándolo mejor tal vez lo que el necesite sea el método GetRows del
recordset que devuelve el número de filas que se le diga. Ejemplo:

Call TuFuncion(Recordset.GetRowsnúmero_registros))

en la función que ha de recibir ese argumento, se puede definir el argumento
como variant

Saludos desde Barcelona,
Juan M. Afán de Ribera
http://accessvbafaq.mvps.org


"Patxi Sanz" wrote:

Una pregunta: ¿y por qué no pasas la colección Fields del Recordset
directamente?

Function MiFuncion(LosCampos As DAO.Fields) As LoQueSea

End Function

Un saludo,


Patxi Sanz
Tudela (NA)
http://www.pasa.es.tt/

.

Respuesta Responder a este mensaje
#4 Patxi Sanz
01/05/2010 - 17:39 | Informe spam
La diferencia es que en la colección Fields sólo están los campos y datos
del registro activo en el Recordset, no todos ;-)

Aunque como bien indicas, la decisión es de Bluey.

Un saludo,


Patxi Sanz
Tudela (NA)
http://www.pasa.es.tt/
Respuesta Responder a este mensaje
#5 Juan M Afan de Ribera
03/05/2010 - 09:40 | Informe spam
Hola,

no se si es que ayer por la noche ya estaba medio dormido y no llegué a
enviar un mensaje a este hilo, pero no lo veo publicado...

A grosso modo, decía ayer en ese mensaje que no veo por ningún lado, que en
realidad, cuando pasamos el recordset a una función sólo estamos enviando un
puntero al objeto Recordset, no todos los datos. En fin, esto es un resumen
de lo que decía ayer.

¿Qué le pasa al foro de microsoft.public.es access? ¿Va siempre así de mal?
¿No se puede hacer nada al respecto?

Juan M. Afan de Ribera
http://accessvbafaq.mvps.org

"Patxi Sanz" <patxisanz[ARROBA]yahoo[PUNTO]es> ha escrit en el missatge dels
grups de discussió:
La diferencia es que en la colección Fields sólo están los campos y datos
del registro activo en el Recordset, no todos ;-)

Aunque como bien indicas, la decisión es de Bluey.

Un saludo,


Patxi Sanz
Tudela (NA)
http://www.pasa.es.tt/
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida