Como añadir campos en consulta

Estoy gestionando mi base de datos para que el stock se sume y se reste solo.

Para hacerlo, necesito una tabla que contenga todos los pedidos en estado "cancelado", para que no sume todo el rato el stock otra vez, quiero crear un campo de control, y cuando se actualice que la consulta que sua o resta del stock no se ejecute, el problema es que no se como añadir nuevos campos a una tabla que es una consulta, ¿hay alguna forma de hacerlo que no sea creando en la tabla de los pedidos el campo en cuestión?

1 Respuesta

Respuesta
2

La verdad es que apenas entendí la pregunta. Pero..., si tienes una tabla, por ejemplo, Cancelados y en un formulario Clientes, metes los datos y en una casilla de verificación marcas lo de Cancelado, en su evento después de actualizar puedes poner

If nombrecasilla=-1 then

docmd.runsql"Insert into cancelados(uncampo, otrocampo,etc,)values('" & me.nombrecuadrotexto1 & "', '" & me.nombrecuadrotexto2 & "', '" & me.etc & "')"

end if

Si pudieras concretar un poco más se podría ajustar la respuesta.

Hola, gracias por responder, vamos a ver si me puedo expresa mejor.

Tengo una tabla pedidos, donde están los productos pedidos por un subformulario y los datos necesarios, tengo otra tabla de movimientos, cuando se hace un pedido va a esa tabla y lo resta del stock, ahora estoy trabajando en el seguimiento de los pedidos, cuando estan en proceso, cuando estan en estado de enviado o si se ha cancelado, si se ha cancelado quiero que el stock que se restó anteriormente vuelva a sumarse, para eso estoy haciendo una consulta que me muestre los pedidos con estado cancelado, con la id de ese pedido, hago que en la tabla movimientos, todos los movimientos con id de el pedido que esté cancelado devuelva el stock que se ha descontado al crearlo. Para controlar que cada vez que cancele un pedido no se vuela a operar con los que ya tenía cancelados previamente, quiero poner una casilla de si/no, en la consulta que me muestra los pedidos cancelados, pero claro, al ir a vista de diseño, no me aparecen campos para editar como en una tabla normal. Hay alguna manera de añadir a la consulta un campo que sólo exista en esa tabla creada por la consulta? espero que esta vez sea mas claro :D

Voy a ver si consigo explicarme. Supongamos que tienes una tabla Pedidos, con Idpedido(Autonumérico), Cliente, ExistenciasIniciales(de ese producto), etc y una tabla Movimientos con idMovimieto, Idpedido(relacionado con el anterior uno a varios), producto, precio, entrada/salida, etc, Stock y Estado. Y que con ellas has hecho un formulario con subformulario. Supongamos que en el subformulario anotas algo y en el cuadro Stock te ha hecho la suma o la resta y en el control(que supongamos que es un cuadro de texto) has puesto proceso o enviado, y quieres que en caso de poner Cancelado, te "elimine" ese registro y te recalcule los stocks. En el evento Después de actualizar del cuadro de texto Estado puedes poner

If estado="cancelado" then

docmd.runsql"insert into Cancelados(producto,precio,etc)values('" & me.producto & "', " & me.precio & ",etc)"

end if

Y luego en el subformulario pondría un botón Actualizar stock y pondría

docmd.setwarnings false

domd.gotorecord,,acfirst

dim i as integer

for i=1 to me.movimientos.form.recordset.recordcount

stock=dlookup("exitenciasiniciales,"productos","producto='" & me.producto & "'")-dsum("salidas",Movimientos","producto='" & me.producto & "' and estado<>""cancelado"" and idmovimiento<=" & me.idmovimiento & "")

docmd.gotorecord,,acnext

next

Me explico, Vete al primer registro del subformulario y actualiza el control stock, en que restes al valor de las existencias iniciales de ese producto, la suma de las salidas en que el valor no sea cancelado y que sean menores que el valor de idmovimiento.

Como creo que me he explicado fatal, te propongo, si quieres, repito, si quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando un ejemplo y sobre él hablamos. Si lo haces, en el asunto del mensaje pon tu alias Raúl, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas