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

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

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

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

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


Сказано код он и предоставил код -(а какие есче проблемы)
...
Рейтинг: 0 / 0
Поиск сразу по нескольким значениям в ListBox
    #38993632
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrDrJOKER, показывайте тот фрагмент кода, где используется ListBox - пофиг, VBA это или SQL.
И не отрежьте лишнего - суть кода должна остаться понятной.
...
Рейтинг: 0 / 0
Поиск сразу по нескольким значениям в ListBox
    #38993687
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сформировать строку условия
Код: 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
Поиск сразу по нескольким значениям в ListBox
    #38993728
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] ) )
..
...
Рейтинг: 0 / 0
Поиск сразу по нескольким значениям в ListBox
    #38993739
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Поиск сразу по нескольким значениям в ListBox
    #38993807
MrDrJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

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

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


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

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

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

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

А теперь сформируйте, пожалуйста, с применением функции Format и тоже покажите.
...
Рейтинг: 0 / 0
Поиск сразу по нескольким значениям в ListBox
    #38993875
MrDrJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__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
Поиск сразу по нескольким значениям в ListBox
    #38993886
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrDrJOKERвыше ф-ция формата уже применена как раз. я её встроил и оставил.Не может быть.
Если бы функция была применена, strLabel выглядела бы так:
Код: vbnet
1.
"#11/06/2013#,#01/19/2015#,#04/14/2015#,#06/25/2015#"
...
Рейтинг: 0 / 0
Поиск сразу по нескольким значениям в ListBox
    #38993903
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Поиск сразу по нескольким значениям в ListBox
    #38993910
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
...
Рейтинг: 0 / 0
Поиск сразу по нескольким значениям в ListBox
    #38993927
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Поиск сразу по нескольким значениям в ListBox
    #38993935
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот здесь было про формат 17820351 .
...
Рейтинг: 0 / 0
Поиск сразу по нескольким значениям в ListBox
    #38993965
MrDrJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__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
Поиск сразу по нескольким значениям в ListBox
    #38993977
MrDrJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle, всё сделал как вы сказали, что касается формата.
...
Рейтинг: 0 / 0
Поиск сразу по нескольким значениям в ListBox
    #38993982
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrDrJOKER
переключениями настроек ListBox на выбор более одного поля и обратно я пришел к выводу, что ошибка тут:
Код: plsql
1.
(" & strLabel & ")


А так:
Код: vbnet
1.
"...WHERE ПолеСдатой IN(" & strLable & ")"
...
Рейтинг: 0 / 0
Поиск сразу по нескольким значениям в ListBox
    #38993992
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Поиск сразу по нескольким значениям в ListBox
    #38994001
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaОшибка - в семнадцатой строке.
И не забудьте поблагодарить __Michelle
...
Рейтинг: 0 / 0
Поиск сразу по нескольким значениям в ListBox
    #38994006
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrDrJOKER__Michelle, всё сделал как вы сказали, что касается формата.Вам это может казаться, но на деле не так.)))
Да выложите уже результат, соответствующий 17821029 , в конце концов!
Тогда поверю, что сделали именно так.)))
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Поиск сразу по нескольким значениям в ListBox
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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