** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Copiar dato y pegar en un segundo Frm.
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoCopiar dato y pegar en un segundo Frm.

 Responder Responder Página  12>
Autor
Mensaje
Gadeus Ver desplegable
Habitual
Habitual


Unido: 27/Septiembre/2014
Localización: Hurlingham
Estado: Sin conexión
Puntos: 56
Enlace directo a este mensaje Tema: Copiar dato y pegar en un segundo Frm.
    Enviado: 28/Agosto/2015 a las 06:01
Buenas noches nuevamente:

Me pongo en contacto con ustedes con el fin de saldar una deuda con un control que la verdad no le encuantro la vuelta.
Es muy simple pero desconsco como se hace, por ende para mi es tal vez algo complejo.

Continuo: tengo un formulario A, y un B.
En el A tengo un subformulario en donde hay una lista de clientes con su ID correspondiente
Quiero que al seleccionar la fila del registro deseado del subformulario perteneciente al FRM A, que se me abra el Formulario B mediante el uso de un boton, y en el Formulario B sea depositado el valor ID (numero) en un cuadro de texto

Entonces: Formulario A, se slecciona un registro en el subform de A
Luego: Formulario A se le da click en un Boton llamado ABRIR LISTA
Luego: se abre el Formulario B, depositando de forma automatica el ID, seleccionado en formulario A, en un cuadro de texto de B -

Para darles una idea del porque de la milanesa , porqeu quiero generar un historial de entregas de planillas a las empresas, entonces para cada empresa tendre el historial de entregas.

Sin mas enroscarles la vibora, me despido parcialemnte. dado que volvere.
VE hacia adelante, a mas de 88mph!
Arriba
ARcess Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 10/Febrero/2011
Localización: España
Estado: Sin conexión
Puntos: 15
Enlace directo a este mensaje Enviado: 28/Agosto/2015 a las 08:23
Hola,
Según entiendo tu dilema, yo lo solucionaría con asociando el formulario B a una consulta que muestre todos los datos que necesitas, y en dicha consulta, en el apartado 'Criterios' indica el nombre del campo del SubformularioA que quieres utilizar.

Algo como: [Formularios]![NombreSubFormularioA]![NombreCampoDeReferencia]

Así, cuando se abra el formulario B, sólo mostrará los datos del registro activo

Saludos


Editado por ARcess - 28/Agosto/2015 a las 08:32
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 28/Agosto/2015 a las 08:54
Hay que precisar mas el entorno...

La (supuesta) primera vez que se ejecuta la acción, el formulario 'B' estaría cerrado, pero si en el sub del formulario 'A' se selecciona un segundo registro (o tercero o cuarto o ...) y se pulsa el botón ... ¿el formulario 'B' estará abierto o cerrado?.

Si de lo que se trata es de añadir 'ese dato' (y posiblemente alguno mas) al 'origen de datos' del formulario 'B', se puede hacer de forma directa sin abrir formulario alguno (mas rápido, limpio y elegante), mediante una simple 'consulta de datos añadidos' se soluciona.
Arriba
ARcess Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 10/Febrero/2011
Localización: España
Estado: Sin conexión
Puntos: 15
Enlace directo a este mensaje Enviado: 28/Agosto/2015 a las 10:54
E.Feijoo, ¿existe la posibilidad de ver un ejemplo de eso que planteas? igual hasta me lo adapto a mis 'creaciones' ;)

En un par de BDs que he hecho, lo tengo de forma tal que cada registro del SubFormularioA tiene SU botón 'de detalle'. Al presionarlo, se abre el FormularioB, con la referencia del registro donde has pulsado el botón

Luego miras, tratas, gestionas o haces lo que tengas que hacer con esos datos, y tengo habilitado un botón en el FormularioB que lo cierra y te devuelve al FormularioA. De esta forma, pulsas el botón 'de detalle' en cualquier otro registro y se vuelve a abrir el FormularioB, con los datos el otro registro seleccionado

Tienes razón en lo de que estéticamente no es lo más, ya que te llena la pantalla de botones; pero hace el trabajo, jeje
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 28/Agosto/2015 a las 11:34
Para utilizar un único botón, se puede utilizar 'la memoria' de pez que tiene Access: Screen.PreviousControl.Name nos indicaría de donde procede el foco y a partir de ese punto ....

