Te garantizo, con una certeza del 100% que si sigues en esto de Access te pasarás a hacer las cosas en código VB. Si me permites, al final te haré un par de sugerencias
Mira, si tengo la tabla Productos, con sus códigos de barras, que no tengo ni idea de como se guarda, ni si son sólo numéricos o también tienen texto, así que me quedo con esto último
En el subformulario DetalleCompra, en vista diseño selecciono el cuadro de texto CodigoBarras y en sus propiedades-Eventos- Antes de actualizar(para que esperar a que después de que haya guardado el valor le tenga que decir que me lo borre, es preferible que antes de tener el accidente no me deje usar el coche) hago clic en la parte blanca de la derecha y me aparecen dos botones, uno con una punta de flecha hacia abajo y otro con tres puntos(...), entonces, o bien "pulsas" en la flecha y seleccionas Procedimiento de evento y luego pulsas el de tres puntos, que te abre la ventana del editor de código, o bien pulsas directamente el de tres puntos y en la ventana que se abra seleccionas Generador de código
Te aparecerá una Línea que pone Private Sub Codigobarras Before... es decir vamos a ejecutar algo antes de que use el coche y cuando me haya estrellado me diga que voy a tener un accidente. Y le pones(no hagas caso al resto del código)
De forma, que no me deja seguir, el cursor se queda en el cuadro de texto para que cambie el valor. Si ese valor existiera, intervendría el evento Después de actualizar que sería
Es decir, como ese código es bueno, búscame en la tabla Producto el nombre, precio, existencias y me lo pones en sus cuadros de texto repetidos de forma el cuadro de texto CodigoBarras te quedaría así
En el formulario Compras si en el control CodigoBarras del subformulario pongo un valor que no existe
Cuando pulso Enter
Al aceptar el cursor se queda en código de barras para que lo cambies. Pero si estuviera
Bueno, se puede hacer un poco más corto pero he preferido detallarlo.
Una vez dicho esto, vamos con otra cosa. Si anotas un código de barras, supongo, no lo sé, será porque te ha llegado un producto, es decir, que ya lo tienes ahí. ¿No sería más cómodo poner el control CodigoBarras como un combinado y usar el evento Al no estar en lista. Me explico, en el combinado eliges un código de barras, pero vamos a suponer que no está. Da igual, lo escribes y el combinado comprueba si está en su lista, y si no está te lanza un mensaje, donde puedes decirle que te abra el formulario Productos para darlo de alta.
Por último, verás que no me gustan las macros. Si quieres, repito, si quieres, mándame un mensaje (sólo el mensaje) a [email protected] y te mando un ejemplo completo.
Si lo haces, en el asunto del mensaje pon tu alias Héctor, ya que si no sé quien me escribe ni los abro