#ms-access #compiler-errors #string-function
Вопрос:
Я унаследовал базу данных MS Access, в которой я должен пакетно обновлять некоторые данные. Таким образом, я создал новый запрос и в качестве первого теста попытался получить отфильтрованный список записей — безуспешно. Access категорически отказывается компилировать код, содержащий ЛЕВУЮ функцию.
Это действительно компилирует:
SELECT ColPath FROM MyTable;
Это не компилируется:
SELECT LEFT([ColPath], 3) FROM MyTable;
Даже простое
SELECT LEFT('Hello', 2);
не работает.
Я много гуглил сейчас и нашел решения, которые либо рекомендуют проверять ссылки в диалоговом окне Инструменты/Ссылки в представлении VBA. В моем случае отсутствующих ссылок нет. Вторым решением было проверить модули VBA на наличие повторяющихся OPTION COMPARE DATABASE
инструкций — в моем случае их не было.
Затем я создал совершенно новую базу данных и попробовал — удивительно, но все работает нормально! Теперь я сравнил ссылки новой базы данных со старой: они одинаковы.
Я был бы рад любым идеям по этому поводу…
Комментарии:
1. какую ошибку вы получаете?
Ответ №1:
Похоже, ты перепутал свои рекомендации.
В редакторе VBA перейдите в раздел Инструменты, затем Ссылки.
Первые 2 всегда должны быть Visual Basic для приложений, а затем Библиотека объектов Microsoft Access ##.# в этом порядке (обратите внимание на кнопки приоритета, чтобы изменить порядок). Все остальное вызовет проблемы.
Даже если у вас нет отсутствующих ссылок, неправильные ссылки все равно могут вызвать эту проблему.
Во-вторых, я бы выполнил общие действия по устранению неполадок, декомпилировал (Win R, MSACCESS.EXE /декомпилируйте, откройте базу данных, нажмите Отладка -gt; Компиляция) , а также компакт-диск и восстановите. Это приведет к перекомпиляции всей вашей базы данных, и если ваш код VBA содержит ошибки компиляции, это повлияет на любые запросы, вызывающие любую функцию.