Pregunta

Estoy tratando de evitar referencias circulares (o incluso en cascada) en mis datos, y parece que es sólo una parte del tiempo de trabajo.

En Access 2007, tengo el siguiente cuadro:

create table mfr (
    mfr_id                 Autonumber,
    mfr_nm                 Text(255),
    mfr_is_alias_for_id    Long Integer
)

Estoy importando un montón de datos de Excel y la mfr_nm es una de las columnas de la hoja de trabajo. No puedo controlar cómo los datos se entró en Excel, así que quiero una forma de capturar variantes de escritura como "realmente" lo mismo. Hasta ahora, todo va bien (creo ...).

Ahora que he construido una forma fuera de esta tabla. Tengo un cuadro combinado para el alias - de nuevo, hasta ahora, todo bien. Sin embargo, cuando agrego este código al evento BeforeUpdate, las cosas se ponen "interesante" (manejo de errores omite):

If Not IsNull(cboMfrAlias) Then
    If Not IsNull(DLookup("mfr_is_alias_for_id", "mfr", "mfr_id=" & cboMfrAlias)) Then
        MsgBox """Alias for"" must not also be an alias.", vbExclamation
        Cancel = True
    End If
End If

Esto funciona exactamente como yo esperaba que cuando el formulario está en la vista formulario, pero si estoy en mi vista Hoja de datos MsgBox es seguida inmediatamente por un error de acceso generada "No hay registros actuales", es decir no capturado por el manejo de errores dentro de la sub BeforeUpdate.

¿Puedo coger este error? ¿Dónde?

¿Fue útil?

Solución

Su lista desplegable debe filtrar las entradas que son alias. En otras palabras, no se mostrará una opción que el usuario no puede hacer.

haría esto simplemente eliminando el menú desplegable a las opciones donde mfr_is_alias_for_id No es nulo.

He implementado esto en diversas formas y funciona bien.

Otros consejos

Me estoy dirigiendo a la "No hay registros actuales" error parte de su pregunta, desde hace mucho tiempo. Después de comprobar en Google de una respuesta, me encontré con este enlace que era muy útil. Sin embargo, en lugar de utilizar NZ () para transformar el campo binario problemático en una consulta agregada, solía troublesomefield: IIF([troublesomefield] IS NULL,NULL,[troublesomefield]) y esto funcionó para desterrar el error. Así que mi solución es sólo una pequeña variación en la respuesta original que he encontrado, pero se pone alrededor del error y le dejó guardar nulos si quieres ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top