Saludos compañeros, cómo puedo hacer para que una consulta de datos anexados solo me agregue el registro nuevo y no los 262

A los distinguidos cooperantes de este grupo ya casi termino mi proyecto y uds han sido de ayuda. Esta vez tengo una tabla productos y una tabla inventario, realice un formulario de productos nuevos que llena la tabla productos y una consulta de datos anexados para que se llene la tabla de inventario todo se ejecuta perfecto excepto que cuando ejecutó a través del formulario la consulta de datos anexados me lleva para la tabla inventario el registro que estoy ingresando nuevo más los 262 registros que ya están guardados. El problema es que la tabla inventario se me está llenando de registros repetidos. Como siempre agradezco su tiempo y explicación para resolver esta situación

2 Respuestas

Respuesta
1

Lo mejor sería que pusieras alguna imagen porqué quizá no sea necesaria la consulta de datos anexados. Por ejemplo, en el formulario productos podrías poner en algún evento algo como

DOCMD.RUNSQL"INSERT INTO PRODUCTOS(producto,precio,cantidad,...) values('" & me.producto & "', " & me.precio & "," " & me.cantidad & ",...)"

Así sólo te guardaría en la tabla Inventario los datos de un registro en particular

Perdón, donde he puesto Productos sería Inventario

Respuesta
1

Estoy de acuerdo no creo que necesite la consulta de anexados. Observe este código

' Supongamos que tiene un formulario llamado "frmProductosNuevos" con los campos correspondientes
' como "txtIdProducto", "txtNombreProducto" y "txtCantidad"
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim idProducto As Integer
Dim nombreProducto As String
Dim cantidad As Integer
' Obtiene los valores ingresados en el formulario y asígnalos a las variables correspondientes
idProducto = Me.txtIdProducto.Value
nombreProducto = Me.txtNombreProducto.Value
cantidad = Me.txtCantidad.Value
' Verifica si el producto ya existe en la tabla de inventario
strSQL = "SELECT 1 FROM inventario WHERE id_producto=" & idProducto
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL)
If rs.EOF Then
    ' El producto es nuevo, realiza una inserción en la tabla de inventario
    strSQL = "INSERT INTO inventario (id_producto, nombre_producto, cantidad) VALUES (" & idProducto & ", '" & nombreProducto & "', " & cantidad & ")"
    db.Execute strSQL
Else
    ' El producto ya existe, realiza una actualización en lugar de inserción
    strSQL = "UPDATE inventario SET cantidad = cantidad + " & cantidad & " WHERE id_producto=" & idProducto
    db.Execute strSQL
End If
rs.Close
Set rs = Nothing
Set db = Nothing

¡Gracias! Saludos compañero Eduardo, gracias por enseñanza realice los pasos que me diste y se ejecuta perfecto lo yo quería. Además me sirvió para eliminar un formulario porque yo tenía uno para nuevos productos y otro para actualizar.... Que dios le siga iluminando su mente!!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas