Concatenar automáticamente 4 campos e introducir resultado en otro campo.

Estoy trabajando en Acces 2007.

Tengo 3 campos: "nombre", "día", "hora" y "sala". Quería que, al meter el último campo, "sala", mediante formulario, se introdujesen automáticamente en un campo, llamado "junto", de otra tabla. La consulta para concatenar sé hacerla. Lo que no sé es como hacer que el resultado se introduzca automáticamente en el campo de la otra tabla. Soy muy novato, por lo que si alguien quiere ayudarme le rogaría que lo tuviera en cuenta a la hora de explicármelo.

3 Respuestas

Respuesta

Juan: Estando en contactos con dos maestros, poco puedo añadir.

Me ha llamado la atención el apellido ya que no es de los más frecuentes. Mi origen es Andalucia, Cazorla (Jaén). ¿Te importaría comentarme de que zona eres?. Mis saludos >> Jacinto

Jacinto, soy de Sevilla, aunque de ascendencia gallega, de la costa de la muerte. Saludos

Bueno Juan: Es dificil que seamos familia o al menos cercana, pero encantado.

Por aquí ando y si te puedo ser util en algún momento, estupendo. Un saludo >> Jacinto

Respuesta
2

Dos cosas. Primero, son cuatro campos. Segundo, no sé como andas de código. En las propiedades del cuadro de texto Sala, en la solapa Eventos pon el cursor en el rectángulo blanco que hay a la derecha de Después de actualizar y pulsa el botón derecho del ratón y elige Generar- Generador de código-Aceptar. Se abrirá la ventana del editor de VB. Entre Private Sub y End Sub escribe

docmd.setwarnings false

docmd.runsql"insert into nombredelaotratabla (junto)values(nombre &", "& dia & ", "& hora & ", "& sala)"

Gracias por contestar tan pronto. He escrito lo siguiente:

Private Sub Sala_AfterUpdate()
DoCmd.SetWarnings False

DoCmd.RunSQL "INSERT INTO MiTabla (Juntos) VALUES (Nombre &", "& Día & ", "& Hora & ", "& Sala)"
End Sub

y me da el siguiente error: "El número de argumentos es incorrecto o la asignación de propiedad no es válida". La sentencia está clara y es correcta, el campo de destino, Juntos, es de texto. Lo que no sé es si los controles Nombre, Día, Hora y Sala, cuyos orígenes son los campos de igual nombre, pertenecientes a la tabla origen del formulario, están correctos en cuanto a sintaxis. No sé, la hora que es, ya no doy pie con bola. Si se te ocurre algo mañana, te lo agradecería. Yo seguiré mañana dándole vueltas. De todos modos, te quedo muy agradecido.

Antes de opinar de forma categórica es preferible comprobar las cosas.

Si tengo la tabla

Y tengo el formulario

Cuando escribo Oval y pulso Enter

Y el código es 

Por error mío había puesto la hora como texto, pero es exactamente igual, mal que le pese a otro.

y en la tabla1

Hola Icue, 

Aunque tarde un poquito en responder, estoy en ello. Lo que pasa es que compromisos familiares me han apartado momentáneamente. me pongo a hacer las pruebas y te comento. Gracias.

Hola Icue,

Ya he hecho las comprobaciones y han salido a la perfección. Bueno, he hecho un poco de trampa, pues, he simplificado: he creado una base de datos con dos tablas y he recreado la misma situación lógica, pero, con solo dos campos en la primera y uno más en la segunda, el que recibe la concatenación. y sale planchado. lo he probado con las tablas cerradas y, al abrirlas, salen con los datos introducidos correctamente. Después, he probado con las tablas abiertas y, resulta que hay que cerrarlas y volverlas a abrir para que se reflejen los cambios. Curioso. O ignorancia por mi parte, según se quiera ver. Te quedo muy agradecido, pues, esta cuestión, aunque para ti será muy simple, para mí se me hacía un mundo y es muy importante, para resolver muchas cuestiones, como, por ejemplo, conseguir un campo sin duplicados, y que dé más información que un autonumérico, mediante la combinación de dos o más campos y así poder establecer una relación.

Muchas gracias.

Si te refieres al campo Junto, en la tabla, puedes ponerlo como Indexado sin duplicados

Respuesta
2

Lo que te propone Icue, así tal cual está, no te va a funcionar porque la segunda línea de código tiene varios errores:

.- Están mal encadenados los campos y los separadores (las comas), porque faltan varias comillas dobles, lo que provocará un error de número de argumentos.

.- Le faltan comillas simples antes de "nombre" y después de "sala", para indicar que todo lo que va entre ellas forma un todo, y no son 4 campos distintos (que es lo que entiende Access al encontrarse con las comas (,))

En definitiva, que el código que puedes usar sería (haciendo los pasos que te señala Icue):

Private Sub sala_AfterUpdate()
CurrentDb.Execute "INSERT INTO T2(Junto) VALUES('" & Me.nombre & "," & Me.dia & "," & Me.hora & "," & Me.sala & "')"
End Sub

Solo debes cambiar T2 por el nombre de tu tabla de destino, y las comas, si quieres otro separador.

Un saludo.


Hola, Gracias por tu colaboración, Voy a probar las dos sentencias. Ya os comento.

Hola, buenas,

Siento decirte que, así como el código de Icue sí funciona, el tuyo da error. Si le dejamos las comillas simples, funciona, pero lo que introduce es lo que hay entre ellas. Si le quitamos las comillas simples, da error, tanto si le dejamos el Me., como si se lo quitamos. En fín, como ya tengo la solución a mi problema, me centraré en mi base de datos, pues, me corre algo de prisa. No obstante, te estoy agradecido por tu intervención.

Saludos.

El código lo probé varias veces antes de proponerlo y te aseguro que funciona perfectamente. Ahí te dejo la BD en la que lo probé: http://www.filebig.net/files/885722Pbgj 

Quizás el problema esté en otro lado y no en el código en sí, como por ejemplo que no hayas cambiado algún nombre de la SQL por los tuyos, o que el campo de destino tenga un tamaño inferior al que le intentas pasar...

Pero el código, funciona... XD

Sí, por supuesto, vete a saber por qué no me funciona a mí. Como he estado haciendo tantos cambios, no sería de extrañar que haya cualquier otro problema. En cuanto al archivo que me mandas, me dice que pesa demasiado. Desde luego que hasta que no me funcione tu código no lo dejaré, pero más adelante, pues ahora, lo que me interesa es centrarme en acabar esta  BD.

Gracias por tu colaboración

¡¿¡Que pesa demasiado!?! ¡Pero si es un archivo de 796Kb! Raro, raro... jejeje...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas