2014-12-16 1 views
1

У меня есть база данных Access, которая использует связанные таблицы, находящиеся на SQL Server. Для одной из этих таблиц я создал простую форму, показывающую несколько полей базовой таблицы.Доступ к отображению первой записи при использовании комбинированного поля для переключения записей

Я хочу переключать записи с помощью комбинированного блока, поэтому я добавил его с помощью мастера Combo Box Wizard, где я выбрал опцию «Найти запись в моей форме на основе значения, выбранного мной в поле со списком».

Сопутствующее поле работает, но я заметил, что всякий раз, когда выбрано новое значение, Access будет кратковременно возвращаться к первой записи перед отображением выбранной записи. Я могу проверить это, заметив мерцание экрана (например, связанные поля кратко отображают данные из первой записи), а также профилирование вызовов SQL Server, где я могу увидеть один запрос для первой записи, а другой запрос для выбранная запись.

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

Как избежать этого ненужного запроса?

+0

Что было сделано с помощью мастера, это создать макрос за событием вашего вызова combobox. Вероятно, это выглядит примерно так: ',, First, =" [SomeField] = "& Str (Nz (Screen.ActiveControl, 0))' .. То, что вы действительно можете сделать, вместо использования макроса, следует за чем-то вроде [this] (http://allenbrowne.com/ser-03.html) –

+0

@Invent - Анимация - Это работает, спасибо. У вас есть объяснение, почему Access ведет себя так? Если вы переместите свой комментарий к ответу, я могу принять его. – matk

ответ

0

Что было сделано с помощью мастера, это создать макрос за событием вашего щелчка со списком. Вероятно, это выглядит примерно так. , , First, ="[SomeField] = " & Str(Nz(Screen.ActiveControl,0)) .. Что вы можете на самом деле делать, а не использовать макрос, следуют чему-то вроде this

Если мы посмотрим, что делает этот макрос (или какие аргументы он принимает), это немного более понятно, почему вы можете испытывать такое поведение.

Первый аргумент - Object Type, затем Object Name, затем Record, затем Offset.

  1. Object Type - тип объекта, который содержит запись, которую хотите сделать ток. Нажмите «Таблица», «Запрос», «Форма», «Вид сервера», «Хранилище» Процедура или функция в поле «Тип объекта» в разделе «Аргументы» панели «Макростроитель» в разделе «Действия» . Оставьте этот аргумент пустым, чтобы выбрать активный объект. < - Ваш будет оставлено пустым, потому что вы имеете в виду выпадающий список на форме
  2. Object Name - название объекта, который содержит запись, которую хотите сделать текущую запись. В поле «Имя объекта» отображаются все объекты в текущей базе данных типа, выбранного аргументом типа «Объект ». Если оставить аргумент «Тип объекта» пустым, оставьте поле пустым. < - Поскольку первый из них остался пустым
  3. Record - Запись для записи текущего . Нажмите «Предыдущее», «Далее», «Первый», «Последний», «Перейти» или «Новый» в поле «Запись» . По умолчанию используется следующий. < - Это дефолт Сначала для меня и, возможно, для вас тоже, , вероятно, почему вы видели это «странное» поведение
  4. Offset - Целое число или выражение, в целое число. Выражение должно сопровождаться знаком равенства (=). Этот аргумент определяет запись для записи текущей записи.Вы можете использовать аргумент смещения двумя способами: когда аргумент записи следующий или Предыдущий, Microsoft Office Access 2007 перемещает количество записей вперед или назад, указанных в аргументе Offset. Когда аргументом записи является Go To, Access переходит к записи с номером , равным аргументу Offset. Номер записи отображается в поле номера записи в нижней части окна. Примечание. Если вы используете параметр First, Last или New для аргумента Record, Access игнорирует аргумент Offset. Если вы ввели аргумент Offset, который слишком большой, , Access отобразит сообщение об ошибке. Вы не можете ввести отрицательные числа для аргумента Offset.

Желательно, чтобы я мог предоставить вам более подробную информацию, но я не использовал Access в сочетании с SQL Server, поэтому, если это будет учитываться, у меня не будет никакого понимания.

Смежные вопросы