2013-03-27 3 views
3

Я пытаюсь создать форму поиска для доступа 2010.создание формы поиска в Access 2010

Мне нравится иметь группу опций на основе поиска запроса. Я сделал поисковый запрос, ища имя или фамилию. в форме также присутствуют два текстовых поля для заполнения запросов (1-й и последний)

Мне нужна группа параметров, чтобы я мог выбрать приведенное название для бронирования.

В прошлом я косвенно использовал это, используя подформат и флажок. Затем загрузите оба результата на подформу и флажке (requery), чтобы пользователь мог выбрать только этот флажок. Но на этот раз я хочу, чтобы параметры были сами результатом запроса! Пожалуйста помоги.

+0

Что случилось с использованием выпадающего или ListBox? – wakjah

+0

Было бы хорошо, что из результата (группа параметров) я могу напрямую выбрать любую запись, а когда я нажму кнопку «Далее», она перенесет данные в следующую форму. Вместо того, чтобы иметь два объекта «результата» (подформат и флажок). Это избыточно. – Daytron

+0

Моя форма поиска клиентов работает примерно так: у меня есть одно текстовое поле поиска вверху. У меня есть непрерывная форма всех клиентов внизу. После того, как пользователь вводит текст в поле поиска, я фильтрую набор записей, создавая критерии, основанные на каждом имени поля, например: 'FirstName Like *% s * или LastName Like *% s *' и заменить '% s' на текст в окне поиска. Я думаю, что это довольно изящно. Затем пользователь нажимает кнопку со стрелкой справа от имени контакта, чтобы выбрать или просмотреть этот контакт в полном подробном представлении в новой форме. – Bobort

ответ

10

Вот простой пример, который использует List Box:

Таблица: Клиенты

ID - AutoNumber
LastName - Текст (255)
FirstName - Текст (255)
Email - Текст (255)

Тестовые данные:

ID LastName FirstName  Email 
-- ---------- -------------- ------------------ 
1 Thompson Gord   [email protected] 
2 Loblaw  Bob    [email protected] 
3 Kingsley Hank   [email protected] 
4 Thompson Hunter S.  [email protected] 
5 Squarepants Spongebob  [email protected] 
6 O'Rourke P. J.   [email protected] 
7 Aldrin  Edwin "Buzz" [email protected] 

Форма макета:

DesignView

VBA модуль для этой формы:

Option Compare Database 
Option Explicit 

Private Sub Form_Load() 
Me.lstSearchResults.RowSource = "" 
End Sub 

Private Sub btnSearch_Click() 
Me.lstSearchResults.SetFocus 
Me.lstSearchResults.Value = Null 
Me.lstSearchResults.RowSource = _ 
     "SELECT ID, LastName, FirstName FROM Clients " & _ 
      "WHERE LastName LIKE ""*" & DQ(Me.txtSearchLastName.Value) & _ 
       "*"" AND FirstName LIKE ""*" & DQ(Me.txtSearchFirstName.Value) & "*""" 
End Sub 

Private Function DQ(s As Variant) As String 
' double-up double quotes for SQL 
DQ = Replace(Nz(s, ""), """", """""", 1, -1, vbBinaryCompare) 
End Function 

Private Sub btnLookupEmail_Click() 
If IsNull(Me.lstSearchResults.Value) Then 
    Me.txtEmail.Value = "" 
Else 
    Me.txtEmail.Value = DLookup("Email", "Clients", "ID=" & Me.lstSearchResults.Value) 
End If 
End Sub 

Когда форма первого открыт, все пусто.

FirstOpened

Typing "Томсон" (без кавычек) и нажать кнопку btnSearch заполнит List Box с клиентами WHERE LastName LIKE "*thompson*". (Если вы посмотрите на код, вы увидите, что он также будет соответствовать на FirstName, если поставить один.)

SearchResults

Выберите один из пунктов в списке Box и нажмите btnLookupEmail и адрес электронной почты отображается в текстовом поле ниже.

EmailFound

+0

Это потрясающе. Я не понимал, что это также можно сделать с помощью списка.Я не совсем понимаю, как использовать коды SQL, но я четко понимаю код.
Но возможно ли использовать набор фреймов (опция grp)?
Моя программа скроет текущую форму, когда пользователь нажимает «Далее» (при условии, что он выбрал приведенное значение. Таким образом, я могу переносить выбранное значение в следующую форму, используя полный адрес формы ссылки, «form! Formname! Object .value ". Можно ли использовать currentvalue списка для следующей формы?
Daytron

+0

@Daytron re:« Возможно ли использовать текущее значение окна списка для следующей формы? »- я не понимаю, почему нет 'form! formname! lstSearchResults.Value' должен работать, если' formname' по-прежнему загружается, даже если он скрыт. Блок списка предназначен для хранения переменного количества возможных вариантов выбора, тогда как группа Option действительно предназначена для фиксированного –

+0

Спасибо. Я ценю помощь. Последний вопрос, я узнал слишком поздно, некоторые строки я не понимаю.
Из синтаксиса R Функция замены:
Заменить (string1, find, replacement, [start, [count, [compare]]])

Зачем вам заменять и почему строка Nz (s, "")? – Daytron

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