Mensaje de Validación a no encontrar registro en Access

Nuevamente por aquí con un problema. Resulta que tengo una tabla de compras en un subformulario y que al registrar el código de barra en un textbox, después de actualizar me ejecuta una macro a un formulario de consulta con una condición y este me trae los datos que quiero.

Esta la macro:

Mi problema es que si el registro no existe en la tabla de Inventario en donde realizo la consulta, no me puedo hacer que me envié un MsgBox diciendo que registro no existe, eh tratado de varias formas pero no logro llegar a lo que quiero.

2 respuestas

Respuesta
1

¿Has probado a usar

If nz(dcount("*","Inventario","codbarras='" & me.codbarras & "'"))=0 then

Msgbox"Ese código no existe en la tabla Inventario", vbokonly,"Otro día quizá, pero hoy no"

end if

Hola Julián... gracias por responder..

no lo eh probado, pero no sabría donde colocar el código??? perdón me falta aprender mas...

El código lo debería colocar al iniciar el formulario consulta?? o en después de actualizar el textbox que registra el codbarras??? 

No se si me puede explicar mejor... Gracias...

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

¡Gracias! Julián, me fue de gran ayuda tu respuesta en vba y tu explicación visual y atractiva...

Utilice tu código en el formulario antes de actualizar y mantuve la macro y me funciona perfecto, muchas gracias por tus conocimientos, seguramente molestare de nuevo ya que tengo otro formulario donde quiero tomar una foto por la webcam, lo ejecute en excel y funciona perfecto, pero intente usar los código vba en access  modificando ciertos parámetros, pero di agua y lo deje... 

Respuesta
1

Tienes que completar tu macro con una acción "Si", que puedes encontrar dentro del grupo "Flujo de programas:

Donde yo pongo lo de [Formularios]![Formulario4]![CodigoBarra] tendrás que cambiarlo por la expresión que indique dónde tienes tu el cuadro de texto CodigoBarra.

Hola Sveinbjorn El Rojo, gracias por la ayuda realice el código en la macro pero me da error...

No se si sera que el formulario que ejecuta la consulta de access tenga que ver ya que le tengo un criterio

De igual forma utilice el código vba que me indico Julián en el formulario antes de actualizar y manteniendo la macro inicial y me funciona perfecto.

Doy muchas gracias por su tiempo y conocimientos...

Presumo que el problema está en la configuración regional y tienes que usar como separadores las comas y no los punto y comas en la expresión del DCont().

Porque la macro de la que te puse el pantallazo, funciona perfectamente. Te adjunto el archivo en el que la probé para que lo ojees: http://www.filebig.net/files/M3NJu7pavD

¡Gracias! Sveinbjorn El Rojo, revise el archivo y encontré la diferencia... en mi consulta use el generador de expresiones, en donde le digo que use el valor del subformulario para que así ejecute la consulta, el tuyo fue más sencillo y lo pondré en practica...

Muchas gracias por tu ayuda...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas