Guardar datos en 2 tablas con el mismo campo

Yo quiero no se si se pueda guardar un dato en 2 tablas que al guardar el producto se guarde en una tabla de esos y también se guarde en otra (Mis 2 tablas son Arribos y Almacen General)que cuando guarde en Arribos guarde normal cada una de ellas y aquí es cuando también agrega en el Almacen pero aquí cuando el producto sea igual sume en si mismo no se si me podría ayudar alguien

1 respuesta

Respuesta
2

Sería bueno saber la construcción de la tablas, así que vamos a suponer que la tabla Arribos tiene

IdArribo, Fecha,... Idproducto, Producto, cantidad,... y que la tabla Almacen tiene IdAlmacen, IdProducto, Existencias,...

Vamos a suponer que el formulario donde das de alta un arribo se llama Arribos. Al no saber la construcción, pondría un botón de comando y en sus propiedades-eventos-Al hacer clic crearía un procedimiento de evento y entre Private Sub y End Sub pondría

Docmd.setwarnings false

if nz(dcount("*","almacen","idproducto=" & me.idproducto & ""))>=1 then

docmd.runsql"update almacén set existencias=existencias+" & me.cantidad & " where idproducto=" & me.idproducto & ""

else

Docmd.runsql"insert into almacen(Idproducto,"existencias")values(idproducto,cantidad)"

end if

Me explico, cuando pulsas el botón, comprueba si en la tabla almacén hay algún registro de ese idproducto. Si lo hay, a las existencias que había le suma la cantidad que ha arribado. Si no lo hay, crea el registro, con el idproducto y la cantidad.

La tabla de arribo se conforma de (ID_DE_ARRIBO,BARCO,TIPO_DE_LOTE_,PRODUCTO,KILOGRAMOS,FECHA,HORA) esta tabla mas que nada es para hacer seguimiento de lo que baja en los barcos y la otra es donde se va todo el producto y se suma por igual que es INV_GENERAL (ID_PRODUCTO,PRODUCTO,EXISTENCIA) 

Jesús, antes de nada, permíteme unas consideraciones

1º Es de suponer que en un mismo arribo te llegarán varios productos. Por eso creo que sería conveniente tener una tabla Arribos y otra tabla DetalleArribo donde se "guarden" los diferentes productos que han llegado en un arribo. Es una opinión.

2º Personalmente haría que los formularios dependieran de una tabla Aux y otra DetalleAux exactamente iguales que arribos y detallearribo. Por si en un determinado momento has escrito, por ejemplo, el barco y el lote, pero decides no seguir. Access, por defecto, automáticamente te guardaría los datos en la tabla, mientras que si depende de la tabla Aux la borras cuando quieras.

Dicho esto, si tengo la tabla Arribos

La tabla Inventario

Con la tabla Arribos construyo un formulario, da igual que sea único o continuo

Cuando pulso Guardar, primero me cuenta, por si ya lo hubiera contabilizado, que me mandaría un mensaje avisándome y no lo guardaría. Como en este caso no

Llega un nuevo arribo y voy a repetir el producto

Cuando pulso Guardar

Me ha aumentado las existencias

El código del botón guardar es

Private Sub Comando13_Click()
If DCount("*", "arribos", "idarribo=" & Me.IdArribo & "") Then
MsgBox "Ese arribo ya ha sido contabilizado", vbOKOnly + vbExclamation, "Otra vez, quizá, hoy no"
DoCmd.CancelEvent
Else
    If Nz(DCount("*", "inventario", "producto='" & Me.Producto & "'")) >= 1 Then
    DoCmd.RunSQL "update inventario set existencias=existencias+" & Me.Kilos & " where producto='" & Me.Producto & "'"
    Else
    DoCmd.RunSQL "insert into inventario(producto,existencias) values(producto,kilos)"
    End If
End If
End Sub

¿Lo qué me recomiendas en el punto 1 es como si tuviera un apartado de notas que se llena el detalle de arribo y luego se vacía al guardar y se manda a la tabla arribos por si es que llegan varios arribos en uno solo o me equivoco?

No, lo que te digo es tipo Factura o Compra. Cuando tu haces una factura de algo que has vendido, lo normal es que a un cliente le hayas vendido varios productos, por tanto UNA factura UNO o VARIOS Productos. Lo mismo que cuando haces una compra a un proveedor, lo normal no es que le compres una única cosa, sino, por ejemplo, Grapas, Folios, sobres, etc. Una Compra uno o varios productos-

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas