Мне нужно организовать поиск книг в форме по названию, автору,издательству, виду издания. У меня есть запрос на выборку по этим критериям. Как на основе этого запроса организовать поиск в форме?
В форме существует элемент ListBox(в нем содержится запрос), поле для ввода данных, кнопка. Нужно, чтоб при щелчке на кнопке искалось искомое(то, что пользователь ввел в текстовом поле) и в listBox отображалось найденное. Какую именно процедуру надо писать в кнопке? Название столбцов в запросе, сам запрос на русском языке.
Например пользователь вводит в текстовое поле,например Акунин и выводится все книги этого автора.Или вводит Роман, и выводится все романы, которые есть в запросе. Как это сделать? Каким образом? Какой должен быть код у кнопки? Я уже всю голову себе сломала...Помогите,кто чем может, пожалуйста.
У формы есть атрибуты Filter и FelterOn.
Например:
BOPOHA, если использовать такой фильтр точно будет отображаться то что нужно? ![]()
Как я понимаю, поле Автор содержит в себе ФИО автора, человеу необходимо вводить например только Фамилию...
(Сорри если туплю, с Access'ом слава богу уже давно не работаю)
oza, код точно написать не могу(могут быть ошибки)(может кто нить причешет), сорри, не установлен этот -бип-ский продукт =) Но суть расскажу =)
У вас есть запрос который формирует данные для формы например такого вида:
Я немного не поняла, что надо писать в строке strSql = "Select Книга.Название, Автор.ФИО, Издательство.Название, Издание.ВидИздания From... Where(именно в этом месте) "
Вот что накалякала:
strField = [Авторы]
strField = [Книги]
strField = [Виды_книг]
strData = [ФИО]
strData = [Книги.Название]
strData = [Вид_издания]
strSql = "Select Авторы.ФИО, Книги.Название,Виды_книг.Вид_издания From [Поиск_книг] "
If strField = "Авторы" Then
strSql = strSql & "Авторы.ФИО LIKE " & strData & ";"
End If
If strField = "Книги" Then
strSql = strSql & "Книги.Название LIKE " & strData & ";"
End If
If strField = "Виды_книг" Then
strSql = strSql & "Вид_издания LIKE " & strData & ";"
End If
Me!RecordSet = strSql
Me!Requery
End Sub
Не работает, что-то я напутала,да еще как! Помогите,плиз... [Поиск_книг] это название моего запроса.
В прошлом году, у меня была курсовая на VBA 6.0, там была связь в БД Access. Там был вот такой код:
Private Sub Command2_Click()
sapr = "SELECT * From[Каталог деталей] Where [место нахождения] LIKE '" & Text2.Text & "'"
Data1.RecordSource = sapr
Data1.Refresh
SUMM
End Sub
Тут видимо, что-то похожее должно быть. В принципе, можно сделать 3 кнопки, и 3 поля, чтобы не писать цикл.
oza во From пишешь источник данных. В данном случае у тебя запрос, поэтому вроде все правильно.
Далее.
моя форма выглядит вот так:
Дело в том, что туда, куда я вписываю критерии поиска это текстовое поле, а откуда берутся данные, это список. Как определить список? Что писать после точки?Ну как:
strField = Поле3.Text
strData = Список7.???
Я пробовала 2 из списка это ListCount и ListIndex, все равно не работает.
А еще он ругался на то, что для объекта Поле3 не определен фокус(идиотство конечно!)
Я добавила Поле3.SetFocus
И еще непонятно, что писать после слова Where?
Может мне как-нибудь перерисовать форму?Чтобы был не список, а поле со списком? Тогда непонятно, что там должно быть.
Я понимаю, вас уже достала, но только вы отвечаете в этой теме весьма логично =)
strData = Список7.Column(0) ' Получить первый элемент ВЫДЕЛЕННОЙ строки.
Т.е. если у тебя в списке 2 колонки, то для доступа к данным 2-ой колонки писать Список7.Column(1) и т.д.
Ругается: "Ошибка синтаксиса в предложении Where"
И выделяет строку:
Me.RecordSource = strSql
oza, покажи как строка strSQL выглядит перед вызовом Me.RecordSource = strSql
И еще сразу, что то не посмотрел =)
Поменяй везде
Как-то слишком много буков для такой простой задачи.
Доступ к данным на форме очень просто получать через Me.<имя> - не перепутаешь...
Переопределять данные на форме - RowSorce не нужно, укажите его один раз.
Дальше используйте Me.Filter и Me.FilterOn. Me.Filter присваивают условие отбора без ключевого слова Where.
Посмотрев на форму, я так и не понял где отображаются данные....
Можете вырезать из вашего проекта эту форму и необходимые данные и приложить к сообщению, так будет проще и быстрее.
Всем спасибо! Реализовала с помощью макроса!
Русская версия Invision Power Board (http://www.nulled.ws)
© Invision Power Services (http://www.nulled.ws)