Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Формирование параметра
 
 автор: Scorpi   (21.05.2008 в 12:08)   личное сообщение
 
 

Подскажите, есть список в котором можно выбрать несколько значений id.
нужно создать запрос с параметром, в качестве параметра должна передаваться сформированная из выбранных id строка:

Dim strParam As String
For Each varItm In Me!Выбор.ItemsSelected
strParam = strParam + Me!Выбор.ItemData(varItm) + ","
Next varItm
If Right(strParam, 1) = "," Then strParam = Left(strParam, Len(strParam) - 1)

есть запрос типа: select * from tabl where id in (strParam )

так вот когда выбирается один элемент из списка, все открывается нормально, а если больше, то ничего не показывает. Как правильно в качестве возмозных значений использовать список этих значений? (пробовала разделять ; - не помогло)

  Ответить  
 
 автор: Анатолий (Киев)   (21.05.2008 в 12:30)   личное сообщение
 
 

"select * from tabl where id in (" & strParam & ")"
Если у вас в списке - числа, то, по логике, на строке
strParam = strParam + Me!Выбор.ItemData(varItm) + ","
должна вылетать ошибка, т.к. VBA думает, вы пытаетесь найти сумму строки и числа.
Пишите так:
strParam = strParam & Me!Выбор.ItemData(varItm) & ","
А еще лучше:
strParam = strParam & "," & Me!Выбор.ItemData(varItm)
...
strParam = Mid$(strParam, 2)
...

  Ответить  
 
 автор: Scorpi   (22.05.2008 в 04:50)   личное сообщение
 
 

Формирование strParam исправила, хотя ошибка не вылетала. Проблема в другом, есть запрос с параметром сохраненный в access (select * from tabl where id in (strParam)") и в проге передается его название для рекордсета. Проблема в том что если сразу в запросе пишу числа через "," то все отрабатывает нормально, а если оставляю параметр и после запуска на выполнение в открывшемся окне ввожу те же числа так же через "," то запрос ничего не отображает ((

Ушла от подчиненной формы, но если кто подскажет как это все таки реализуется буду благодарна (чтоб в будущем не спрашивать )

  Ответить  
 
 автор: Анатолий (Киев)   (22.05.2008 в 12:00)   личное сообщение
 
 

Когда вы указываете критерий в запросе, строка SQL выглядит так:
... In (1, 2, 3)
Если вы передаете значение параметру, то, в итоге, строка выглядит так:
... In ("1, 2, 3")
Разницу чувствуете?
Вам надо либо вовсе отказаться от сохраненного запроса и формировать строку SQL в процедуре, либо в запросе использовать функцию EVal. Что*то типа:
WHERE EVal([Поле]=[strParam]) = True

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList