Rellenar automáticamente

Quiero hacer que cuando se inserte un registro en una tabla, uno de los campos, me lo rellene automáticamente con un valor de otra tabla, pero los datos de la tabla se rellenan mediante una aplicación exterior que no puedo modificar(por lo que no tengo formulario de donde sacar el valor).
¿Sabéis si Access detecta de alguna forma que se ha insertado un campo en una tabla? ¿Existen triggers en Access?
La única solución que se me ha ocurrido ha sido hacer una consulta que me modifique el datos, pero la consulta la tengo que ejecutar yo manualmente.
Access me desespera por momentos... ;-)

1 respuesta

Respuesta
1
Puedes hacerlo siempre que puedas identificar ese registro en particular, por ejemplo, con un Id, Cod, etc. Supongamos que la tabla donde está ese dato de llama Clientes y el campo en cuestión se Dirección.
En las propiedades del cuadro de texto del formulario, en el evento Al recibir el enfoque(por ejemplo, puede ser cualquier otro evento del formulario), crea un procedimiento de evento y entre Private Sub y End Sub escribe
[nombre del cuadro de texto]=Dlookup("Dirección","clientes","[idcliente]=[forms]![nombre del formulario]![idcliente]")
El idcliente=forms... es un criterio de búsqueda. Puede ser cualquier otro que te permita identificar, como ya te he dicho, a ese registro en particular. Podría ser del tipo
[fechaventa]=#15/01/05#
[Codpostal]=[Escriba un Código Postal]
En fin, el criterio que quieras.
Gracias por tu tiempo
Gracias por todo, la verdad es que me es de gran ayuda. Una última consulta y con esta ya paro... Hay alguna forma de saber los registros que se han insertado en una tabla(pero sin haberlo hecho mediante formulario), es decir, para el ejemplo que me has puesto de los clientes y los contactos, en vez de ponerle una restricción en el "where" de la sentencia select, hay alguna forma de saber que registros han sido los últimos que han sido introducido de forma que sólo a esos registros se les aplique la modificación.
Espero no estar pidiendo mucho, la verdad que no conozco muy bien hasta que punto access es capaz o no de hacer algunas cosillas... Gracias
Que yo sepa no, pero eso no quiere decir nada. Quizá alguien experto en VB te lo podrá decir.
Hola gracias por la ayuda! De todas formas me interesaría poder hacerlo sin tener que tirar de formularios. Es decir, yo introduzco un registro en una tabla mediante una aplicación externa y automáticamente que uno de esos campos me lo rellene con el valor de otra tabla(como los triggers). ¿Cómo podría hacer? ¿Ejecutando alguna macro? ¿Tendría qie tirar de algún script? ¿O no se puede hacer? o, la verdad es que he probado bastantes cosillas y no se como intentarlo, las opciones que se me ocurren que funcionen requieren de la ejecución por parte del usuario de la base de datos.(En la base de datos que introduzco el registro no tengo ningún formulario) Gracias por todo
Puedes hacerlo, el problema está en definir los criterios. Vamos a ver si me explico con un ejemplo. Supongamos que tienes una tabla Clientes con idCliente, cliente, Fechavisita, etc y otra tabla Contactos(donde te insertan los datos desde fuera) con Idcontacto, nombre, fechacontacto, etc.
Crea un módulo y en el una función pública, por ejemplo Actualizar y entre Public function y End function escribe
DoCmd.RunSQL "UPDATE CONTACTOS INNER JOIN Clientes ON CONTACTOS.IdContacto = Clientes.Idcliente SET Clientes.fechavisita = contactos.fechacontactos WHERE [CONTACTOS].[IdContacto]=[clientes].[idcliente]"
Luego crea una macro y llámala Autoexec y en acción selecciona Ejecutar código y abajo pon
Actualizar()
Así cuando abras la base te actualizará las fechasvisita con los valores de fechacontacto.
El problema como te digo es ¿qué criterio poner? Yo aquí he supuesto que los id son iguales.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas