Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > проблем из listbox в запрос(отчет)


Автор: ABPOPA 9.5.2007, 18:15
такое дело.

есть форма с лисбоксом,по листбоксу делаю множественный выбор, записываю в строку все что выделено через "or".

отдельной функцией беру строку.

как условие передаю строку из функции в запрос.

так вот собственно трабла в том что строка "23 Or 24 Or 25" записывается и передается.но запрос её не воспринемает в условиях.а если просто "25" то все норм.

подскажите как сделать?

Автор: Akina 9.5.2007, 22:47
Телепаты у нас нынче в отпуске.
Текст - в студию.

Автор: ABPOPA 10.5.2007, 17:32
Сори не догодался срузу выложить код.

Код

Public Function SpisokOsnov() As String
Dim varItem As Variant
Dim strRez As String
For Each varItem In spisok.ItemsSelected
strRez = strRez & spisok.ItemData(varItem) & ";"
Next varItem
If Len(strRez) = 0 Then SpisokOsnov = "": Exit Function
strRez = Left$(strRez, Len(strRez) - 1)
strRez = "In(" & strRez & ")"
SpisokOsnov = strRez
End Function

Код

Public Function GetValue()
GetValue = Form_Форма1.SpisokOsnov
End Function

Код

SELECT таблица.id, таблица.[Счет получателя], таблица.Плательщик, таблица.Основание
FROM таблица
WHERE (((таблица.id)=GetValue()));


собственно формиру строку из всех выбраных элементов ЛистБокса.
Передаю строку в модуль.
Строку из модуля использую как условие в запросе.

пробывал строку In(72;73;74) и  72 Or 73 Or 74. Воспринемает только когда выделяеш один элемент например передается 73.

Хелп плиз.мозг сломал ужо smile 

Автор: Akina 10.5.2007, 18:01
А ты попробуй в свой запрос подставить ТОЧНО ту строку, которую возвращает функция. А потом посмотри, как полученный запрос соотносится с синтаксисом MS Jet SQL...

Автор: ABPOPA 10.5.2007, 18:15
строка из функции In(73;74;75) не работает.
строка в условии In(73;74;75) работатет.

в том то и проблема.

Автор: Akina 10.5.2007, 22:13
Цитата(ABPOPA @  10.5.2007,  19:15 Найти цитируемый пост)
строка из функции In(73;74;75) не работает.
строка в условии In(73;74;75) работатет.

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

Автор: ABPOPA 11.5.2007, 00:33
в том то и проблема что с запятой тож не хочет :( 
пробавал еше в самом начале.

должен но не хочет :(:(:(:(

системный разделитель у меня "зпт"
вовсяком случае возврашеет вот это
Код

Public Function GetDecimalSeparator() As String
GetDecimalSeparator = Format(0#, ".")
End Function
 
"зпт"

из-за него наверное 

Автор: ABPOPA 11.5.2007, 12:58
мож кто знает?
как решить траблу?


или можите подсказать как сделать отчет(запрос) другим способом.

Автор: bopoha 12.5.2007, 08:37
Синтаксис такой:
Код

... WHERE имя_поля In (значение1, значение2, значение 3, ...)

Автор: ABPOPA 12.5.2007, 23:40
Цитата(bopoha @ 12.5.2007,  08:37)
Синтаксис такой:
Код

... WHERE имя_поля In (значение1, значение2, значение 3, ...)

вопрос не в том.да не важно уже.



спс всем решил вопрос програмным созданием запроса.
спасибо за внимание.тему мона закрыть.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)