ms access - tipos - Comportamiento de naming vba molesto
tipologia del naming (2)
Estoy usando Access 2007 y este comportamiento se puede replicar de la siguiente manera.
1) Crear nuevo archivo accdb de base de datos de acceso.
2) Abre la base de datos y crea un nuevo módulo vba.
3) Crear la 1ra subrutina sub1:
Sub sub1()
Msgbox Err.Description
End Sub
4) Crear la segunda subrutina sub2:
Sub sub2(Description as String)
Msgbox Description
End Sub
En este punto, todo es normal.
5) Pero si voy y cambio el sub2 para que ''Description'' lea ''description'', es decir, cambie ''D'' a ''d'' de esta forma:
Sub sub2(description as String)
Msgbox description
End Sub
¡Esto también tiene un efecto de arrastre y también cambia sub1! Entonces, ese sub1 ahora dice:
Sub sub1()
Msgbox Err.description
End Sub
¿Por qué se ha cambiado ''Err.Description'' a ''Err.description''?
Este comportamiento parece no tener ningún efecto sobre la funcionalidad real del código, por lo que no hay problema. El gran problema que tengo es que estoy exportando mis módulos vba como archivos de texto y poniéndolos bajo el control SVN. Y recientemente, se ha comprometido una gran cantidad de "cambios" inútiles en el repositorio debido a esto.
¿Alguna idea sobre cómo evitar que esto suceda?
Además, recuerde que en VBA, los nombres de las variables no distinguen entre mayúsculas y minúsculas. Entonces la descripción y la descripción son las mismas dentro del mismo alcance.
Lo siento. Esa es una "característica" codificada de VBA. Vea una pregunta similar aquí: ¿Cómo se puede restaurar el caso predeterminado a una variable en VBA (Excel 2010)?
La forma en que he trabajado con el control de código fuente es ejecutar mi repositorio a través de un script que hace lo siguiente:
- Revertir todos los archivos modificados con extensiones de código vba (creando copias de seguridad de archivos .orig)
- Haga una comparación insensible a mayúsculas y minúsculas de los archivos .orig a sus contrapartes
- Si no hay cambios (fuera de los cambios de mayúsculas y minúsculas), elimine el archivo .orig
- Para los archivos .orig restantes (los que tienen cambios reales) elimine el archivo de contraparte y elimine la extensión .orig
Lo que hace esto es ocultar efectivamente los archivos donde están los únicos cambios al caso (un problema constante al trabajar con archivos VBA, como lo está experimentando). No oculta los cambios de caso en un archivo al que se le han hecho otras modificaciones. Está lejos de ser una solución perfecta, pero es lo mejor que se me ocurrió.