Pregunta

Así que tengo un formulario de entrada que quiero usar para actualizar una tabla con ciertos campos de información. Tengo el ID del registro que viene automáticamente en un cuadro de texto. Tengo tres cuadros de texto que tengo que añadir a la mesa (sin incluir el ID) en un clic de botón.

Name
Date
Method

son los nombres de los campos.

As_Name
As_Date
As_Method

son los nombres de cuadros de texto

El nombre de la tabla es POC, y la identificación es POC_ID (su un autonumber).

Así que no quiero que estos objetos (cajas de texto) estar sujetos a la tabla porque se trata de una pequeña forma separada "pop-up" que proviene de una forma que la tabla, y sólo quiere que la entrada sea relativa a la POC_ID que ya se selecciona a través de la forma original.

Entonces, ¿cómo escribo el VBA para que esto 1) comprobar para asegurarse de que los registros no existen ya .... 2) actualizar los campos (enumerados anteriormente) con la entrada de datos de los cuadros de texto (mencionados anteriormente). Quiero ser capaz de utilizar esto con un clic de botón ....


EDIT:

en realidad una mesa no es de dos; tengo dos formas que quiero ser capaz de enviar información a la misma mesa (información diferente, sin embargo). este db ya estaba construido por otra persona y sé que han sido deamed a apoderarse de ella.

Tengo que añadir una segunda forma poco pop-up para obtener información adicional que se añade en base a los nuevos requisitos (literalmente no hay donde para mí Para colocar esto en el otro). Ya he hecho eso, y se utiliza un enfoque objeto sugerido para hacer referencia a las primeras formas (de la que este segundo "pop-up" forma surge de) para añadir los campos ID relativos. Ahora tengo esta segunda forma emergente pequeña que simplemente les pidió tres valores que se introducen (que son las mencionadas anteriormente).

Yo simplemente no sé cómo vincular el cuadro de texto, con un campo de modo que una vez que un usuario entra en la información, haga clic en "Guardar" se guarda la información en la tabla relativa a la TripID que está ahí (que se menciona encima). la única manera que sé cómo llegar a los cuadros de texto para guardar los datos en la tabla es utilizar el constructor / asistente cuando se crea una nueva.

Me gustaría aprender cómo vincular un objeto (cuadro de texto, cmb, lista), etc en un formulario, a una mesa con un método "al hacer clic" para que pueda utilizar un botón de guardar. Básicamente eso es todo!

¿Fue útil?

Solución

Sin embargo, no estoy seguro de entender su situación, pero permítanme ofrecer el contorno de una respuesta. Si mi esquema no está lo suficientemente cerca, explique donde fui mal camino.

Su forma original, frmParent, tiene un botón de comando (cmdMoreFields) que se abre el formulario secundario (frmChild) donde se introduzca valores para 3 campos adicionales en el registro que se muestra en frmParent. Después de que el usuario introduce los valores en frmChild (en los controles de cuadro de texto denominado As_Name, As_Date y As_Method), va a hacer clic en un botón de comando (cmdSave) para almacenar los valores de los campos (nombre, fecha, y método) en POC mesa, y cerca frmChild. Además, frmParent incluye un cuadro de texto (txtPk_field) que contiene el valor de la clave primaria (pk_field campo en POC tabla) del registro actual.

Sin embargo, no estoy seguro de qué campo / de control que está utilizando para txtPk_field, y la duda de que el valor está disponible si el registro actual aún no se ha guardado. Por lo tanto, voy a sugerir el código para la cmdMoreFields "al hacer clic" evento:

If Me.Dirty Then Me.Dirty = False
DoCmd.OpenForm "frmChild"

En el caso de "al hacer clic" de cmdSave (en frmChild), trate de código similar a:

Dim strSql As String
strSQL = "UPDATE POC SET [Name] = """ & Me.As_Name & """, [Date] =#" _
    & Me.As_Date & "#, Method = """ & Me.As_Method & """ WHERE pk_field = " _
    & Forms!frmParent.txtPk_field & ";"
Debug.Print strSql
CurrentDb.Execute strSql, dbFailOnError
DoCmd.Close

Si ese enfoque funciona, considere pasar el valor pk_field a frmChild con AbrirArgs, como se sugiere Remou.

Nota: Asumí el tipo de datos para el nombre es el texto, la fecha es la fecha / hora, y el método es texto. Usted tendrá que cambiar los delimitadores sentencia UPDATE para cualquiera de los campos cuyos tipos de datos difieren de mis conjeturas.

Otros consejos

El método AbrirFormulario de DoCmd permite varios argumentos, incluyendo Dónde y AbrirArgs. Usted puede tomar ventaja de estos.

Sin embargo, algo parece ser bastante malo en el diseño de la tabla en la que parece estar sosteniendo la misma información en dos tablas y por ninguna razón indicada. Ha leído http://www.r937.com/relational.html ?

Yo sugeriría que el diseño que necesita probablemente sólo incluye una POC_ID campo numérico que es una clave externa a la tabla principal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top