Imprimir página | Cerrar ventana

Pasar datos de subformulario a combo de otro subfo

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85751
Fecha de impresión: 18/Abril/2024 a las 10:52


Tema: Pasar datos de subformulario a combo de otro subfo
Publicado por: Juan
Asunto: Pasar datos de subformulario a combo de otro subfo
Fecha de publicación: 21/Enero/2021 a las 16:35
Hola a todos

A título informativo (si la respuesta es positiva agradezco pistas) me gustaría saber si es posible enviar datos desde un subformulario “A” al ID de un combo situado en otro Subformulario “B” de modo tal que al recibir el valor se situara en un registro nuevo del subformulario "B" e hiciera la misma operación que hace el combo cuando manualmente se elige un valor nuevo.

En la actualidad cuando se produce una situación determinada en el subformulario “A” aparece una alarma en un cuadro de texto del formulario Principal con el valor de ID. Vista la alarma, manualmente, voy al combo del subfrmulario “B” e introduzco el valor deseado de ID en un registro nuevo rellenando todos los campos establecidos en el combo. Buen pues quiero saber si esto es posible automatizarlo.

Muchas Gracias



-------------
jj



Respuestas:
Publicado por: Juan
Fecha de publicación: 22/Enero/2021 a las 07:21
Hola a todos
Creo que la respuesta a la pregunta que planteo es afirmativa y estoy tratando de obtener lo que planteo.
Para no mezclar temas, propongo que se cierre este hilo e iré abriendo otro/s con solicitud de ayuda para casos concretos.
Buenos días
Juan


-------------
jj


Publicado por: mounir
Fecha de publicación: 22/Enero/2021 a las 08:58
Hola!

Es fundamental manejar http://www.llodax.com/Tutoriales/SintaxisSubForms.htm" rel="nofollow - este esquema trabajar con dos subformularios en un formulario común.



-------------
Un Saludo.


Publicado por: Juan
Fecha de publicación: 22/Enero/2021 a las 14:51
Hola Mounir
Ese esquema lo "conozco" pero no del todo
Déjame un  tiempo en ensayar algunas cosas y contesto. Ahora precisamente estoy muy liado
Gracias
Juanjo


-------------
jj


Publicado por: Juan
Fecha de publicación: 22/Enero/2021 a las 17:00
Hola mounir
Perdon el retraso, esto es lo que te puedo adelantar.

Esquema:

Formulario Ppal (único) frmAfiliacion con su IDAfiliacion

Subformulario1 (continuo) SubAux(continuo) con IDAux relacionado con IDAfiliacion

Sufformulario2 (continuo) SubfrmTarifas con IDTarifa relacionado con IDAfiliacion

Objetivo:

Tomar el valor del campo  “NumReg”de SubAux, ponerle un condicional y transformarle en otro que se llevará al “combo48” que está situado en el SubfrmTarifas.

Lo hecho hasta ahora:

Lo hago por partes para ver que funciona cada una y luego veré la forma de enlazarlas para que la operación sea totalmente automática.

En el Principal “frmAfiliacion” tengo los campos Texto343 y Texto 452 que reciben la información deseada de SubAux mediante el siguiente código:

Private Sub DNIaux_Exit(Cancel As Integer)

Forms!frmAfiliacion!Texto343 = Me.Reg

If Me.Reg > 2 Then

Forms!frmAfiliacion!Texto452 = 10

Else

Forms!frmAfiliacion!Texto452 = 0

End If

End Sub

Luego con un botón provisional para hacer pruebas pongo el código que viene a continuación .(Más tarde buscaré el evento adecuado para no depender del botón, algo he intentado y no he conseguido nada por ahora). 

 Una vez el valor  del “Texto452” en el Ppal “frmAfiliacion” lo intento pasar al IDTarifa del “combo48” en un un registro nuevo que está en el “SubfrmTarifas” mediante el siguiente código:

Private Sub Comando454_Click()

If (IsNull(Forms!frmAfiliacion![Texto452])) Then

Exit Sub

Else

Dim rst As Object

Set rst = Me.SubfrmTarifas.Form.RecordsetClone

If Not rst.EOF Then

rst.MoveNewRec

Me.SubfrmTarifas.Form.Bookmark = rst.Bookmark

End If

Set rst = Nothing

Me!SubfrmTarifas.Form![Combo48] = Me.Texto452

End If

Me.SubfrmTarifas.Requery

End Sub

Aquí me da Error 438 en tiempo de ejecución, el objeto no admite esta propiedad  o método

Y se para en rst.Moven eNewRec. Sin embargo si sustituyo esta línea por rst.MoveLast, funciona pero va al último registro no al nuevo como quiero.

Un saludo y muchas gracias

Juan




-------------
jj


Publicado por: mounir
Fecha de publicación: 22/Enero/2021 a las 19:24
Hola!

No hace falta utilizar recordsetclone para hacerlo, te basta mandar el foco al subformulario, nuevo registro y pasar el valor:-

Private Sub Comando454_Click()

If (IsNull(Forms!frmAfiliacion![Texto452])) Then

Exit Sub

Else

Me.SubfrmTarifas.SetFocus
DoCmd.GoToRecord , , acNewRec
Me.SubfrmTarifas.Form.[Combo48] = Me.Texto452
End If


Nos comentas

Una vez conseguido intentas hacerlo directamente de un subformulario a
otro subformulario






-------------
Un Saludo.


Publicado por: Juan
Fecha de publicación: 22/Enero/2021 a las 19:36
Hola Mounir
Funciona perfectamente
Vamos a pasar directamente de subformulario a subformulario
Ten paciencia ya que esta parte, a pesar de tener el esquema, sé que me va a resultar difícil pero lo voy a intentar ya que esta es la solución ideal
Muchas gracias
Nota: Por favor cerrar el otro hilo que trata de esta asunto ya resuelto aquí


-------------
jj


Publicado por: Juan
Fecha de publicación: 22/Enero/2021 a las 20:35
Hola mounir
No funciona, he puesto
Private Sub DNIaux_Exit(Cancel As Integer)
If Me.Reg > 2 Then
Me.Texto29 = 10
Else
Me.Texto29 = 0
End If
 Me.Texto29!SubAux.Form!SubformTarifas.Form! Combo48
End Sub

Siendo:
DNIAux=Campo que necesariamente hay que rellenar
Reg = Cuenta de nº de registros
Texto29=Campo creado para la ocasión
Todos estos en el subformulario2 "SubAux"
Combo48= Combo situado en el Subformulario1 "SubfrmTarifas" y es el destinatario del valor del texto29
Al ejecutar me sale:
Error 13; no coinciden los tipos


-------------
jj


Publicado por: mounir
Fecha de publicación: 22/Enero/2021 a las 21:23
Hola!

Debería funcionar así:-

Me.SubfrmTarifas.Form.[Combo48] = Me.SubAux.Form.Texto29

-------------
Un Saludo.


Publicado por: Juan
Fecha de publicación: 22/Enero/2021 a las 22:06
Hola!
Da error de compilación, no se  encontró el método o el dato miembro
se resalta :
Me.SubfrmTarifas.Form.[Combo48] = Me.SubAux.Form.Texto29

Saludos


-------------
jj


Publicado por: emiliove
Fecha de publicación: 22/Enero/2021 a las 22:53
Por que no dejas que te ayude access, por ejemplo en Propiedades del Combo48 del SubfrmTarifas en origen del control le das a los tres puntos y te abre el generador de expresiones lo dejas en blanco y buscas El formulario, después el control y dos click al control y ya lo tienes.

Saludos.


Publicado por: mounir
Fecha de publicación: 22/Enero/2021 a las 23:00
Hola!

Hay que jugar con las opciones que ofrecen, probamos así:

Me.SubfrmTarifas.Form.[Combo48] = Me.Parent!SubAux.Form.Texto29

-------------
Un Saludo.


Publicado por: Juan
Fecha de publicación: 23/Enero/2021 a las 06:38
Buenos días!
Como bien dices y jugando con las opciones, vemos que funciona así:

Me.Parent!SubfrmTarifas.Form.[Combo48] = Me.Parent!SubAux.Form.Texto29

Muchas gracias mounir, sin tu ayuda no lo hubiera resuelto
Saludos
Juan
Nota: Por mi parte podéis quitar el hilo



-------------
jj


Publicado por: Juan
Fecha de publicación: 23/Enero/2021 a las 06:42
Hola de nuevo
Al abrir el hilo solo me había fijado en el último mensaje, el de mounir, perdona Emilove no te había visto. Tomo nota de tu propuesta para mi formación
Un saludo a tod@s
Muchas gracias Emilove


-------------
jj


Publicado por: Juan
Fecha de publicación: 23/Enero/2021 a las 07:09
Hola de nuevo
Con esta opción

Me.Parent!SubfrmTarifas.Form.[Combo48] = Me.Parent!SubAux.Form.Texto29

Me rellena los valores en el primer registro y yo los quiero en un registro nuevo
Solicito ayuda
Por favor, no cerréis el hilo
Gracias


-------------
jj


Publicado por: Juan
Fecha de publicación: 23/Enero/2021 a las 07:39
Hola otra vez
Ha quedado resuelto así

Me.Parent!SubfrmTarifas.SetFocus
DoCmd.GoToRecord , , acNewRec

Me.Parent!SubfrmTarifas.Form.[Combo48] = Me.Parent!SubAux.Form.Texto29

Ahora sí podéis quitar el hilo. Si tuviera alguna duda más abriría uno nuevo
Muchas gracias
Juan


-------------
jj


Publicado por: Juan
Fecha de publicación: 25/Enero/2021 a las 09:05
Hola a tod@s
Perdón por la tardanza en responder.
Gracias a la ayuda de mounir en otro hilo con asunto parecido (quiero recordar que por error quedaron abiertos dos hilos con asuntos parecidos) el tema ha quedado resuelto así:

Me.Parent!SubfrmTarifas.SetFocus
DoCmd.GoToRecord , , acNewRec

Me.Parent!SubfrmTarifas.Form.[Combo48] = Me.Parent!SubAux.Form.Texto29

Muchas gracias, ya de puede quitar el hilo
Juan


-------------
jj



Imprimir página | Cerrar ventana