Botón agregar registro
Buenos días, estoy desarrollando una aplicación Access en el trabajo y me he encontrado un problema que no sé solucionar.
Tengo una BD con varias tablas y necesito crear varios formularios para ir cargando datos en las mismas o para hacer consultas.
En concreto mi problema surge con un botón que agrega registros a una tabla. Así, sin realizar ningún tipo de validación adicional el código funciona correctamente, introduce el contenido de los dos campos (un cuadro de texto y un combo que se alimenta de otra tabla).
En la tabla tengo definidos tres campos: Idcomprador autonumérico, Ncomprador (tipo texto, indexado sin duplicados) e IdZona (tipo texto, indexado con duplicados).
Quiero introducir un código en el botón que agrega los datos a la tabla que verifique si los datos introducidos en el formulario ya existen en la tabla y en caso afirmativo mostrar un mensaje de error debidamente formateado, para evitar que sea el propio Access quien lo muestre.
He probado el método findfirst para que recorra la tabla en busca del nombre y en caso de coincidencia realice la misma operación con el campo zona. Si encuentra en el mismo recordset los dos campos debe mostrar una advertencia, regresar el control al formulario y limpiar los campos. El caso es que aunque lo he probado de mil maneras distintas y siempre se da error.
¿Cuál sería la forma correcta de utilizarlo?, o ¿Debería usar otro método?.
El código que he puesto es el siguiente:
Texto7.SetFocus ' Fijo el foco en el control
Texto = Texto7.Text ' Vuelco el contenido del campo a la variable tipo String
rs.FindFirst "Texto = " & rs!Ncomprador
If rs.NoMatch Then
MSG = MsgBox("No encontrado", vbOKOnly)
rs.AddNew
Texto7.SetFocus
rs!Ncomprador = Texto7.Text
Combo.SetFocus
rs!IdZona = Combo.Text
rs.Update
rs.Close
db.Close
Else
MSG = MsgBox("Registro duplicado", vbOKOnly)
End If
Muchas gracias de antemano.
Tengo una BD con varias tablas y necesito crear varios formularios para ir cargando datos en las mismas o para hacer consultas.
En concreto mi problema surge con un botón que agrega registros a una tabla. Así, sin realizar ningún tipo de validación adicional el código funciona correctamente, introduce el contenido de los dos campos (un cuadro de texto y un combo que se alimenta de otra tabla).
En la tabla tengo definidos tres campos: Idcomprador autonumérico, Ncomprador (tipo texto, indexado sin duplicados) e IdZona (tipo texto, indexado con duplicados).
Quiero introducir un código en el botón que agrega los datos a la tabla que verifique si los datos introducidos en el formulario ya existen en la tabla y en caso afirmativo mostrar un mensaje de error debidamente formateado, para evitar que sea el propio Access quien lo muestre.
He probado el método findfirst para que recorra la tabla en busca del nombre y en caso de coincidencia realice la misma operación con el campo zona. Si encuentra en el mismo recordset los dos campos debe mostrar una advertencia, regresar el control al formulario y limpiar los campos. El caso es que aunque lo he probado de mil maneras distintas y siempre se da error.
¿Cuál sería la forma correcta de utilizarlo?, o ¿Debería usar otro método?.
El código que he puesto es el siguiente:
Texto7.SetFocus ' Fijo el foco en el control
Texto = Texto7.Text ' Vuelco el contenido del campo a la variable tipo String
rs.FindFirst "Texto = " & rs!Ncomprador
If rs.NoMatch Then
MSG = MsgBox("No encontrado", vbOKOnly)
rs.AddNew
Texto7.SetFocus
rs!Ncomprador = Texto7.Text
Combo.SetFocus
rs!IdZona = Combo.Text
rs.Update
rs.Close
db.Close
Else
MSG = MsgBox("Registro duplicado", vbOKOnly)
End If
Muchas gracias de antemano.
1 Respuesta
Respuesta de luis45ccs