Como hacer si condicional en consulta de access (función Silnm),
Access utiliza SIEMPRE la configuración regional de la maquina en que 'corre' el programa cuando no esta trabajando en la ventana de VBA
La utilización de la coma o el punto y coma (como separadores de listas) o la coma y el punto (como separador decimal) le es ajena totalmente.
Si se utilizan expresiones (adecuadas para la ventana de VBA) en ubicaciones que no sean VBA, es cuando Access puede perder el control y 'hacer cualquier cosa', pero no es su culpa.
(es como si un conductor novel, confunde el pedal de freno con el del acelerador y …. pasa lo que pasa, la culpa no es de la maquina es del que 'siempre busca culpar a otros' en lugar de aprender a conducir).
En un entorno bien aplicado y correctamente diseñado, Access esperara que si el separador de listas LOCAL es la coma, el separador decimal para ese entorno sea el punto y si 'el separador de listas' es el punto y coma, el separador decimal esperado: es la coma
Por lo que aplicar en una misma sentencia el mismo indicador (separador) para las listas y para los decimales, implica necesariamente que esa aplicación tiene un error en su diseño que 'saltara' en cualquier parte en el momento mas inesperado (y con seguridad que será el menos oportuno).
Hay metodología (en Access y desde su primera versión) para intercambiar información entre niveles (el nivel VBA en que todo tiene una única forma de proceder) y el nivel del usuario (en el que interviene la capa de abstracción y se adapta al entorno/lenguaje local).
Aclarando esto ultimo:
VBA = sala de maquinas, sus referencias son siempre las mismas (las del lenguaje americano, sus creadores) esto es:
.- separador de listas = la coma simple
.- Separador decimal = el punto
Entorno del usuario= nivel superior (formularios, informes, consultas …) en los que Access 'intenta' adaptarse al entorno del usuario
- para ello existe una capa de abstracción o 'un oculto traductor' que de forma transparente adecua las expresiones en función del formato de idioma local, algo que depende exclusivamente del idioma seleccionado al instalar/utilizar WINDOWS (no Access):
.- separador de listas = la que indique su versión de Windows en la configuración regional (en España suele ser el punto y coma)
.- Separador decimal = la que indique su versión de Windows en la configuración regional (en España suele ser la coma, el punto lo desprecia por utilizarlo como 'el separador de miles' y es simple estética)
Es probable que en otros entornos se utilicen mezclas de ambos u otros diferentes, pero eso (bien diseñada la aplicación) a Access le es indiferente ya que espera formatos muy concretos en VBA (siempre los mismos aun en chino) y fuera de el (entorno del usuario) los que sean adecuados al idioma local.
Nota adicional:
Muchos de esos errores suelen provenir por utilizar valores numéricos como si fueran textos, sin tener en cuenta que Access detecta 'el tipo de campo' y aplica el tratamiento oportuno, utilizar una expresión de texto (ejemplo: 6,45 €) como si fuera un numero, acostumbra ser el primer paso hacia el abismo.