¿Puedo utilizar la funcion NZ Dmáx dentro de unha Cláusula Insert Into?

Tengo dos tablas, tblFacturaProducto y tblAlbaranProducto. Lo que quiero es pasar campos directamente de una tabla a otra. Ambas tienen como clave un valor numérico llamado IDProducto

Primero calculo el nº de factura y luego lo que pensé sería utilizar una función NZ Dmáx para crear el IdProducto de la tblFacturaProducto (y meter así los productos)

Creo que sería algo así, pero creo que no tengo la sintaxis bien. ¿Sabéis si puedo hacerlo? Gracias.

DoCmd.RunSQL "INSERT INTO tblFacturaProducto ( Factura, IdProducto, IdAlbaran, Cantidad, Precio, DescripcionVenta, Fecha, SubTotal, Referencia) SELECT " & numFactura & ", (Nz(DMax([IdProducto], tblFacturaProducto), 0) + 1), IdAlbaran, Cantidad, Precio, DescripcionVenta, Fecha, tblAlbaranProducto.Subtotal, Referencia FROM tblAlbaran INNER JOIN tblAlbaranProducto ON tblAlbaran.IdAlbaran = tblAlbaranProducto.Albaran WHERE (((tblAlbaran.Facturar)=Yes))"

1 respuesta

Respuesta
2

Poder, puedes hacerlo, pero no creo que sea lo que buscas hacer... porque ¿incrementar el IDProducto? Para mi eso no tiene ningún sentido, porque los productos de la factura tendrían que ser los mismos que tengas en el albarán...

En cuanto a la expresión, a nivel de sintaxis es correcta, pero al usarla dentro de un SELECT, siempre te va a devolver el mismo resultado, con lo que siempre te insertará el mismo producto...

Esto lo puedes comprobar fácilmente si creas una consulta en blanco y le pegas la parte del SELECT de tu SQL:

SELECT " & numFactura & ", (Nz(DMax([IdProducto], tblFacturaProducto), 0) + 1), IdAlbaran, Cantidad, Precio, DescripcionVenta, Fecha, tblAlbaranProducto.Subtotal, Referencia FROM tblAlbaran INNER JOIN tblAlbaranProducto ON tblAlbaran.IdAlbaran = tblAlbaranProducto.Albaran WHERE (((tblAlbaran.Facturar)=Yes))

Yo si quisisera hacer el traspaso de albarán a factura, una vez calculado el nuevo número de factura y almacenado en la variable numFactura, usaría algo así:

DoCmd.RunSQL "INSERT INTO tblFacturaProducto ( Factura, IdProducto, IdAlbaran, Cantidad, Precio, DescripcionVenta, Fecha, SubTotal, Referencia) SELECT " & numFactura & " AS Factura, IdProducto, IdAlbaran, Cantidad, Precio, DescripcionVenta, Fecha, tblAlbaranProducto.Subtotal, Referencia FROM tblAlbaran INNER JOIN tblAlbaranProducto ON tblAlbaran.IdAlbaran = tblAlbaranProducto.Albaran WHERE (((tblAlbaran.Facturar)=Yes))"

suponiendo que la parte del SELECT efectivamente te devuelve el albarán que quieres facturar, cosa que yo desconozco...

Un saludo.


Muchas Gracias por la información. Me he dado cuenta de que el campo del IdProducto no lo necesito para nada ya que no tengo una tabla productos con registros relacionados. 

Muchas Gracias

Me alegra ver que lo solucionaste.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas