Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Поиск сразу по нескольким значениям в ListBox / 25 сообщений из 29, страница 1 из 2
26.06.2015, 12:50
    #38993557
MrDrJOKER
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
Всем привет.

Сейчас в поле ListBox вабирается одна дата и запрос SQL ищет по этому полю нужные значения для диаграммы.
В форме ListBox есть возможность выбрать несколько полей сразу.
Как можно реализовать поиск и отображение, если выбрать сразу несколько дат в ListBox?
Сейчас, когда разрешаю выбор нескольких дат, поиск не срабатывает, даже если я выбираю только одну дату.

Большое спасибо.
...
Рейтинг: 0 / 0
26.06.2015, 12:55
    #38993566
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
Ошибка - в семнадцатой строке.
...
Рейтинг: 0 / 0
26.06.2015, 13:03
    #38993575
Mina Anna Mazzini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
AkinaОшибка - в семнадцатой строке.Н-нда... Теперь я понимаю, что мой хрустальный шар всего лишь мутная стекляшка... :(
.
...
Рейтинг: 0 / 0
26.06.2015, 13:27
    #38993604
MrDrJOKER
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
запостить SQL-код для диаграммы?

т.к. саму диаграмму я просто обновляю в процедуре:
Код: vbnet
1.
2.
3.
4.
Private Sub Ausw_Datum_AfterUpdate()
    Me.Graph1.Requery
    Me.Graph2.Requery
End Sub
...
Рейтинг: 0 / 0
26.06.2015, 13:34
    #38993615
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
MrDrJOKERзапостить SQL-код для диаграммы?

т.к. саму диаграмму я просто обновляю в процедуре:
Код: vbnet
1.
2.
3.
4.
Private Sub Ausw_Datum_AfterUpdate()
    Me.Graph1.Requery
    Me.Graph2.Requery
End Sub


Сказано код он и предоставил код -(а какие есче проблемы)
...
Рейтинг: 0 / 0
26.06.2015, 13:45
    #38993632
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
MrDrJOKER, показывайте тот фрагмент кода, где используется ListBox - пофиг, VBA это или SQL.
И не отрежьте лишнего - суть кода должна остаться понятной.
...
Рейтинг: 0 / 0
26.06.2015, 14:18
    #38993687
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
Сформировать строку условия
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 Dim i As Byte, _
     S As String
 If myListBox.ItemsSelected.Count <> 0 Then
  For i = 0 To myListBox.ListCount - 1
   If myListBox.Selected(i) Then
    S = S & "," & myListBox.ItemData(i)
   End If
  Next
  S = "WHERE <то, что нужно> IN (" & Mid(S, 2) & ")"
 End If

И использовать затем S по назначению.

Для дат еще нужно учесть формат
Код: vbnet
1.
S = S & "," & Format(myListBox.ItemData(i), "\#mm\/dd\/yyyy\#")
...
Рейтинг: 0 / 0
26.06.2015, 14:37
    #38993728
MrDrJOKER
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
__Michelle, большое спасибо.

собрать выделенные даты в стринг у меня получилось:
Код: vbnet
1.
2.
3.
4.
5.
strLabel = ""
For Each i In Me.Ausw_Datum.ItemsSelected
    strLabel = strLabel & ",'" & Me.Ausw_Datum.ItemData(i) & "'"
Next i
If Len(strLabel) > 0 Then strLabel = Mid(strLabel, 2)



но вот вставить стринг в код и заставить его корректно работать пока никак, при включении возможности выбирать более одного поля в ListBox код SQL перестает выдавать какие-либо результаты:
Код: plsql
1.
2.
3.
...
WHERE ... AND ( Tbl_1.Select_Date IN ( [Form]![Ver]![Ausw_Datum] ) )
..
...
Рейтинг: 0 / 0
26.06.2015, 14:44
    #38993739
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
MrDrJOKER__Michelle, большое спасибо.

собрать выделенные даты в стринг у меня получилось:
Код: vbnet
1.
2.
3.
4.
5.
strLabel = ""
For Each i In Me.Ausw_Datum.ItemsSelected
    strLabel = strLabel & ",'" & Me.Ausw_Datum.ItemData(i) & "'"
Next i
If Len(strLabel) > 0 Then strLabel = Mid(strLabel, 2)



но вот вставить стринг в код и заставить его корректно работать пока никак, при включении возможности выбирать более одного поля в ListBox код SQL перестает выдавать какие-либо результаты:
Код: plsql
1.
2.
3.
...
WHERE ... AND ( Tbl_1.Select_Date IN ( [Form]![Ver]![Ausw_Datum] ) )
..


1. Замечание о необходимости применить к датам Format не заметили?
Код: vbnet
1.
strLabel = strLabel & ",'" & Format(Me.Ausw_Datum.ItemData(i), "\#mm\/dd\/yyyy\#")


2. Строку собрали, но не применили?
Код: vbnet
1.
"WHERE ... AND (Tbl_1.Select_Date IN (" & strLabel & ")"
...
Рейтинг: 0 / 0
26.06.2015, 15:18
    #38993807
MrDrJOKER
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
__Michelle,

даты были уже правильно отформатированы, поэтому не учел. встраивание ф-ции формата не помогло.

пардон, скопировал сюда не измененную строку.
так выглядит актуальная строка в SQL:
Код: vbnet
1.
WHERE ... AND Tbl_1.Select_Date IN (" & strLabel & ")


но при попытке исполнить запрос компилятор ругается, говорит или ошибка в выражении, или слишком сложное выражение.
...
Рейтинг: 0 / 0
26.06.2015, 15:27
    #38993820
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
MrDrJOKER,

А можете показать сформированную строку условия в раскрытом виде (после подстановки strLabel)?
Начиная с WHERE.
Можно вывести через MsgBox и скопировать Ctrl-C.
...
Рейтинг: 0 / 0
26.06.2015, 15:34
    #38993830
MrDrJOKER
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
__Michelle,

Код: vbnet
1.
'06.11.2013','19.01.2015','14.04.2015','25.06.2015'
...
Рейтинг: 0 / 0
26.06.2015, 15:38
    #38993837
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
MrDrJOKER,

То есть, это strLabel?
Я просила все условие WHERE. Ну ладно, неважно.

А теперь сформируйте, пожалуйста, с применением функции Format и тоже покажите.
...
Рейтинг: 0 / 0
26.06.2015, 15:57
    #38993875
MrDrJOKER
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
__Michelle,
выше ф-ция формата уже применена как раз. я её встроил и оставил.

так выглядит условие WHERE полностью:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
WHERE  
(
((Tbl_Verf.DepNr) Like [Form]![Ver]![Ausw_Dep]) 

AND ((Tbl_Verf.ABC_Kat)="A")

AND (Tbl_Verf.Select_Date IN ( " & strLabel & " ) )
) 
OR 
(
((Tbl_Verf.DepNr) Like [Form]![Ver]![Ausw_Dep_Mit]) 

AND ((Tbl_Verf.ABC_Kat)="A")

AND ((Tbl_Verf.Select_Date) Like [Form]![Ver]![Ausw_Datum_Mit] ) 
)



переключениями настроек ListBox на выбор более одного поля и обратно я пришел к выводу, что ошибка тут:
Код: plsql
1.
(" & strLabel & ")


т.к. такой вариант работает при возможности выбора только одного поля, а при нескольких выбраных поляx просто ничего не показывает запрос, но компилятор хотя бы не ругается:
Код: sql
1.
Tbl_Verf.Select_Date IN ( [Form]![Ver]![Ausw_Dep )
...
Рейтинг: 0 / 0
26.06.2015, 16:03
    #38993886
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
MrDrJOKERвыше ф-ция формата уже применена как раз. я её встроил и оставил.Не может быть.
Если бы функция была применена, strLabel выглядела бы так:
Код: vbnet
1.
"#11/06/2013#,#01/19/2015#,#04/14/2015#,#06/25/2015#"
...
Рейтинг: 0 / 0
26.06.2015, 16:10
    #38993903
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
MrDrJOKERтак выглядит условие WHERE полностью:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
WHERE  
(
((Tbl_Verf.DepNr) Like [Form]![Ver]![Ausw_Dep]) 

AND ((Tbl_Verf.ABC_Kat)="A")

AND (Tbl_Verf.Select_Date IN ( " & strLabel & " ) )
) 
OR 
(
((Tbl_Verf.DepNr) Like [Form]![Ver]![Ausw_Dep_Mit]) 

AND ((Tbl_Verf.ABC_Kat)="A")

AND ((Tbl_Verf.Select_Date) Like [Form]![Ver]![Ausw_Datum_Mit] ) 
)


]Почему вместо strLabel не подставлено значение?
Откуда запрос запускается, из VBA или нет?
Если не из VBA, откуда запрос узнает, что такое strLabel?
Тогда должен быть вызов функции, возвращающей значение, аналогичное значению strLabel.
...
Рейтинг: 0 / 0
26.06.2015, 16:13
    #38993910
MrDrJOKER
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
__Michelle,
зачем там решетки? я их поубирал. с ними выдает такую же ошибку.

Код: vbnet
1.
2.
3.
4.
5.
6.
strLabel = ""
For Each i In Me.Ausw_Datum.ItemsSelected
     strLabel = strLabel & ",'" & Format(Me.Ausw_Datum.ItemData(i), "dd/mm/yyyy") & "'"
Next i
If Len(strLabel) > 0 Then strLabel = Mid(strLabel, 2)
Debug.Print strLabel
...
Рейтинг: 0 / 0
26.06.2015, 16:21
    #38993927
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
MrDrJOKER__Michelle,
зачем там решетки? я их поубирал. с ними выдает такую же ошибку.

Код: vbnet
1.
2.
3.
4.
5.
6.
strLabel = ""
For Each i In Me.Ausw_Datum.ItemsSelected
     strLabel = strLabel & ",'" & Format(Me.Ausw_Datum.ItemData(i), "dd/mm/yyyy") & "'"
Next i
If Len(strLabel) > 0 Then strLabel = Mid(strLabel, 2)
Debug.Print strLabel

Найдите три отличия в том, что я предлагала, и в том, что здесь!
1. Кавычки зачем-то появились. Выделено красным.
2. Строка формата искажена дважды:
- исчезли #,
- исчезли \.

И вопросы, заданные в 17821077 , требуют ответа.
...
Рейтинг: 0 / 0
26.06.2015, 16:25
    #38993935
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
Вот здесь было про формат 17820351 .
...
Рейтинг: 0 / 0
26.06.2015, 16:35
    #38993965
MrDrJOKER
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
__MichelleОткуда запрос запускается, из VBA или нет?
Если не из VBA, откуда запрос узнает, что такое strLabel?
Тогда должен быть вызов функции, возвращающей значение, аналогичное значению strLabel.

запрос запускается не из VBA. выз

набросал быстро ф-цию. а как её вызватъ в SQL?
Код: vbnet
1.
2.
3.
Public Function getDate(str As String) As String
    getDate = str
End Function
...
Рейтинг: 0 / 0
26.06.2015, 16:40
    #38993977
MrDrJOKER
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
__Michelle, всё сделал как вы сказали, что касается формата.
...
Рейтинг: 0 / 0
26.06.2015, 16:44
    #38993982
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
MrDrJOKER
переключениями настроек ListBox на выбор более одного поля и обратно я пришел к выводу, что ошибка тут:
Код: plsql
1.
(" & strLabel & ")


А так:
Код: vbnet
1.
"...WHERE ПолеСдатой IN(" & strLable & ")"
...
Рейтинг: 0 / 0
26.06.2015, 16:49
    #38993992
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
MrDrJOKER__MichelleОткуда запрос запускается, из VBA или нет?
Если не из VBA, откуда запрос узнает, что такое strLabel?
Тогда должен быть вызов функции, возвращающей значение, аналогичное значению strLabel.

запрос запускается не из VBA. выз

набросал быстро ф-цию. а как её вызватъ в SQL?
Код: vbnet
1.
2.
3.
Public Function getDate(str As String) As String
    getDate = str
End Function

И что эта функция делает?
Возвращает принятое?)))

Функция должна быть не в модуле класса формы, а в стандартном (общем) модуле.
Вызов обыкновенный: myFunc(), параметров в данном случае не нужно,
ведь будет разбираться известный листбокс.
...
Рейтинг: 0 / 0
26.06.2015, 16:53
    #38994001
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
AkinaОшибка - в семнадцатой строке.
И не забудьте поблагодарить __Michelle
...
Рейтинг: 0 / 0
26.06.2015, 16:54
    #38994006
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск сразу по нескольким значениям в ListBox
MrDrJOKER__Michelle, всё сделал как вы сказали, что касается формата.Вам это может казаться, но на деле не так.)))
Да выложите уже результат, соответствующий 17821029 , в конце концов!
Тогда поверю, что сделали именно так.)))
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Поиск сразу по нескольким значениям в ListBox / 25 сообщений из 29, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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