Formulario de búsqueda: verificar si está o no
Os escribo para consultaros si es posible crear un formulario de búsqueda de tal manera que busque si en un tabla un material está en stock (sí/no), pero que primeramente verifique si ese material está en la tabla (aquí es donde mi lógica se pierde).
1 Respuesta
Lo puedes hacer de mil formas. Supongamos que en un cuadro de texto escribes el nombre del producto
Puedes poner en sus propiedades-eventos-antes de actualizar
If nz(dcount("*","nombredelatabla","producto='" & me.nombrecuadrotexto & "'"))>=1 then
msgbox"Ese producto existe",vbokonly","Que lo sepas"
else
Msgbox"Ese producto no existe", vbokonly,"Otra vez será"
Docmd. Cancelevent
end if
Si pudieras concretar algo más
Vale:
Primero, gracias por la pronta respuesta. Lo veo de la siguiente manera:
a) Primero se debería verificar que el producto existe (cada producto tiene un código):
- Si está en el listado, debería verificar si tiene stock (>0), de tal manera que diga Sí o No.
- Si no está listado, un mensaje como "Falta entrar producto", por ejemplo.
Estaría bien entrar la búsqueda en un cuadro de texto (por el nombre, por ejemplo), o desplegable, de tal manera que en otro cuadro de texto te indique el mensaje final.
:)?
Vamos a suponer que el código del producto lo eliges de un combinado, en que en el origen de la fila pone, más o menos,
Select codigo from productos group by codigo;
Y que el combinado se llama, por ejemplo, BuscarCodigo. En sus propiedades-eventos-Después de actualizar puedes poner
If nz(dcount("*","productos","codigo='" & me.buscarcodigo & "'"))=0 then
Msgbox"Ese producto no existe", vbokonly,"¡¡ Busca otro !!"
Docmd. Cancelevent
elseif dcount("*","productos","codigo='" & me.buscarcodigo & "' and stock>0") then
msgbox"Enhorabuena, el producto existe y si hay stock",vbokonly,"¡¡ Que suerte !!"
elseif dcount("*","productos","codigo='" & me.buscarcodigo & "' and stock=0") then
Msgbox"Joer, que mala suerte. El producto existe, pero no hay stock", vbokonly,"Otra vez será"
Docmd. Cancelevent
end if
Me ha funcionado a la perfección: solamente falta si el campo no tiene datos, ¿qué me aconsejas en ese caso? Por ejemplo, sería añadir la línea de tal manera que dijera "Falta actualizar stock".
Saludos.
Si en el campo código no hay datos, para eso le estás diciendo lo de NZ, que transforma los nulos en ceros. De todas formas, ¿podrías poner una imagen?
Algo falla
Es más sencillo, con el formulario abierto pulsa Print Screen o Impr Pant. Luego abres el Paint y pulsas Pegar, la recortas y la guardas. Luego sól, aquí en todoexpertos sólo tienes que pulsar
Supongamos que tengo una tabla Productos
En un formulario tengo un combinado llamado Buscar, en el que en su origen de la fila tengo puesto
SELECT CodProducto FROM Productos GROUP BY CodProducto;
Voy a escribir un CodProducto que no existe
Cuando pulso Enter
Ahora voy a elegir Limones, que si existe pero que no tiene Stock
y me sale
Y si elijo algún producto que si exista y tenga stock
El código del evento Antes de actualizar del combinado Buscar es
Private Sub Buscar_BeforeUpdate(Cancel As Integer) If Nz(DCount("*", "productos", "codproducto='" & Me.Buscar & "'")) = 0 Then MsgBox "Lo siento pero ese producto no existe", vbOKOnly + vbInformation, "Sigue intentando" DoCmd.CancelEvent ElseIf IsNull(DLookup("stock", "productos", "codproducto='" & Me.Buscar & "'")) Then MsgBox "Chico, que mala suerte, el producto existe pero no tiene stock", vbOKOnly, "Otra vez será" DoCmd.CancelEvent Else MsgBox "Enhorabuena, el producto existe y tiene stock", vbOKOnly, "Por fin has acertado" End If End Sub
De todas formas, es una opinión, si el combinado tiene su origen de la fila en la tabla Productos, si los despliegas y no está ese valor, ¿para qué escribir?, no existe y punto. Incluso se le puede decir que sólo muestre aquellos productos que SÍ tengan stock. Por otro lado, no haría falta tanto código, pues en los combinados, en sus propiedades-Datos se le puede decir Limitar a la lista Sí y combinarlo con el evento Al no estar en lista.
Genio! Muchas gracias!
Una última: si quisiera cambiar tamaño de letra, color... en los mensajes, ¿cómo debería proceder? Por ejemplo, si es "Sí" que aparezca un verde bonito. Si es "No", un rojo grande y llamativo.
Que yo sepa, en los mensajes "prediseñados" no puedes, pero puedes sustituir el mensaje con un formulario. Por ejemplo, en el formulario de la imagen
Si pulso el botón
Al ser un formulario le puedes dar el formato que quieras, al texto, imágenes, fondo, etc.
- Compartir respuesta