Utilizar un Recordset en una función pública.

03/03/2014 - 11:37 por Toni | Informe spam
Buenas de nuevo,

Office 2007.

He diseñado una función pública en un formulario continuo que realiza diferentes acciones y calculos sobre tablas temporales, a partir de los registros del formulario, que captura con un recordset rst = me.recordset.

Ahora me doy cuenta que esta misma instrucción me podria servir en otras partes de la base de datos, en otros formularios.

He intentado pasar esta función pública a un mòdulo, para poder llamarla desde otros formularios, però el origen del recordset da un error.

Como puedo resolver esta duda sin tener que copiar toda la instrucción en cada formulario?

Muchas gracias

Preguntas similare

Leer las respuestas

#1 José Mª Fueyo
03/03/2014 - 12:58 | Informe spam
Hola
¿Que error te da? ¿podrías poner el código para verlo?

Salu2
José Mª Fueyo
[MS MVP Access]
Respuesta Responder a este mensaje
#2 Toni
04/03/2014 - 09:11 | Informe spam
El error es el siguiente:

Error de compilación. El uso de la palabra clave Me no es válido.


El código en el formulario:

Private Sub CmdInfInsp_Click()
Dim sFormName As String
sFormName = "Historial_Pral"
ObrirInformes (sFormName)
End Sub


Y el código ObrirInformes:

Public Sub ObrirInformes(sForm As String)
Dim rst As Recordset
...
Set rst = Me.Recordset
...
Set rst = Nothing
End Sub



El dilluns 3 de març de 2014 12:58:41 UTC+1, José Mª Fueyo va escriure:
Hola

¿Que error te da? ¿podrías poner el código para verlo?



Salu2


José Mª Fueyo

[MS MVP Access]
Respuesta Responder a este mensaje
#3 José Mª Fueyo
04/03/2014 - 11:08 | Informe spam
Hola
No puedes usar Me en un módulo externo. Me, si miras en la ayuda, se refiere al propio objeto contenedor (los módulos asociados al formulario son módulos de clase, usados para definir objetos).
Podrías pasar por ejemplo el nombre del formulario, y utilizar la colección forms para seleccionar el formulario desde el cual quieres usar esa función/método.

Forms(NombrePasadoComoParametro).Recordset

etc...

Salu2
José Mª Fueyo
[MS MVP Access]
Respuesta Responder a este mensaje
#4 José Mª Fueyo
05/03/2014 - 11:24 | Informe spam
Hola de nuevo
Se me ha ocurrido, que también podrías declarar un argumento de la función/procedimiento de tipo DAO.Recordset, y al llamarlo desde el formulario pasarle Me.Recordset

public Function MiPrueba(MiRS as DAO.Recordset)
...
Ene Function

Dentro del módulo del formulario:

dim MiResultado
MiResultado=MiPrueba(Me.Recordset)

Salu2
José Mª Fueyo
[MS MVP Access]
Respuesta Responder a este mensaje
#5 Toni
10/03/2014 - 14:48 | Informe spam
Gracias Jose Mª,

De nuevo una pregunta relacionada. En esa misma función quiero declarar dos variables:

Public Sub ObrirInformes(sFormRecordset As String, sReport As String)


Para poder abrir diferentees informes con los datos de diferentes formularios.

Però me da un error de compilación en la linea de la rutina que llama a la función:

Private Sub CmdInfInsp_Click()
Dim sFormName, sReportName As String
sFormName = "OVPLocalitzador"
sReportName = "Historial_Pral"

ObrirInformes (sFormName, sReportName)
End Sub


El error és 'de compilación. Se esperaba: = '

Porqué no puedo llamar a esta función con dos variables?

Gracias
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida