Anexar datos

Tengo diseñada una receta con su detalle.
Receta: CodArticulo + Nombre + U/Med + Costo
DetalleReceta: CodDetRec + CodArticulo + CodMatPrima + Cantidad
La he diseñada para llevar un control de inventario.
Cuando desee utilizarla en un form deseo agregarla mediante código.
He intentando por medio de un combobox en un form
Form: NoEntrada + Fecha + CodAdm + codArticulo (combobox proveniente de Receta)
DetalleForm: CodMatPrima + Cantidad
Al seleccionar CodArticulo de la receta se me pasan los datos del detalle de la receta
en el detalle del form.
Utilizo el siguiente codigo:
'Agregar los datos del detalle
Forms!TrasladoS![DetalleTrasladoS].Form.RecordSource = "select CodMatPrima,Cantidad from DetalleReceta where [CodArticulo]=[forms]![TrasladoS]![CodArticulo]"
'Guardar Datos
DoCmd.SetWarnings False
DoCmd.RunSQL "Insert into DetalleTrasladoS select CodMatPrima,Cantidad from DetalleReceta where [CodArticulo]=[forms]![TrasladoS]![CodArticulo]"
Esta es la parte del código que no me hace efecto, es decir no me guarda el valor del campo NoTraslados en el Detalle
DoCmd.SetWarnings False
DoCmd.RunSQL "update DetalleTrasladoS set NoTrasladoS=[forms]![TrasladoS]![NoTrasladoS] where [NoTrasladoS]=[forms]![TrasladoS]![NoTrasladoS]"
Espero me pueda ayudar.

1 respuesta

