Хобрук: Ваш путь к мастерству в программировании

Почему мой VBA для MS Access глючит?

Это своего рода расплывчатый вопрос, и его трудно объяснить. Я пытаюсь закодировать свою базу данных доступа, но часть VBA меня действительно раздражает. Всякий раз, когда я что-то печатаю и нажимаю пробел, он автоматически повторяет это пространство и возвращает меня к предыдущему слову, которое я печатал. Кроме того, Intellisense появится на долю секунды, мигнет и исчезнет, ​​а мой курсор вернется к тексту, который я только что набирал. Это приводит к тому, что я постоянно печатаю что-то в местах, где их быть не должно, и к отсутствию пробелов между элементами моего кода. Кто-нибудь знает, почему это происходит? База данных, которую я использую, была создана в Access 2007, но я разрабатываю ее в 2010. Вверху написано Microsoft Access 2007-2010.

Спасибо за вашу помощь.


  • Также см. это: stackoverflow.com/questions/1164138/ 05.06.2012
  • Это также полезно и может частично решить проблему, спасибо. 06.06.2012

Ответы:


1

Наиболее вероятная причина в том, что у вас открыта форма с активным событием таймера.

Происходит то, что когда вы редактируете свой код, код выполняется с некоторым регулярным интервалом. Каждый раз, когда запускается другой код, запускается JIT-компилятор для VBA.

Обычно, когда вы пишете код, эта компиляция в реальном времени происходит всякий раз, когда вы переходите от одной строки кода к другой: возникают ошибки компиляции, обрезаются конечные пробелы и т. д.

Однако в вашем случае у вас есть какой-то фрагмент кода, который работает. Прежде чем он сможет запуститься, должен запуститься компилятор. И делает то же самое, что и обычно. Больше всего раздражает то, что он обрезает конечный пробел из вашей строки.


Решение состоит в том, чтобы закрыть форму с активным событием таймера или установить интервал таймера равным 0, пока вы редактируете свой код.

05.06.2012
  • Спасибо за ваше объяснение. Это, кажется, решило это по большей части. Предыдущий разработчик использует скрытую форму с активным событием таймера, насколько я понимаю, для отслеживания глобалов. В любом случае, закрытие всех форм, кажется, решает проблему. Спасибо! 05.06.2012
  • Принял ваш ответ как правильный. По какой-то причине формы без таймеров по-прежнему вызывают эту проблему. Мне немного неприятно закрывать эти формы, пока я пишу код. Набирать этот ответ с облегчением, так как мне не нужно нажимать клавишу пробела и сбрасывать курсор :) 05.06.2012
  • @Scott У вас такая же проблема с новой пустой базой данных или она ограничена этой конкретной базой данных? 05.06.2012
  • У меня нет этой проблемы с новыми базами данных, которые я создаю в Access 2010. Я сталкиваюсь с этой раздражающей проблемой только при работе с унаследованной базой данных (которая была создана в Access 2007). Это происходит только тогда, когда я работаю над кодированием для определенных форм, и я не вижу ничего особенного в коде каждой формы, что заставляло бы его постоянно компилироваться, пока я работаю над ним. 06.06.2012
  • Откройте лист свойств затронутых форм, перейдите на вкладку «События» и проверьте, заполнено ли поле On Timer (это может быть [Event Procedure] или =SomeFunction()). Кроме того, проверьте, есть ли в поле Timer Interval что-то кроме 0. 07.06.2012
  • Это раздражает, и мне потребовались недели, чтобы понять, что происходит, когда это происходит. Я рад, что вы смогли получить ответ. 27.06.2012
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..