Para hacer una inserción directa de datos, se han de conocer los datos a insertar, si se tiene que manipular algo (de entrada desconocido) se tendrá que utilizar el formulario.

Crear una consulta de datos anexados (o de actualización) no creo que sea necesario detallarlo, se puede crear con el asistente grafico y (tras copiar su SQL) y ya en VBA, modificarla y ejecutarla si no se desea hacer de forma directa.
Arriba
Gadeus Ver desplegable
Habitual
Habitual


Unido: 27/Septiembre/2014
Localización: Hurlingham
Estado: Sin conexión
Puntos: 56
Enlace directo a este mensaje Enviado: 29/Agosto/2015 a las 02:54
Buenas noches, continuando con el tema.
El tema para seguir el hilo del tema venimos hablando de un boton que me habra un formulario en modo NUEVO REGISTRO trayendo un dato de lo seleccionado del formulario anterior.

Paso a explicar un poco mas de lo que requiero, ejemplos para mostrar no se me ocurre ahora, es decir, lo veo habitualmente en un programa bastante simple de administracion de productos, cliente etc.

Les cuento como funciona dicho proceso dentro del programita...
Paso 1: Ventana facturación - tengo un encabezado donde selecciono el cliente que va a ser facturado determinados productos.
Paso 2 : debajo de este encabezado mencionado, hay un cuadro de texto e inmediato a la derecha un boton donde al darle el click me abre la lista (pequeño formulario con un subformulario) de productos del stock.
Paso 3: Le doy doble clik al producto o selecciono el producto y con el boton agregar, el pequeño formulario (listado de productos) se cierra automaticamente y me muestra el codigo (numero de registro) del producto seleccionado previamente.

Todo este proceso se hace con el formulario VENTAS en blanco, es decir NUEVO, ya que para cada facturacion es un registro nuevo.

Ahora bien, si se comprendio lo axplicado anteriormente, dejo un Link de una imagen de lo que esoty tratando de creear, ....

Los pasos estan explicados en la misma imagen.

Cualquier duda estoy para ayudarlos o ayudarme... SALUDOS!!!! seguire probando por mis medios igualemnte.

https://onedrive.live.com/?id=A9EFBF2091CC00C6!109&cid=A9EFBF2091CC00C6&group=0
VE hacia adelante, a mas de 88mph!
Arriba
jmmiralles Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 29/Noviembre/2008
Localización: Albacete-España
Estado: Sin conexión
Puntos: 569
Enlace directo a este mensaje Enviado: 30/Agosto/2015 a las 00:17
Hola,

según tu imagen, lo que quieres es seleccionar un registro de un subformulario y mediante un botón abrir otro formulario, yo lo abriría en MODAL, que en uno de sus campo le pasaremos un valor del subformulario.


al hacer clik en el botón para abrir la planilla (2 paso)

''Abrimos el formulario para crear un registro
 DoCmd.OpenForm "NOMBRE FORMULARIO PLANILLA", acNormal
  
 
forms![NOMBRE FORMULARIO PLANILLA]![id_planilla]=forms![FICHA ENTREGA]![MiSubformulario].form![id_reg_client].value

