ms access - error 2115 en la selección de cuadro combinado
ms-access access-vba (2)
Probablemente estés colisionando con el evento BeforeUpdate.
Intenta usar AfterUpdate.
Tengo un cuadro combinado en un formulario y estoy tratando de seleccionar mediante programación uno de los elementos en el cuadro combinado después de ejecutar mi consulta SQL en la base de datos de acceso. Utilizo el siguiente código para iterar sobre los elementos y establecer el elemento seleccionado:
''Make the appropriate location appear in the combobox
For i = 0 To cboLocations.ListCount - 1
If Me.cboLocations.Column(0, i) = locindex Then
Debug.Print "locindex: " & locindex & vbCrLf & " Me.cboLocations.Column(0, i):" & Me.cboLocations.Column(0, i)
Me.cboLocations.SetFocus
Me.cboLocations.ListIndex = i ''<<< error 2115
Exit For
End If
Next i
Como se indica, sigo recibiendo el error 2115: la macro o función establecida en la propiedad BeforeUpdate o ValidationRule para este campo impide que Access guarde los datos en el campo.
Ninguna de las propiedades para este combobox indicado en el mensaje de error se establece en cualquier cosa. Así que estoy atascado. Por favor avise.
programáticamente selecciona uno de los elementos en el cuadro combinado
La forma en que siempre lo he hecho es asignarle algo al Value
del combo así ...
Me.MyCombo.Value = "target text"
Value
proviene de la columna enlazada de la fila seleccionada del combo. (Puede encontrar Columna encuadernada en la pestaña Datos de la hoja de propiedades del combo). Por el contrario, asignar "texto de destino" a Value
selecciona la fila correspondiente.
En su situación, creo que está tratando de seleccionar la fila combinada que contiene el mismo texto que su variable locindex . Y si eso es cierto, entonces creo que todo lo que necesitas es esto ...
Me.cboLocations.Value = locindex
En cuanto a eso, ni Before Update ni Validation Rule me parecen la elección correcta. Le sugiero que lo haga desde cualquier código que esté utilizando para ejecutar su "consulta SQL en la base de datos", inmediatamente después de la consulta.