Como Copiar datos de una formulario en otro

Tengo un Formulario llamado “000000TPass” con un cuadro de txtindependiente llamado “User”.

Otro formulario “000000Menuvend” Con un campo txt llamado “cboUser”

En el formulario “000000TPass” tengo un botón ACEPTAR y cuando lo selecciono me abre el formulario “000000MenuVend”

Lo que necesito es que el dato introducido en el campo “User” del primer Formulario al clicar en ACEPTAR se me guarde en el campo “cboUser” del segundo formulario que es el que ahora se abre.

4 Respuestas

Respuesta

This blog has been quite enjoyable for me. It's an interesting subject. It greatly assists me in resolving several issues.  Play skribbl io game.

Respuesta
2

José Antonio: De entre otras maneras de hacerlo, mi sugerencia es que declares una Variable Publica en algún Modulo Estándar que tengas.

Ejemplo: Public ElUsuario As String

Después en el Evento Form_Load del Formulario >> 000000MenuVend le pones

Me.CboUser.Value = ElUsuario

Mis saludos >> Jacinto

Disculpa José Antonio: Se me ha pasado comentarte que la Variable ElUsuario, la has de llenar en el evento AfterUpdate del Control User en el Formulario 000000TPass

Mis saludos >> Jacinto

Como he de llenar la variable en evento que me indicas.

José Antonio: En el Formulario 000000TPass si es que no lo tienes, debes añadir:

Private Sub User_AfterUpdate()

ElUsuario = Me.User

End Sub

No te olvides de activar el Procedimiento en Propiedades >> Eventos >> Despué de Actualizar >> [Procedimiento de Evento]

Si es que por alguna razón ya tienes ese Procedimiento, solo añadele esa línea que te pongo.

Mis saludos >> Jacinto

Esto el lo que tengo en el Modulo MdlVariables:

Option Compare Database
Option Explicit

Public Frm As Form

Public Rpt As Report

Public RutaApp As String

Public CriterioUno As String
Public CriterioDos As String
Public CriterioTres As String
Public CriterioCuatro As String
Public CriterioCinco As String
Public ElUsuario As String  'Esto lo que he añadido según me comentas

Public Criterios As String

Public dbs As DAO.Database
Public StrSQL As String
Public rst As DAO.Recordset

Y esto lo que tengo en el Formulario 00000FPass

en el evento despues de actualizar

Private Sub cboUser_AfterUpdate()
Me.txtPass.SetFocus
Me.User = Me.cboUser.Column(1)
ElUsuario = Me.User
End Sub

José Antonio: Así sin profundizar mucho parece que está bien, pero para tener el valor en el Formulario 000000MenuVend te falta lo que en principio te comenté.

Después en el Evento Form_Load del Formulario >> 000000MenuVend le pones

Me.CboUser.Value = ElUsuario

Mis saludos >> Jacinto

Respuesta
2

Si el formulario ... Tpass queda abierto aunque sea en segundo plano basta con poner el en el segundo formulario, en el evento Al activar registro :

cbouser.defaultvalue=[forms]![.......tpass]![user]

El caso es que el formulario 00000TPass se cierra.

Entonces no te queda más remedio que hacer lo que dice Joaquín, asignar el valor a una variable.

También puedes crear una tabla Aux con un único campo User.

En el evento Después de actualizar del cuadro de texto(que dices que es independiente) User puedes poner

docmd.setwarnings false

docmd.runsql"insert into Aux(user)values('" & me.user & "')"

Así cuando escribas algo en el cuadro de texto te lo insertará en la tabla Aux

Luego, en el segundo formulario, en el evento al activar registro pones

cbouser=dlookup("user","aux")

Docmd. Runsql"delete * from aux"

Así, cuando abras el segundo formulario cbouser será igual al único valor de user de la tabla aux y luego te borra ese registro de la tabla Aux(para usos posteriores), pero en cbouser ya te habrá quedado el valor.

Respuesta
1

Tengo entendido que el formulario 000000TPass lo cierras al hacer clic en Aceptar, en este caso no puedes hacer referencia a éste como te indican, una solución es pasarle al formulario 000000MenuVend un "argumento", esto es User.

Agrega al botón Aceptar algo como:

Docmd. Openform "000000MenuVend",,,,, Me. User

Y en el formulario 000000MenuVend, adiciona lo siguiente el evento "Al Abrir"

If Not Isnull(Me.OpenArg) then

Me.cboUser=Me.OpenArg

End If

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas