¿Por qué aparece error en Docmd FindRecord?

A tod@s

He creado una pequeña base de datos para ir acumulando estadística de pacientes. Tengo tres formularios.

1. ¿El primero pregunta que quieres hacer? Crear nuevo paciente o modificar

2. El segundo abre un formulario para introducir los datos del paciente

3. El tercero permite seleccionar que paciente queremos modificar

En el ultimo formulario he introducido el siguiente código

Option compare Database

Private Sub Comando126_Click()
Dim b As Double

b = Form_Form_Modificar.Texto1.Value

DoCmd.OpenForm "Form_Pacientes"

DoCmd.FindRecord b

DoCmd.Close acForm, "Form_Modificar"

If b <> Form_Form_Pacientes.ID.Value Then

MsgBox ("No hay ningún paciente con este ID")

DoCmd.Close acForm, "Form_Pacientes"

End If

End Sub

Lo he intentado correr muchas veces pero siempre me sale el error 2137 " No se puede buscar ni reemplazar" y me señala la fila que esta en negrita. No se por donde tirar.

¿Alguien me puede echar un cable?

1 respuesta

Respuesta
1

Me permitirás que te diga que ese código es... bastante curioso

Parece que quieres abrir el formulario Form_Pacientes filtrado a un determinado valor.

Confieso que nunca he utilizado FindRecord (porque ni siquiera lo conocía) pero una vez vista la ayuda, tampoco le veo gran utilidad (al menos de momento)

En estos casos se utiliza uno de los argumentos del OpenForm: el wherecondition

DoCmd.OpenForm "Form_Pacientes", , , "ID=" & Me!Texto1

Ahora bien, si deseas evaluar previamente su existencia, puedes utilizar una función de dominio para contar cuantos existen con ese ID

If DCount("*", tblPacientes", "ID=" & Me!Texto1) = 0 Then

MsgBox "No existe ningún paciente con ese ID"

End If

¿Te vale?

Un saludo

Xavi
http://www.mvp-access.com
http://www.aesoft-databases.com/aesdb

Hola Xavi

Muy buena tu ayuda. He modificado el código. Ahora si que me distingue si el ID existe o no. Lo que ocurre es que cuando le pongo un ID que si que existe , me abre el formulario en blanco y a mi me gustaría que me lo abriera con los datos que tiene la tabla para poder retocarlos. Tengo que seleccionar alguna opción para que me abra todos los campos del formulario y/o escribirlo en el código???

Private Sub Comando125_Click()
If DCount("*", "Pacientes", "ID=" & Me!Texto0) = 0 Then

MsgBox "No existe ningún paciente con ese ID"

Else

DoCmd.OpenForm "Form_Pacientes", , , "ID='Texto0'"

DoCmd.Close acForm, "Form_Modificar"

End If

End Sub

Gracias de antemano

Tienes mal el wherecondition

"ID='Texto0'" no es correcto. Eso simplemente mostraría un registro cuyo ID contuviera el valor Texto0 (literal), no el valor DE Texto0

Debes "sacar" el valor fuera, tal como haces en el DCount

"ID = " & Me!Texto0

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas