Parámetros a un subformulario

Para que se hagan una idea estoy con un formulario en que podemos seleccionar el cliente, y según sea la elección pretendo que en un subformulario me aparezcan todas las visitas que ha realizado el cliente.. Pero no consigo pasar un parámetro al subformulario, en cambio si fuera otro formulario aparte en lugar de un subformulario si me funcionaria (con docmd.openform "frmhistorico,,, [idusuario=valor de leccion]), la pregunta es... ¿como puedo pasar un parámetro a un subformulario?

1 respuesta

Respuesta
1
Huy si tienes razón se me olvide decirte que como era un subformulario, debo invocar la propiedad Form, antes del RecordSource, entonces seria:
[Subformulario historial2].Form.RecordSource = valores
Disculpa..
Si por acaso no te acepta el nombre del subformulario, utiliza el objeto Me. Y al colocarle punto buscalo, cuando nombreas un objeto con espacios, access le colcoa barra de piso..
Att:telemaco
Trbajando con codigo, seria asi, al seleccionar el cliente, en el evento despues de actualizar (AfterUpdate) generamos la consulta, en que se basara el subformualrio, para esto ve a propiedades del control del cuadro combinado donde seleccionas el cliente, ve a eventos y selecciona despues de actualizar, da click en el boton de los puntos suspensivos, y en el cuadro selecciona Generador de codigo, y entraremos a programar:
Ahora colocaremos este código, para el ejemplo diré que el cuaro combinado donde seleccinas el cliente se llama CmbCliente, y el subformulario se llama FrmVisitas... ahora este subformulario se alimentara de una tabla llamada visitas, donde tendrá el cod_cliente(código cliente) que es por donde se filtrara, entonces el código quedaría algo así:
**************************
Private Sub Cmbcliente_AfterUpdate()
If Not IsNull(CmbCliente) then
SQL = "SELECT * FROM VISITAS WHERE cod_cliente = " & CmbCliente & ";"
FrmVisitas.RecordSource = SQL
FrmVisitas.requery
End If
End Sub
***********************
A ver revisemos el código:
Debo preguntar si no esta nulo el cuadro combinado, ya que me podria generar error:
If Not IsNull(CmbCliente) then
Ahora realizo la consulta, basandome en el cliente (cod_cliente) del cuador combinado:
SQL = "SELECT * FROM VISITAS WHERE cod_cliente = " & CmbCliente & ";"
OJO: Hay que tener en cuanta el tipo de datos del campo donde se igualara, aquí suponemos que es numérico por eso iría:
" & CmbCliente & "
Si fuera texto antes de las comillas dobles (las primeras iría comilla sencilla) y después de las comillas dobles finales:
'" & CmbCliente & "'
Ahora esta consulta la ammaro al subformualio con la propiedad RecordSource (origen del registro) con la consulta:
FrmVisitas.RecordSource = SQL
Ahora actualizo el subformulario para que me muestre los nuevos datos
FrmVisitas. Requery
Att:telemaco
Hola otra vez... ante todo gracias po la aclaración, pero ahora tengo el problema que el subformulario no acepta el recordsource, el código que tengo es:
'defino variables
Dim codigopa As Integer
Dim valores As String
'inicializo
codigopa = 0
'segun sea el valor del campo bsco el id de usuario
sqlstr = "select datos.codpaciente from datos where datos.apellidos= '" & Me![cuadro combinado2] & "' and datos.nombre='" & Me![cuadro combinado4] & "'"
Set dbs = CurrentDb
Set rst = dbs.openrecordset(sqlstr)
codigopa = rst.codpaciente
'ahora realozao la busqueda que me dijo, tabla evolutivo y el campo de usuario es codpaciente
valores = "SELECT * FROM evolutivo where evolutivo.codpaciente=" & codigopa & " order by evolutivo.fecha"
Y al llegar a esta linea no acepta el Recordsource del subformulario llamado [subformulario historial2]
[Subformulario historial2].RecordSource = valores
[Subformulario historial2].Requery
¿Por qué...?
Gracias...
Gracias..
Muchísimas gracias, me has resuelto una cosa a la que le llevo dando vueltas hace casi dos semanas... y me estas quedando el formulario bien...
Gracias de nuevo...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas