Buscar Registros y mostrarlos en diferentes cuadros de texto

Tengo un formulario en el que tengo tres cuadros de texto y tres cuadros combinados, al darle el botón guardar este me va a guardar el nombre del Proveedor, la Cantidad y por valor predeterminado me registra la fecha. Por cada día que ingreso datos me hace un registro por cada proveedor.

El problema que tengo es a la hora que quiero modificar alguna cantidad que registre mal, primero lo filtro por fecha, nombre de proveedor y me muestra bien los datos en el formulario, PERO al momento que le actualizo un valor y lo guardo este actualiza el valor de otra fecha y no del registro que tengo visible en el formulario.

Agradezco la ayuda que me puedan dar

Subformulario_Registro = Es un Subformulario

Frm_Registro = Formulario principal

Cuadros de texto y combinado:

txt_Fecha_Registro

txt_Filtro_Proveedor

Txt_Nom_Proveedor1

 cmb_Cantidad1

Txt_Nom_Proveedor2

cmb_Cantidad2

Txt_Nom_Proveedor3

cmb_Cantidad3

El código de los botones Guardar y Buscar son los siguientes:

Private Sub Btn_Guardar_Click()

Dim db As Database
Dim rs As Recordset
Set db = CurrentDb

Set rs = db.OpenRecordset("Tbl_Ingreso")

'Insert Proveedor1
rs.AddNew
rs!Dsc_Proveedor = Form!Txt_Nom_Proveedor1.Value
rs!Cantidad = Form!cmb_Cantidad1.Value

rs.Update

'Insert Proveedor2
rs.AddNew
rs!Dsc_Proveedor = Form!Txt_Nom_Proveedor2.Value
rs!Cantidad = Form!cmb_Cantidad2.Value

rs.Update

'Insert Proveedor3
rs.AddNew
rs!Dsc_Proveedor = Form!Txt_Nom_Proveedor3.Value
rs!Cantidad = Form!cmbCantidad3.Value

rs.Update

MsgBox "Los datos del Ingreso " & Date & ", se ingresaron satisfactoriamente ", vbInformation, "Registro"

Exit Sub

End Sub

Private Sub btn_Buscar_Click()

If IsNull(txt_Fecha_Registro) Then
MsgBox "Debe indicar la Fecha del Registro", vbExclamation, "Atencion"
txt_Fecha_Registro = Null
txt_Fecha_Registro.SetFocus
Else
Form_Frm_Registro.Refresh
If IsNull(Form_Subformulario_Registro.Dsc_Provedor) Then
MsgBox "El Registro no Existe", vbExclamation, "Dato no encontrado"
txt_Fecha_Registro = Null
txt_Fecha_Registro.SetFocus
Else
If (txt_Filtro_Proveedor = "Proveedor1") Then
txt_Fecha_Registro = Form_Subformulario_Registro.Fec_Registro
Txt_Nom_Proveedor1 = Form_Subformulario_Registro.Dsc_Proveedor
cmb_Cantidad1 = Form_Subformulario_Registro.Cantidad
Else
If (txt_Filtro_Proveedor = "Proveedor2") Then
txt_Fecha_Registro = Form_Subformulario_Registro.Fec_Registro
Txt_Nom_Proveedor2 = Form_Subformulario_Registro.Dsc_Proveedor
cmb_Cantidad2 = Form_Subformulario_Registro.Cantidad
Else
If (txt_Filtro_Proveedor = "Proveedor3") Then
txt_Fecha_Registro = Form_Subformulario_Registro.Fec_Registro
Txt_Nom_Proveedor3 = Form_Subformulario_Registro.Dsc_Proveedor
cmb_Cantidad3 = Form_Subformulario_Registro.Cantidad
End If
End If
End If
End If
End If

End Sub

1 respuesta

Respuesta
1

Lo que te sucede es lógico, porque en el botón guardar le estás diciendo que cree nuevos registros (rs. AddNew)

Para que te edite un registro previo, primero tendrás que situar el recordset en ese registro, puedes usar rs. Find "criterio", donde criterio será la condición para hacer la búsqueda, o crear un recordset ya filtrado con los datos del registro que quieres editar. Si tienes un identificador único es más sencillo.

Luego, usas rs. Edit para indicar que lo vas a modificar, le pasas los nuevos valores, igual que haces ahora, y actualizas el registro, con rs.Update

Además, en el código tendrás que indicarle de alguna forma que estás modificando el registro y no añadiendo uno nuevo. Una opción sería crear una variable pública a nivel de módulo (Public bolEditar As Boolean), que al pulsar en el botón Buscar tome valor verdadero si encuentra lo que buscas (bolEditar=True), y que en el botón guardar distingas ambos casos con un bloque End If:
If bolEditar=True Then

'Código para editar registros según lo que te indico

Else

'Código para añadir registros, que es el que tienes actualmente

End If

Por último, necesitas poner la variable en falso una vez que guardes el registro, con bolEditar=False al final del código del botón de guardar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas