Поиск создает проблемы в моей форме MS Access - PullRequest
0 голосов
/ 27 февраля 2012

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

1 Ответ

0 голосов
/ 27 февраля 2012

Re Navigation

В зависимости от метода, который вы используете для поиска, вы не сможете перемещаться вперед и назад. Если вы хотите перемещаться вперед и назад, вам нужно будет указать диапазон поиска. Например, вместо поиска ОДИНОЧНОЙ записи с идентификатором 123 вам нужно будет искать ДИАПАЗОН записей, то есть между идентификатором 123 и идентификатором 234.

Re Saving

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

Повторный поиск

Когда вы создаете основную форму / вложенную форму в Access, эти 2 формы связываются через свойства Child / Master. Поэтому, если вы ищете конкретную запись в основной форме, вам, как правило, не нужно беспокоиться о фильтрации формы. Используя метод, аналогичный тому, который вы используете в комментариях, это будет:

dim qry As String
qry = "select parenttbl.* from parenttbl where parenttbl.id=" & Me.mysearchbox.text &";"
Me.RecordSource = qry

Присоединяя дочернюю таблицу в своем исходном коде, вы можете запутать способность Access сохранять данные, но я сомневаюсь в этом. Я не проверял это, но я не думаю, что вам нужно установить свойство filteron в true после изменения источника записей. Посмотрите, как фильтр используется в этом посте Алленом Брауном http://allenbrowne.com/ser-28.html

Re FilterOn С учетом вышесказанного вы, вероятно, можете настроить его использование свойства filteron для «поиска» нужной записи, затем вы сможете включить свойство filteron в False и затем перемещаться назад и вперед в своем наборе записей. Я не проверял это все же.

РЕДАКТИРОВАТЬ: Вот пример, когда для свойства FilterOn установить значение false:

Me.FilterOn = False
DoCmd.GoToRecord , , acNext

Чтобы это работало, вам нужно указать в запросе SQL предложение ORDER BY, с которым связана ваша основная форма. В противном случае вы не сможете перемещаться назад и вперед так, как вы ожидаете.

...