2015-02-02 3 views
0

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

Я работаю над проектом в Access 2007 с большим количеством кода VBA и множеством форм для интерфейса. В формах я включил кнопки навигации для записи, чтобы пользователь мог перемещаться между разными записями таблицы (следующий, предыдущий и т. Д.).

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

После получения этой записи пользователь нажимает кнопку, чтобы отобразить следующую запись. Однако, вместо перехода к следующему, он переходит к записи после 1-го. Другими словами, форма переходит во вторую запись.

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

Я попытался обновлением записей после выполнения запроса, хотя метод RecordSource формы, но тем не менее он продолжает идти не так ...

Что бы наиболее практичным решение?

Спасибо!

+0

Не могли бы вы объяснить, как вы выполняете функции поиска, есть ли у вас код, который вы можете показать нам, который его обрабатывает? – SCB

+0

Привет, SCB. Ну, функция поиска очень проста. У меня есть первичный ключ таблицы как невидимый, и, когда пользователь выбирает клиента, который хочет видеть информацию, результат поиска делает это: DoCmd.OpenForm «Клиенты»,,, «ID =» & Me.search_customers_subform.Form.ID & «» и следующая кнопка сделать это: Me.FilterOn = False DoCmd.GoToRecord,, acNext –

+0

только отправленным другой комментарий с просьбой разъяснить, но я просчитался запятые на открытая форма, это имеет смысл. Попробуй придумать что-нибудь для тебя. – SCB

ответ

0

Ваш вопрос исходит из того факта, что при установке фильтра на значение false вы фактически переустанавливаете всю форму.

Чтобы обойти эту проблему, вы можете попробовать это для вашей команды поиска:

DoCmd.OpenForm "Customers" 

' This assumes that you've got a control on the customers form named ID which has the IDs in it 
DoCmd.GoToControl "ID" 

DoCmd.FindRecord Me.search_customers_subform.Form.ID 

И при нажатии рядом, все, что вам нужно сейчас:

DoCmd.GoToRecord , , acNext 

Фильтр больше не существует ,

Надеюсь, это сработает для вас. У меня нет доступа ко мне прямо сейчас, поэтому этот код в основном из памяти, если есть какие-то проблемы, не стесняйтесь спрашивать.

+0

Эй, СКБ !!! Он отлично работает !!! Большое спасибо: D –