'''======================

NOMBRE FORMULARIO PLANILLA
=Formulario que queremos abrir para crear registro.
id_planilla=Nombre del campo que queremos pasarle el valor del subformulario.
FICHA ENTREGA=Nombre del formulario donde están las fichas de entrega.
MiSubformulario= Nombre del subformulario donde seleccionamos los registros
id_reg_client=Nombre del campo del registro que queremos pasar el valor al formulario planilla.


Editado para aclaración id_planilla.

Suerte


Editado por jmmiralles - 30/Agosto/2015 a las 12:39
Saludos desde un lugar de la Mancha

Visita Mi Web

http://jmmirallesortega.wix.com/accessyvba<
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 30/Agosto/2015 a las 10:21
Yo me saltaría el paso 2.

Seleccionado el registro (o sin selección alguna), al hacer un click (o doble click) sea en el ID o en el nombre (o en cualquiera de ellos, total es una simple línea de código, exactamente la misma) se abriría el segundo formulario con el ID seleccionado.

El abrir activando la propiedad modal o no ... dependerá de lo que se pretenda y el dejar abierto o no el formulario llámate es también una opción alternativa.

¿Cómo lo haría yo? ...

En el evento Click (valido también para ese botón que en mi caso es un adorno) lo siguiente:
DoCmd.OpenForm "nombre del formulario", , , , acFormAdd, , Me.Id_reg_client

En el formulario llamado y su evento LOAD:
If Len(Nz(Me.OpenArgs, "")) <> 0 Then Me.ID_Planilla= Me.OpenArgs


Mis anteriores respuestas seguían la línea de un supuesto formulario de (por ejemplo Artículos) que se utilizaba para crear líneas en un subformulario de ventas (por ello lo de la inserción en segundo plano) a lo que únicamente habría que añadir un emergente para solicitar cantidad (por ello lo de "Hay que precisar mas el entorno").

Arriba
Gadeus Ver desplegable
Habitual
Habitual


Unido: 27/Septiembre/2014
Localización: Hurlingham
Estado: Sin conexión
Puntos: 56
Enlace directo a este mensaje Enviado: 11/Septiembre/2015 a las 03:47
Buenas Noches.

Con respecto a lo que planteas E. Feijoo, tu ultimo post en la linea que venimos planteando, es decir donde tenes los comando expresados

El primer evento lo aplicas a al formulario directamente o lo tengo que hacer en unos de los cuadros de textos que usar para ejecutar el comando?

Y en la segunda linea claro esta que es el formulario en si.

Lo interprete bien o sigo derrapando?
VE hacia adelante, a mas de 88mph!
Arriba
jilo Ver desplegable
Colaborador
Colaborador


Unido: 19/Diciembre/2004
Localización: TAFALLA
Estado: Sin conexión
Puntos: 893
Enlace directo a este mensaje Enviado: 11/Septiembre/2015 a las 09:46
Hola a todos
Te explico lo que te ha puesto E.Feijoo,con su permiso, que por cierto esta bastante claro
--------------------------
En el evento Click (valido también para ese botón que en mi caso es un adorno) lo siguiente:
DoCmd.OpenForm "nombre del formulario", , , , acFormAdd, , Me.Id_reg_client

En el formulario llamado y su evento LOAD:
If Len(Nz(Me.OpenArgs, "")) <> 0 Then Me.ID_Planilla= Me.OpenArgs
-------------------------------
Explicacion:
En el formulario FICHA DE ENTREGAS le clickeas al registro que quieres ver en el formulario PLANILLA_ENTREGA_EXT. Para eso te tienes que ir al evento 'Detalle_DblClick' del Formulario FICHA DE ENTREGAS y le pegas
DoCmd.OpenForm "PLANILLA_ENTREGA_EXT", , , , acFormAdd, , Me.Id_reg_client
Esto lo que te hace es que te abre el formulario posicionado en el registro Me.Id_reg_client

En el otro formulario PLANILLA_ENTREGA_EXT,  en el evento ALCargar del formulario (Private Sub Form_Load()), pegas esto
If Len(Nz(Me.OpenArgs, "")) <> 0 Then Me.ID_Planilla= Me.OpenArgs
Esto te hace si el argumento que le pasas en Me.Id_reg_client  por lo que fuera o fuese se 'perdiese en el camino' , entonces no pasa por el 'then' y el formulario se abrira en el como lo hayas diseñado. Si por el contrario el argumento no pasa vacio, que será lo normal, te lo abrira posicionado en el registro que pasaste como argumento en Me.Id_reg_client.
LO mismo que te ha dicho Enrique pero puesto de otra manera...




' Pega esto en el Formulario 'FICHA DE ENTREGAS
Private Sub Detalle_DblClick(Cancel As Integer)

If Len(Nz(Me.Id_reg_client, "")) <> 0 then
DoCmd.OpenForm "4frm_PLANILLA_ENTREGA_EXT", , , , acFormAdd, , Me.Id_reg_client
else
Cancel=True
End Sub


' Pega esto en el Formulario  '4frm_PLANILLA_ENTREGA_EXTPrivate Sub Form_Load()
Private Sub Form_Load()
Me.ID_Planilla= Me.OpenArgs
End sub

Espero te sirva !!!!!!
Iñaki
Arriba
Gadeus Ver desplegable
Habitual
Habitual


Unido: 27/Septiembre/2014
Localización: Hurlingham
Estado: Sin conexión
Puntos: 56
Enlace directo a este mensaje Enviado: 12/Septiembre/2015 a las 04:49
Hola Jilo y a toda la comunidad.

Con lo que planteas, vamos perfecto, pero no me funciona.
Lo que note que no funciona y el motivo de mi consulta es la siguiente. Para el primer cuadro de programacion, despues de DoCmd.OpenForm    no deberia comenzar con parentecis? hago dicha consulta ya que al ponerlo en el generador de codigo me parace la ayuda de acces o guia mejor dicho y me muestra lo siguiente.. OpenForm(.............................) tal vez no es necesario los parentecis, pero bueno, es mi consulta existencial.

Saludos Atte Gadeus
VE hacia adelante, a mas de 88mph!
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 12/Septiembre/2015 a las 05:15
Acepto tu incredulidad, pero esa duda existencial se soluciona de una forma muy elemental : PROBANDO LO QUE TE INDICAN

Suele ser mas constructivo el experimentar que el dudar y no hacer NADA

Y si tienes dudas de que 'algo se pueda romper' la solución es muy sencilla (y tal elemental que nunca suele mencionarse): HACER UNA COPIA Y JUGAR CON ELLA.
Arriba
Gadeus Ver desplegable
Habitual
Habitual


Unido: 27/Septiembre/2014
Localización: Hurlingham
Estado: Sin conexión
Puntos: 56
Enlace directo a este mensaje Enviado: 15/Septiembre/2015 a las 05:32
Buenas noches a todos.

E.Feijoo estoy totalmente de acuerdo y te doy toda la razón.
Tal vez habra sido de comodo el no probar los parentecis, pero en ese momento mi duda surgio como para no empresar a enroscar todo.

Volviendo al tema que vengo luchando, probe en un pequeño sistema nuevo a que arme justamente para probar el tema tratado, ... Lo voy a subir a Onedrive para que tengan un parametro a lo buscado con algo mas tactil.

Los procedimiento que hice fue como me vinieron explicando ustedes, he colocado los codigos en los formularios, sub formularios, saque parentecis, puse parentecis etc.

Esta ves toquetie todo, hice copia y volvi a pegar. pero no se ejecuta el procedimiento.

El pequeño sistema que hice fue mas simple en ele sentido de la cantidad de elementos y objetos a usar.
La explicacion la dejare en el formulario. Aclaro que es un archivo de acces 2010.

Link del archivo.
https://onedrive.live.com/?id=A9EFBF2091CC00C6!109&cid=A9EFBF2091CC00C6&group=0

Atte Gadeus..

VE hacia adelante, a mas de 88mph!
Arriba
jorge1234 Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 01/Agosto/2013
Localización: Colombia
Estado: Sin conexión
Puntos: 325
Enlace directo a este mensaje Enviado: 15/Septiembre/2015 a las 15:50
Para esos casos siempre trabajo con variables temporales!  sabes del tema?
Arriba
jorge1234 Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 01/Agosto/2013
Localización: Colombia
Estado: Sin conexión
Puntos: 325
Enlace directo a este mensaje Enviado: 15/Septiembre/2015 a las 16:28
Te actualice la base con las modificaciones respectivas


Function Temporales()
On Error GoTo Temporales_Err

    With CodeContextObject
        TempVars.Add "Ubicasa", .Id_ubiCasa
        DoCmd.Close acForm, "BUSCAR UBICACION"
        DoCmd.OpenForm "Listar Controles", acNormal, "", "", acEdit, acNormal
        Forms![Listar Controles]!Id_UbiCasa_control = TempVars!UbiCasa
        TempVars.RemoveAll
    End With


Temporales_Exit:
    Exit Function

Temporales_Err:
    MsgBox Error$
    Resume Temporales_Exit

End Function


En el formulario BUSCAR UBICACION  le das click en id_ubi_casa  y te llevara al formulario que querias


Basicamente se realizo una  variable temporal y se copia donde queremos que retorne, despues  quitamos esa variable para que no nos cree conflicto.

este es el nuevo link  con las modificacion para que lo pruebe

https://onedrive.live.com/redir?resid=B39053153A7C0002%21299

Cordial saludo

 


Arriba
 Responder Responder Página  12>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable