Imprimir página | Cerrar ventana

Cuadro lista a subformulario

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=86656
Fecha de impresión: 27/Marzo/2026 a las 06:44


Tema: Cuadro lista a subformulario
Publicado por: maxpro
Asunto: Cuadro lista a subformulario
Fecha de publicación: 06/Abril/2023 a las 19:02
Hola, buenas tardes!

He probado y escrito miles de códigos (literal) y se me acabaron las ideas, quizas sea simple y yo me la complico.

Tengo un cuadro lista donde están todos los productos en existencia, con un filtro que anda bastante bien, lo que deseo en este caso es que al hacerle doble click al producto deseado me lo inserte en otro formulario de venta rápida, en realidad en el subformulario que es continuo, obviamente sin reemplazarlo en caso que ya haya elegido otro, Las complicaciones que he tenido con cada código creado, sinceramente me parece algo facil pero la estoy haciendo dificil creo, los problemas que he tenido son:
1) Carga los datos pero al no colocarle el Id automaticamente no se muestran en el Subform, si en la tabla pero sin su Id correspondiente.
2) Me abre una copia de subform en una forma individual, tampoco carga el Id, no me sirve
3) Me carga los datos sin el Id y crea 4 campos vacios entre cada uno.
Y asi varios problemas mas.

EDITO: Cabe aclarar que los dos formularios están abiertos al momento de ejecutar el codigo

Ya no se me ocurre mas nada, alguien sabe alguna forma de hacer esto??

Saludos


-------------
-------Maxpro-------

San Luis - Argentina



Respuestas:
Publicado por: xavi
Fecha de publicación: 06/Abril/2023 a las 19:46
Hola,

Te voy a decir como lo probaría yo:

- Enfocar el subformulario del segundo formulario con algo parecido a esto:
Forms!ElOtroFormulario.Controls("ElSubForm").Form.SetFocus
- Ir a un nuevo registro:
DoCmd.GoToRecord , Me.NewRecord
- Pasarle el Id del Producto que se supone es el valor de la columna dependiente del ListBox al control adecuado del formulario
Forms!ElOtroFormulario.Controls("ElSubForm").Form.Controls("elIdProducto") = Me!lstProducto


Otra opción podría ser insertar el registro con una consulta y actualizar el subformulario

En cualquier caso está un poco complicado dar más posibilidades sin saber lo que has hecho y lo que no.

Un saludo





-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: maxpro
Fecha de publicación: 06/Abril/2023 a las 20:36
Hola Xavi, este es uno de los codigos que pense que funcionaria pero no!

Private Sub Lista1_DblClick(Cancel As Integer)
    Dim Id As Long
    Dim producto As String
    Dim Precio As Double
    
    ' Obtener los valores de los campos de la fila seleccionada en la lista
   
    Id = CLng(Me.Lista1.Column(0))
    producto = Me.Lista1.Column(1)
    Precio = Me.Lista1.Column(4)
    
    ' Abrir el subformulario
    DoCmd.OpenForm "VentaRapidaSub", acNormal, , , acFormAdd, acWindowNormal
    
    ' Agregar un nuevo registro en el subformulario
    Forms!VentaRapida!VentaRapidaSub.Form.Recordset.AddNew
   
    ' Asignar los valores a los campos del nuevo registro
    Forms!VentaRapida!VentaRapidaSub.Form.Recordset.Fields("Codigo").Value = Id
    Forms!VentaRapida!VentaRapidaSub.Form.Recordset.Fields("Producto").Value = producto
    Forms!VentaRapida!VentaRapidaSub.Form.Recordset.Fields("Precio").Value = Precio
    
    ' Guardar el registro y refrescar el subformulario
    Forms!VentaRapida!VentaRapidaSub.Form.Recordset.Update
    Forms!VentaRapida!VentaRapidaSub.Form.Requery

End Sub

El formulario a donde deben ir los datos se llama "VentaRapida" y el subform "VentaRapidaSub"

Saludos


-------------
-------Maxpro-------

San Luis - Argentina


Publicado por: xavi
Fecha de publicación: 11/Abril/2023 a las 08:53
Hola,

No explicas que es lo que no funciona pero me surge una duda: ¿abrir el subformulario? Yo pensaba que el formulario ya lo tendrías abierto, de ahí que propusiera enfocar el subformulario.

En otras ocasiones yo utilizo variables o estructuras públicas (estoy empezando a experimentar con TempVars) para pasar valores entre formularios. En el Load del segundo formulario evalúo si requiere de "algo" especial y actúo en consecuencia pero en el formulario destino.

Un saludo






-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: Mihura
Fecha de publicación: 11/Abril/2023 a las 11:03
Si no me he perdido ... el pase de valores a un formulario / subformulario (informe/subinforme) se hace muy fácil con el argumento OpenArgs.

En el caso de que necesites pasar más de un valor, los mandas con un separador y en el destino obtienes los valores con split.



-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: maxpro
Fecha de publicación: 11/Abril/2023 a las 17:35
Hola Mihura.

Al otro dia mas descansado entendi que podia pasarle los valores de la siguiente manera:

En el evento doble click a la lista:

Forms!VentaRapida!VentaRapidaSub.Form!Codigo = Me.Lista1.Column(0)
Forms!VentaRapida!VentaRapidaSub.Form!Producto = Me.Lista1.Column(1)
Forms!VentaRapida!VentaRapidaSub.Form!Precio = Me.Lista1.Column(4)
DoCmd.GoToRecord , , acNewRec

De esta manera logro que me inserte el Codigo, Producto y Precio del item al que hice doble click en un Subformulario, por si le sirve a alguien aqui lo dejo

Saludos Cordiales!

-------------
-------Maxpro-------

San Luis - Argentina


Publicado por: maxpro
Fecha de publicación: 11/Abril/2023 a las 17:53
Gracias, ya se puede cerrar el Hilo.



Saludos


-------------
-------Maxpro-------

San Luis - Argentina



Imprimir página | Cerrar ventana