powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сложная выборка
14 сообщений из 14, страница 1 из 1
Сложная выборка
    #32606601
SBL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, кто нить может рассказать как сделать сложную выборку,

скажем есть несколько параметров, по которым может осуществлятся выборка, они должны задаваться пользователем,
скажем дата (имеется в виду что используется промежуток), клиент (имя), работник (имя)
при выборке может использоватся один из них или любая их комбинация

причем это желательно оформить в виде форму, это я могу, а вот как связать все это между собой?


результат можно в виде таблицы


как это возможно сделать скажем макросом? в ВБА не разбираюсь настолько хорошо, но за код буду благодарен если кто подскажет
...
Рейтинг: 0 / 0
Сложная выборка
    #32606731
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Вот пример, хотя и не очень хороший
Это обработчик кнопки на форме ввода параметров запроса,
который строит фразу where и ставит фильтр на основную форму.
По хорошему надо делать запрос с параметрами, но здесь этого нет
Private Sub Command12_Click()
Dim Cond As String
Dim Temp As Variant

On Error GoTo E1

Cond = ""
If Not (IsNull(Me![DATE1])) Then
Temp = DateValue(Me![DATE1])
If IsNull(Temp) Then
MsgBox ("Îøèáêà â çàäàíèè íà÷àëüíîé äàòû")
Exit Sub
End If

If Len(Cond) > 0 Then
Cond = Cond + " and "
End If

Cond = Cond + " CDate(""" + Format(Temp, "DD.MM.YYYY") + """)<=REQ_DATE"
End If

If Not (IsNull(Me![DATE2])) Then
Temp = DateValue(Me![DATE2])
If IsNull(Temp) Then
MsgBox ("Îøèáêà â çàäàíèè êîíå÷íîé äàòû")
Exit Sub
End If

If Len(Cond) > 0 Then
Cond = Cond + " and "
End If

Cond = Cond + "REQ_DATE<=" + "CDate(""" + Format(Temp, "DD.MM.YYYY") + """)"
End If

If Not (IsNull(Me![DEP_ID])) Then
If Len(Cond) > 0 Then
Cond = Cond + " and "
End If

Cond = Cond + "DEP_ID=" + Str(Me![DEP_ID])
End If

If Not (IsNull(Me![QUESTION])) Then
If Len(Cond) > 0 Then
Cond = Cond + " and "
End If

Cond = Cond + "REQ_ID in (select REQ_ID from QUESTIONS where QUESTION like ""*" + Me![QUESTION] + "*"")"
End If

DoCmd.Close acForm, "PARAMETERS"
If Len(Cond) > 0 Then
DoCmd.ApplyFilter , Cond
End If

E1:
Temp = Null
Resume Next
End Sub
...
Рейтинг: 0 / 0
Сложная выборка
    #32606746
SBL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
стоп, он у тебя когда натыкается на пустое значение выдает сообщение (не знаю что там написано, кодировка не видит) и выходит?!?

или не выходит?
потому что мне надо либо поиск по какому то одному из параметров, либо их комбинация.....
...
Рейтинг: 0 / 0
Сложная выборка
    #32606768
Фотография Unicco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примерно вот так, только надо ещё в запрос вставить проверки на незаполненные поля для фильтрации по дате.
...
Рейтинг: 0 / 0
Сложная выборка
    #32606798
Фотография Unicco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если будут вопросы, то ответы будут завтра. Я до дому ща :)
...
Рейтинг: 0 / 0
Сложная выборка
    #32606817
SBL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Unicco
а если не нужна дата, а нужна только выборка по клиенту?
можно так?

жаль :-(

ну да ладно, я с отчетом пока повожусь
...
Рейтинг: 0 / 0
Сложная выборка
    #32606830
Фотография Unicco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Завтра с утра по поводу дат изображу что-нить :)
...
Рейтинг: 0 / 0
Сложная выборка
    #32606883
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
2 SBL
Выходит не если не заполнено, а если заполнено неправильно (не преобразуется в дату). Если не заполнено, то соответствующая часть условия просто не пишется
...
Рейтинг: 0 / 0
Сложная выборка
    #32606898
SBL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*2 SBL
Выходит не если не заполнено, а если заполнено неправильно (не преобразуется в дату). Если не заполнено, то соответствующая часть условия просто не пишется

пасибо, попробую

copy/paste кода сработает?
...
Рейтинг: 0 / 0
Сложная выборка
    #32606973
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Dim db as DAO.DataBase: Set db = CurrentDb
Dim qd as DAO.QueryDef: Set qd = db.QueryDefs("MyQuery")
Dim se as String, Crit as String

se= " SELECT MyTbl.* FROM MyTbl "

If Not IsNull(Me.DateCrit) Then Crit = "(FieldDate = CDate('" & Me.DateCrit & "')) "

If Not IsNull(Me.UserCrit) Then 
   If Crit <> "" Then Crit = Crit & " And "
   Crit = Crit & "(FieldUser = '" & Me.UserCrit & "') "
End If

If Not IsNull(Me.CustomerCrit) Then 
   If Crit <> "" Then Crit = Crit & " And "
   Crit = Crit & "(FieldCustomer = '" & Me.CustomerCrit & "') "
End If
 
If Crit <> "" Then se = se & "WHERE (" & Crit & ");"

qd.SQL = se
...
Рейтинг: 0 / 0
Сложная выборка
    #32607000
SBL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rivkin Dmitry
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Dim db as DAO.DataBase: Set db = CurrentDb
Dim qd as DAO.QueryDef: Set qd = db.QueryDefs("MyQuery")
Dim se as String, Crit as String

se= " SELECT MyTbl.* FROM MyTbl "

If Not IsNull(Me.DateCrit) Then Crit = "(FieldDate = CDate('" & Me.DateCrit & "')) "

If Not IsNull(Me.UserCrit) Then 
   If Crit <> "" Then Crit = Crit & " And "
   Crit = Crit & "(FieldUser = '" & Me.UserCrit & "') "
End If

If Not IsNull(Me.CustomerCrit) Then 
   If Crit <> "" Then Crit = Crit & " And "
   Crit = Crit & "(FieldCustomer = '" & Me.CustomerCrit & "') "
End If
 
If Crit <> "" Then se = se & "WHERE (" & Crit & ");"

qd.SQL = se


и куда это ткнуть?
...
Рейтинг: 0 / 0
Сложная выборка
    #32607282
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.sql.ru/faq/faq_topic.aspx?fid=114

Посмотри - вдруг поможет в понимании проблемы
...
Рейтинг: 0 / 0
Сложная выборка
    #32607415
SBL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paparome http://www.sql.ru/faq/faq_topic.aspx?fid=114

Посмотри - вдруг поможет в понимании проблемы

может быть, хотя не совсем понятно как это в аксесс впихнуть :-(
и в упор непонятно откуда там в конце всплывают константы......
...
Рейтинг: 0 / 0
Сложная выборка
    #32736334
sql-programmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возьми-ка примерчик. Здесь нет исходных текстов. их не надо куда-нибудь подтыкать, просто внимательно изучи SQL-запрос, используемый в базе. Поиск происходит на лету, причем параметров поиска может быть очень много, идеи ничего не меняет.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сложная выборка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]