Как сделать "динамический" поиск по базе ACCESS?

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Как сделать "динамический" поиск по базе ACCESS?

Nurbol » 11 июн 2005, 16:03

Попробуй использовать параметры. Вот для примера:

PARAMETERS [Введите дату] DateTime;
SELECT IIf([Nbs] Like "1*","Активы",IIf([Nbs] Like "2*","Обязательства",IIf([Nbs] Like "3*","Капитал",IIf([Nbs] Like "4*","доходы",IIf([Nbs] Like "5*","Расходы"))))) AS Класс, Sum(год.Ost) AS Sum_Ost, год.Data
FROM год
GROUP BY IIf([Nbs] Like "1*","Активы",IIf([Nbs] Like "2*","Обязательства",IIf([Nbs] Like "3*","Капитал",IIf([Nbs] Like "4*","доходы",IIf([Nbs] Like "5*","Расходы"))))), год.Data
HAVING (((год.Data)=[Введите дату]));

Naeel Maqsudov » 29 дек 2004, 03:01

Да, и еще, можно ли для полученной в ходе поиска группы сделать рассылку?
Обрабатывать записи по Find/Findnext можно, но только это неэффективно и не красиво (все будет мигать).
В любом случае надо это делать средствами VBA.
После того как условия поиска сформулированы, как сказано выше ничто не мешает слева добавить к ним "select * from XXX " и сделать CurrentDB.OpenRecordset, а затем пробежаться по этому рекордсету в цикле. В справке масса примеров.

Naeel Maqsudov » 29 дек 2004, 02:47

В ACCESS можно сделать запрос для поиска по нескольким полям по заданному критериям (он статичен, чтобы изменить критерий надо лезть в структуру запроса). А как можно сделать подобные запросы, так сказать, динамическими? Имеется ввиду создаем форму, в которой пользователь сам мог бы выбирать по каким полям и по каким критериям будет осуществляться поиск.
Это VBA.
Добавляем в проект компонент UserForm. Рисуем поля. Обеспечиваем вызов формы в нужные момент (например по кнопке на другой форме, в которой ведется поиск). Последнее делается VBA-макросом с единственной строчкой Userform1.Show

На этой самой UserForm кроме полей кладем 2 кнопки "Найти" и "Найти далее". Эти кнопки опять-таки обрабатываются VBA макросами в одну строку каждый.

DoCmd.Find .....
и
DoCmd.FindNext ....

Параметры методов Find/FindNext аналогичны и описаны в спраке, а также вываливаются при наборе текста...
Условия надо составлять из значений полей так, чтобы получилось выражение, какое обычно пишутт в предложении WHERE.
Например: ....."[FIO] Like " & TextBox1.Value & " AND [WEIGHT] " & Combobox1.Text & TextBox2.Value......

PS
А вообще есть стандартная возможность фильтрации, там можно сформулировать любые мыслимые критерии поиска, объединяя условия по "И" и "ИЛИ". См. кнопки на панели инструментов.

PPS
2 AiK:
Если ответ на этот вопрос еще актуален, и потребуются детали, то тему можно перенести в Office+VB(A)

Absurd » 09 дек 2004, 12:28

В Акцессе не силен =(
В Джава + Оракл это выгладит так

Более красивого решения боюсь тут нема =(

class RecipientDAO {
...
public Collection getRecipipents(RecipintFilter filter) {
if(filter.имеет_вид_1()) {
Делаем запрос 1 и возвращаем его результат
} else if(filter.имеет_вид_2()) {
Делаем запрос 2 и возвращаем его результат
} else if(filter.имеет_вид_3()) {
Делаем запрос 3 и возвращаем его результат
} else if(filter.имеет_вид_4()) {
Делаем запрос 4 и возвращаем его результат
} else if(filter.имеет_вид_5()) {
Делаем запрос 5 и возвращаем его результат
} else if(filter.имеет_вид_6()) {
Делаем запрос 6 и возвращаем его результат
} else if(filter.имеет_вид_7()) {
Делаем запрос 7 и возвращаем его результат
} else if(filter.имеет_вид_8()) {
Делаем запрос 8 и возвращаем его результат
}
}
}

Regina » 08 дек 2004, 18:42

Так в ACCESSe как это сделать, пусть с кучей чего угодно, главное расскажи как!

Absurd » 08 дек 2004, 18:04

У нас сейчас пара проектиков на Oracle (это круче, чем Access). Там надо в некоторых местах делать поиск по изменяющимся критериям.
Приходится пользоваться кучей if..else и выбирать нужный статический запрос.

Regina » 08 дек 2004, 12:16

Люди, горю! Очень срочно нужна помощь :( Ну дайте хоть какой-нибудь совет, подскажите! Ведь это наверняка очень просто... Но не для меня, не могу я найти, как это сделать. Впервые с Access работаю! А делать все равно нужно... На вас последняя надежда!

Как сделать "динамический" поиск по базе ACCESS?

Regina » 06 дек 2004, 21:29

Помогите чайнику!!!
В ACCESS можно сделать запрос для поиска по нескольким полям по заданному критериям (он статичен, чтобы изменить критерий надо лезть в структуру запроса). А как можно сделать подобные запросы, так сказать, динамическими? Имеется ввиду создаем форму, в которой пользователь сам мог бы выбирать по каким полям и по каким критериям будет осуществляться поиск. Там представляем все возможные поля, существующие в базе. И поля для ввода интересующих критериев.

Да, и еще, можно ли для полученной в ходе поиска группы сделать рассылку?

Вернуться к началу