Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сложная выборка / 14 сообщений из 14, страница 1 из 1
15.07.2004, 17:03:19
    #32606601
SBL
SBL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная выборка
Народ, кто нить может рассказать как сделать сложную выборку,

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

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


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


как это возможно сделать скажем макросом? в ВБА не разбираюсь настолько хорошо, но за код буду благодарен если кто подскажет
...
Рейтинг: 0 / 0
15.07.2004, 17:37:12
    #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
15.07.2004, 17:41:38
    #32606746
SBL
SBL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная выборка
стоп, он у тебя когда натыкается на пустое значение выдает сообщение (не знаю что там написано, кодировка не видит) и выходит?!?

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

жаль :-(

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

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

copy/paste кода сработает?
...
Рейтинг: 0 / 0
15.07.2004, 19:05:18
    #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
15.07.2004, 19:27:22
    #32607000
SBL
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
16.07.2004, 08:59:11
    #32607282
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная выборка
http://www.sql.ru/faq/faq_topic.aspx?fid=114

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

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

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


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