¿Porqué un formulario sólo puede meter datos en modo no emergente?

He modificado el código para hacer un formulario que simule un ortograma para una clinica dental. El caso es que funciona pero solo en modo no emergente, cuándo lo cambio a modo emergente no puedo introducir los datos.

Uso este código:

Dim ctl As Control
For Each ctl In Me.Controls
If ctl.ControlType = acLabel And IsNumeric(Left(ctl.Name, 2)) Then
ctl.OnClick = "=barra('" & ctl.Name & "','Colores', 'Caries', 1, 'Endodoncia', 2, 'Reparada', 3, 'Implante', 4, 'Extirpada', 5)"
End If
Next ctl

Function AsignaValor(Etiqueta As String, Valor As String)
Dim rs As DAO.Recordset
If IsNull(Me.cboPaciente) Or Me.cboPaciente = "" Then
MsgBox "Debe seleccionar un Paciente", vbInformation + vbOKOnly, "ATENCION"
Exit Function
End If
Set rs = CurrentDb.OpenRecordset("SELECT * FROM tblOdontograma WHERE Paciente= " & Me.cboPaciente & " AND " & "Pieza= " & Left(Etiqueta, 2) & " AND Cara = '" & Right(Etiqueta, 1) & "'")
If Not rs.EOF Then
rs.Edit
rs!afeccion = Valor
rs.Update
Else
rs.AddNew
rs!Paciente = Me.cboPaciente
rs!pieza = Left(Etiqueta, 2)
rs!cara = Right(Etiqueta, 1)
rs!afeccion = Valor
rs.Update
End If
rs.Close
Set rs = Nothing
RellenaColor

¿Alguna idea de a que se debe?

1 respuesta

Respuesta

¿En qué línea comienza el problema?
Además de emergente ¿también es MODAL?

Si el problema lo delata en la asignación de los eventos, bastará con una asignación previa a la activación de su propiedad emergente o la alternativa de no asignarlos en tiempo de ejecución.

Hola, no me salta ningún error, simplementa no me introduce los valores en la tabla. He probado cambiando el valor de modal pero sigue igual, solamente funciona en modo no emergente.

Con respecto a lo que me indica no lo he entendido. ¿Cómo crees que debería hacerlo?

Gracias.

Si funciona correctamente cuando no es emergente, lo más probable es que esta parte del código no se ejecute:

Dim ctl As Control
For Each ctl In Me.Controls
If ctl.ControlType = acLabel And IsNumeric(Left(ctl.Name, 2)) Then
ctl.OnClick = "=barra('" & ctl.Name & "','Colores', 'Caries', 1, 'Endodoncia', 2, 'Reparada', 3, 'Implante', 4, 'Extirpada', 5)"
End If
Next ctl

Es muy probable que la propiedad 'emergente' bloquee la de edición y no asigne los valores.

Aconsejo un punto de interrupción y verificar paso a paso la ejecución del código y la asignación de propiedades a los objetos.

Las opciones propuestas (entre otras muchas que pudieran aparecer):

.- Abrirlo en forma invisible, asignar los valores y tras ello se le hace visible y emergente .. ¿funciona?
.- (Sin más datos que los publicados): modificar el método, creando/fijando  los eventos y que solo se modifique/seleccione en tiempo de ejecución el valor a asignar.

Muchas gracias por perder el tiempo en ayudarme. Sé es que se muestra la barra pero luego no introduce ningún registro en la tabla.

Por desgracia no sé como poner puntos de verificacion ni ejecutar paso a paso, no sé ni por donde empezar. 

Gracias de todas formas, seguiré investigando a ver.

Poner un punto de interrupción y quitarlo es sencillo, basta un click a la izquierda de la línea que nos interese y si lo acepta -hay líneas que no lo permiten (ejemplo: las que comienzan con DIM).

Cuando se marca un punto, si en el transcurso del programa se llega a el, se detiene la ejecución, se abre (y 'emerge') la ventana de VBA con esa línea resaltada a la espera de nuestra acción.

Es el momento de utilizar 'F8' y ver lo que hace Access cuando nadie lo vigila.
(Con 'F5' se continua como si nada hubiera sucedido).

Si el código publicado es creación propia, se puede hacer un seguimiento para localizar el problema, en otro caso lo veo un poco complicado.

¿Es imprescindible utilizar ese método para crear las acciones del formulario?...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas