|
|
|
| Доброго времени суток) Нужна помощь... Проблема состоит в создании полноценного поиска по форме с учетом нескольких столбцов. Хотелось бы чтобы данные из таблицы отбирались сначала по одному столбцу, затем при вводе символов в другое поле поиска (по другому столбцу таблицы) начинался отбор из уже отобранных полей. Сейчас за отбор по одному полю отвечает следующий код (взятый из одного из примеров)) -
Private Sub ClientForFilter_Change()
Dim strFind As String
strFind = Nz(Me.ClientForFilter.Text, "")
If strFind <> "" Then
Me.Filter = "[LINE] Like '" & strFind & "*'"
Me.FilterOn = True
Me.ClientForFilter.SelStart = 200
Else
Me.FilterOn = False
End If
End Sub | |
|
| |
|
|
|
| а так что не работат
Me.Filter = "[LINE] Like '" & strFind & "*'" & "[LINE_1] Like '" & strFind_1 & "*'"
вот
Private Sub ClientForFilter_ПОЛЕ2_Change()
Dim strFind As String
strFind_ПОЛЕ2 = Nz(Me.ClientForFilter.Text, "")
If strFind_ПОЛЕ2 <> "" Then
' можно так
Me.Filter = Me.Filter & "[ПОЛЕ2] Like '" & strFind_ПОЛОЕ2 & "*'"
' можно так
if Nz(Me.Filter,'')='' then
Me.Filter = "[ПОЛЕ2] Like '" & strFind_ПОЛОЕ2 & "*'"
else
Me.Filter = Me.Filter & "[ПОЛЕ2] Like '" & strFind_ПОЛОЕ2 & "*'"
endif
Me.FilterOn = True
Me.ClientForFilter.SelStart = 200
Else
Me.FilterOn = False
End If
End Sub
|
| |
|
| |
|
|
|
| не фонтан - но может натолкнет на нужную мысль
http://hiprog.com/forum/read.php?id_forum=1&id_theme=6809&page=1 | |
|
| |
|
|
|
| Снайп, по твоей ссылке как раз то, что нужно))) Но там используется подформа у меня же нужно сделать это по одной форме пока код следующий (но он не работает, указывая ошибку в строчке - :
If strFilter = "" Then
Me![название формы].Form.RecordSource = "SELECT [название формы].* FROM [название формы];"
End If
End Function
|
А весь код выглядит так пока что:
Option Compare Database
Public asd1 As String
Public asd2 As String
Public asd3 As String
Public asd4 As String
Public asd5 As String
Option Explicit
Private Function FilterBasa1()
Dim strFilter As String
strFilter = ""
If asd1 <> "" Then
strFilter = "[LINE] Like '" & asd1 & "*'"
End If
If asd2 <> "" Then
If strFilter = "" Then
strFilter = "[PRODUCEDBY] Like '" & asd2 & "*'"
Else
strFilter = strFilter & " AND [PRODUCEDBY] Like '" & asd2 & "*'"
End If
End If
If asd3 <> "" Then
If strFilter = "" Then
strFilter = "[TYPE] Like '" & asd3 & "*'"
Else
strFilter = strFilter & " AND [TYPE] Like '" & asd3 & "*'"
End If
End If
If asd4 <> "" Then
If strFilter = "" Then
strFilter = "[PROCESSING_COMPANY] Like '" & asd3 & "*'"
Else
strFilter = strFilter & " AND [PROCESSING_COMPANY] Like '" & asd3 & "*'"
End If
End If
If strFilter = "" Then
Me![название формы].Form.RecordSource = "SELECT [название формы].* FROM [название формы];"
End If
End Function
Private Sub Form_Load()
asd1 = ""
asd2 = ""
asd3 = ""
asd4 = ""
asd5 = "ClientForFilter"
End Sub
Private Sub ClearAll_Click()
Me!ClientForFilter = Null
Me!TypeLine = Null
Me!Processing = Null
Me!ProducedComp = Null
Call filterBasa(asd5)
End Sub
Private Sub ClientForFilter_Change()
asd5 = "ClientForFilter"
Call filterBasa("ClientForFilter")
End Sub
Private Sub ProducedComp_Change()
asd5 = "ProducedComp"
Call filterBasa("ProducedComp")
End Sub
Private Sub Type_Change()
asd5 = "TypeLine"
Call filterBasa("TypeLine")
End Sub
Private Sub Processing_Change()
asd5 = "Processing"
Call filterBasa("Processing")
End Sub
Private Function filterBasa(bnm As String)
Me!ClientForFilter.SetFocus
If Nz(Me!ClientForFilter.Text, 0) = 0 Then
asd1 = ""
Else
asd1 = Me!ClientForFilter.Text
End If
Me!TypeLine.SetFocus
If Nz(Me!TypeLine.Text, 0) = 0 Then
asd2 = ""
Else
asd2 = Me!TypeLine.Text
End If
Me!Processing.SetFocus
If Nz(Me!Processing.Text, 0) = 0 Then
asd3 = ""
Else
asd3 = Me!Processing.Text
End If
Me!ProducedComp.SetFocus
If Nz(Me!ProducedComp.Text, 0) = 0 Then
asd4 = ""
Else
asd4 = Me!ProducedComp.Text
End If
Call FilterBasa1
Me(bnm).SetFocus
Me(bnm).SelStart = Me(bnm).SelLength
End Function
|
| |
|
| |
|
|
|
| Можно я немного поматерюсь (простите старую больную обезьяну)
Какого х.....хрена
"SELECT [название формы].* FROM [название формы];
название формы
вас что не учили писать запросы на SQL - там обращаются к таблицам
подформа выбрана потому что инфу нужно было выводить в табличной форме
а в табличной форме верхний колонтитул не доступен
что вам мешает выводить инфу в ленточной форме (и колонтитул доступен) и инфа выводится как надо
ухватите принцип - и все будет хорошо
если честно я его ухватил после разбора примера Lukas (наберите в поисковике форума слово кукуруза) | |
|
| |
|
|
|
|
Можно я немного поматерюсь (простите старую больную обезьяну)
Какого х.....хрена
"SELECT [название формы].* FROM [название формы];
название формы
вас что не учили писать запросы на SQL - там обращаются к таблицам
подформа выбрана потому что инфу нужно было выводить в табличной форме
а в табличной форме верхний колонтитул не доступен
что вам мешает выводить инфу в ленточной форме (и колонтитул доступен) и инфа выводится как надо
|
ничего ничего))) я этого ожидал. Я ни sql ни VBA не знаю. Но задачу выполнить надо, вот и попытался по аналогии делать с примерами, до определенного момента получалось. Вместо *название формы* у меня стояло SEISMIC_SEARCHER - так называется моя форма в которой необходимо организовать поиск. Я думал что выражением Me![название формы].Form.RecordSource = "SELECT [название формы].* FROM [название формы];" мы указываем месторасположение наших данных. | |
|
| |
|
|
|
| snipe, а что необходимо изменить для вывода строк в ленточной форме??? | |
|
| |
|
|
|
| поближе познакомиться со средой разработки которой пользуешся ИМХО
выложи пример своей БД напиши просто что тебе надо | |
|
| |
|
|
|
| http://slil.ru/29464039 вот тут лежит пример. Нужно чтобы поиск осуществлялся по полям Line, Produced company, Processing company, Type. Соответственно отбирая записи из уже созданного отбора (по предыдущему отбору), например я хочу отобрать записи по по олю Line и Produced company, ввожу туда значения - access выводит поля...пока работает только поле Line((( Заранее спасибо за помощь))) | |
|
| |
|
|
|
|
http://slil.ru/29464039 вот тут лежит пример
|
к сожалению вирус-сканер меня на этот ресурс не пускает | |
|
| |
|
|
|
| kot_k_k, так не работает...сначала просит установить фокус на ClientForFilter, потом не хватает оператора в Me.Filter=....((((( | |
|
| |
|
|
|
|
| названия везде изменены естественно)) Вот так это дело выглядело на конечном этапе -
Private Sub ClientForFilter_Change()
Dim strFind As String
strFind = Nz(Me.ClientForFilter.Text, "")
If strFind <> "" Then
Me.Filter = "[LINE] Like '" & strFind & "*'"
Me.FilterOn = True
Me.ClientForFilter.SelStart = 200
Else
Me.FilterOn = False
End If
End Sub
Private Sub ProducedComp_Change()
Dim strFind1 As String
Me.ClientForFilter.SetFocus
strFind1 = Nz(Me.ClientForFilter.Text, "")
If strFind1 <> "" Then
Me.Filter = "[LINE] Like '" & strFind & "*'" & "[PRODUCEDBY] Like '" & strFind1 & "*'"
Me.FilterOn = True
Me.ClientForFilter.SelStart = 200
Else
Me.FilterOn = False
End If
End Sub
|
| |
|
| |
|
57 Кб. |
|
| Вот =>
как просили - отбор по мере ввода символов в поисковые поля
ИМХО - я бы на Вашем месте поля со списком применил - это бы ускорило процес выбора инфы юзером и нагрузка на комп по ниже будет, опять же ПолеСоСписком само умеет отбирать инфу по мере ввода символов, но увы я не на вашем месте
Теперь ответы на Ваши вопросы
Я думал что выражением Me![название формы].Form.RecordSource = "SELECT [название формы].* FROM [название формы];" мы указываем месторасположение наших данных
|
- думаете не совсем правильно да - действительно указывается местоположение данных а точнее что и откуда взять Свойство формы RecordSource (по русски Источник записей) - тут указывается имя таблицы, имя сохраненного запроса или запрос написанный на SQL
а что необходимо изменить для вывода строк в ленточной форме
|
тут 2 варианта
либо меняем источник записей (RecordSource) - т.е. изменяем набор записей (недостаток в том что юзер в определенные моменты не видит сколько всего записей в базе)
либо применяем фильтр (совместно с включить фильтр) (тут другая беда - юзер забывает что фильтр включен и упорно доказывает что видит все записи) | |
|
| |
|
|
|
| Огромное мега спасибо ВСЕМ!!!)))) И Снайпу в отдельности)))) Я на самом деле тоже думал по поводу применения поля со списком, но начал сперва биться с этим вариантом и увяз, на сейчас попытаюсь туда и поле со списком ввести. По поводу изучения матчасти согласен с Explorer)) По просту это новая область для меня и образование у меня не программерское, а задача поставлена, так что приходится справлятся своими силами))) Может кто-нибудь знает книжки толковые по этой части??? В книженциях про access такой информации не дают... | |
|
| |