ms-access access-vba ms-access-2010

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.