Respuesta
Prueba onerlo así.
Si no te coge dato para actualizar una de dos, o es por el value o el dato que quieres actualizar no se encuentra en la tabla.
DoCmd.RunSQL "UPDATE DetalleTrasladoS SET [NoTrasladoS] = [forms]![TrasladoS]![NoTrasladoS]" & _
"WHERE ((([NoTrasladoS]) Like '" & [Forms]![TrasladoS]![NoTrasladoS].Value & "'));"
Bueno, probé el código y me dio el mismo resultado.
Lo explico de nuevo.
Necesito guardar los datos del detalle de la receta seleccionada en la tabla DetalleTrasladoS
asignando el NoTrasladoS del form activo.
Es decir si el NoTrasladoS es 4, que el campo NoTrasladoS de la tabla DetalleTrasladoS se guarda
solamente para los datos de la receta seleccionada.
Espero me pueda ayudar, me es urgente
Gracias y Dios lo bendiga
Según muestras en tu UPDATE estas cogiendo un dato de un formulario y quieres cambiar el valor de la tabla si coincide. El código está bien pero... para que funcione asegurate que en la tabla existe el mismo dato que pones de criterio
Si en la tabla delallesNot en el campo Notraslados tiene valor 4 en el formulario tiene que haber un valor 4 como criterio según me has enviado, porque sino nunca te hará el update, nunca, si ese valor 4 o deseas cambiar por 5, Update tiene que tener un valor igual al del campo si tabla es 4 y el criterio del formulario es 4 lo cambio por 5.
Voy a plantearle el problema de otra forma:
Tengo diseñada las siguientes tablas:
Articulo: NoArt + Nombre + Costo + Precio
DetalleMateriaPrima: NoDetMP + NoArt + Cantidad
Es decir un Articulo contiene varias materia prima
como una Receta del Articulo
TrasladoS: NoTrasladoS + fecha + Empleado + NoArt
DetalleTrasladoS: NoDetTS + NoTrasladoS + Cantidad + Costo + Subtotal
Es decir, Un Traslado de Salida tiene muchos detalles
Lo interesante es el campo NoArt que esta en TrasladoS
La función que tendrá es la siguiente:
Como ya tengo la materia prima utilizada para un articulo, esta tabla
me lleva el control de salidas de materia prima en almacen.
Cuando yo seleccione de un combobox el articulo, lo que deseo es que
el detalle de materia prima se me agregue al subformulario, en este caso
el Form: TrasladoS y el Sub: DetalleTrasladoS.
Necesito el código que me realice esta función.
Espero me pueda ayudar.
Yo tengo el código siguiente, pero tengo un problema.
1 Forms!TrasladoS![DetalleTrasladoS Subformulario].Form.RecordSource = "select NoArt,Cantidad from DetalleMateriaPrima where [NoArt]=[forms]![TrasladoS]![NoArt]"
2 DoCmd.SetWarnings False
3 DoCmd.RunSQL "Insert into DetalleTrasladoS select NoArt,Cantidad from DetalleMateriaPrima where [NoArt]=[forms]![TrasladoS]![NoArt]"
4 DoCmd.SetWarnings False
5 DoCmd.RunSQL "update DetalleTrasladoS set NoTrasladoS=[forms]![TrasladoS]![NoTrasladoS] where [NoTrasladoS]=[forms]![TrasladoS]![NoTrasladoS]"
El problema esta en la linea 5.
Después que inserto los datos de la materia prima al subform, tengo que actualizar el campo que me vincula a los dos forms,
en este caso es NoTrasladoS, pero no me pone ningún valor en dicho campo de la tabla DetalleTrasladoS.
Necesito encontrarle una solución.
Se lo agradecería mucho
Dios lo bendiga!
Al final es lo mismo que te digo yo, te comento para hacer un Update has de tener:
Valor=Valor lo cambio por por, es decir si en la linea 3 insertas un dato y este va a la tabla, en la linea 5 mencionas un Update de ese valor, tu estás seguro de que hacer bien el Inser Into, ¿de qué el primer dato se guarda? Y cuando digo que se guarda me refiero que cuando hagas el Update este pueda captar el dato, me da la sensación que en la linea 3 si haces el insert, pero tus forms no se sincronizan con la tabla, por eso el update te falla.
El código de la linea 3 me resulta, porque me voy a la tabla DetalleTrasladoS y se me guardan los datos del detalle de materia prima, el problema es que no se me guarda el valor del campo NoTrasladoS correspondiente al formulario activo. Este valor se queda vacío, con el código de la linea 5 trato de actualizar este campo NoTrasladoS de solamente los datos del detalle que acabo de ingresar, pero no se me actualiza.
Me parece que el problema esta en el where del código, porque si le quito el where si me actualiza en la tabla los datos, pero como sabe yo ingresare muchos registros y necesito que tomen el valor correspondiente al formulario activo (NoTrasladoS)
Si puede ayudarme, se lo agradecería mucho
Ya veo el problema es las dos select que estas haciendo, es decir a poner la condición where te da errores de agregado y/o te hace falta consulta actualizable.
Te paso un código y lo adaptas a tus tablas, esto lo que hace es sumar, primero buscamos en una tabla y después actualizamos el dato
Dim Misuma As Currency
Misuma = DSum("total_detalle", "T2", _
"idfactura = 12")
DoCmd.RunSQL "UPDATE t1 SET t1.total_detalle = " & Misuma & " WHERE (((t1.idfactura)=12));"
La verdad no entiendo lo que me mando.
¿Dígame si existe otra manera de agregar datos?
Gracias
Te comento de forma que 'puedas entenderlo
Este código lo puedes poner en un botón de tu formulario y hace lo siguiente
Dim Misuma As Currency ' Declaramos la variable
' La variable Misuma Es donde almacenará el valor de la suma de la tabla t2 el campo total_detalle
Misuma = DSum("total_detalle", "T2", _
"idfactura = " & Idfacturadelt1 & "));"") 'idFacturadeT1 es el campo a comparar con la 'tabla t2 y el campo t1.id_factura
'una vez que ha sumado los datos pasamoa a actualizar la tabla t1 el campo Total, con la 'suma de antes
DoCmd.RunSQL "UPDATE t1 SET t1.total_detalle = " & Misuma & " WHERE (((t1.idfactura)=12));"
Esta manera es la más sencilla que puedes hacerlo y no como lo hacías antes que creabas anbiguedades, access se liá si no le dices las cosas claras.
Hecho y cerrado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas