Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как передать из списка в форме в запрос несколько значений этого списка(+)? / 25 сообщений из 31, страница 1 из 2
30.10.2003, 14:19
    #32310412
Spate
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
как передать из списка в форме в запрос несколько значений этого списка для того , что бы отфильтровать в запросе данные, по результату выделения в форме.
...
Рейтинг: 0 / 0
30.10.2003, 14:38
    #32310464
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
такими делами удобнее заняться с таблицей:

делаешь в ней поле с галкой
ставишь галку для нужных

объединяешь эту таблицу с таблицей данный
в запросе и ставишь фильтр: брать тока те, где стоит галка.

ВСЕ!
...
Рейтинг: 0 / 0
30.10.2003, 14:52
    #32310491
assa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
проверить св-во .Selected (см. справку). Накидать идентификаторы записей в авоську (строку " IN(x,x,x,x,x,)") и прицепить ее к строке WHERE запроса
...
Рейтинг: 0 / 0
30.10.2003, 14:56
    #32310504
TRoUbLEs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
То assa :
Хоть этот пост и не я открыл, но мне тоже это надо будет делать и вот тоже ломал голову как. Ты подкинул мне светлую(???) мыслишку. :)) Пасибочки.
...
Рейтинг: 0 / 0
30.10.2003, 18:01
    #32310901
Spate
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
Расшифруйте, пожалуйста, 399963 сообщение.Я не знаю как найти это свойство, и по справке никак не докопаюсь.:-(
Это свойство у моего списка?
запрос в режиме SQL выгладит так:

SELECT ShopManagerSpecialize.CodeTMSpecialize, TradeMark.TradeMarkR
FROM TradeMark INNER JOIN ((ShopInfo INNER JOIN ShopManager ON ShopInfo.CodeSI = ShopManager.CodeSI) INNER JOIN ShopManagerSpecialize ON ShopManager.CodeShM = ShopManagerSpecialize.CodeShM) ON TradeMark.CodeTM = ShopManagerSpecialize.CodeTMSpecialize
WHERE (((ShopManagerSpecialize.CodeTMSpecialize) Like [Forms]![formaFIOsellerALL]![choiceTM]));

запрос открывается отчетом.Отчет открывается формой, в которой есть только этот список : (поле choiceTM).

Private Sub ChoiceTM_AfterUpdate()
On Error GoTo Err_ChoiceTM_AfterUpdate

Dim stDocName As String

stDocName = "reportFIOsellerALL"
DoCmd.OpenReport stDocName, acPreview

Exit_ChoiceTM_AfterUpdate:
Exit Sub

Err_ChoiceTM_AfterUpdate:
'MsgBox Err.Description
Resume Exit_ChoiceTM_AfterUpdate
End Sub

Когда я вместо списка делал поле со списком, и соотвественно его подставлял в в запрос, то результат выдавался, но только для одного выбранного значения, а мне к несчастью, нужно чтобы отчет выдавал результат нескольких значений списка choiceTM.
...
Рейтинг: 0 / 0
30.10.2003, 18:15
    #32310928
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
Не связанное выделение уже научили делать, как я понял?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim lb As ListBox
Set lb = Me.[мой лист бокс]
For i =  0  To lb.ListCount -  1 
      If lb.Selected(i) Then
         ' (lb.Column(0, i) - это для примера, если у листа присоединённый столбец 0
         ' делаем что угодно, т.е. собираем в строку строчку Where
      End If
Next


Ну примерно так.
...
Рейтинг: 0 / 0
31.10.2003, 11:27
    #32311467
Spate
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
а как это сделать- собрать строку в where?
у листбокса имя ChoiceTM.
Куда вставлять Ваш код?
я так понимаю, что вот в этом месте что то должно поменяться?
WHERE (((ShopManagerSpecialize.CodeTMSpecialize) Like [Forms]![formaFIOsellerALL]![choiceTM]));
...
Рейтинг: 0 / 0
31.10.2003, 11:51
    #32311528
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
Под кнопку на форме с листбоксом вставляем код.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Dim lb As ListBox
Dim strWhere As String
Dim strCriteria As String
Dim i As Long
If lb.ItemsSelected.count <>  0  Then
    Set lb = Me.[мой лист бокс]
    strCriteria =  "ShopManagerSpecialize.CodeTMSpecialize Like '" '
    strWhere = strCriteria
    For i = 0  To lb.ListCount -  1 
        If lb.Selected(i) Then
            If strWhere = strCriteria Then
                strWhere = strWhere & lb.Column( 0 , i) & "'"
            Else
                strWhere = strWhere & " OR " & strCriteria & lb.Column(0, i) & "'"
            End If
        End If
    Next
    MsgBox strWhere
End If
...
Рейтинг: 0 / 0
31.10.2003, 11:54
    #32311533
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
Лучше использовать цикл
dim var as Variant
For each var in list.ItemsSelected
вместо For i = 0 To lb.ListCount - 1
...
Рейтинг: 0 / 0
31.10.2003, 11:56
    #32311536
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
2 Senin Viktor
Ну да, так быстрее будет:)
Не додумал немного, просто писалось быстро и на примерном листе (небольшом).
...
Рейтинг: 0 / 0
31.10.2003, 11:57
    #32311540
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
В коде ошибка есть - присвоение lb нужно делать раньше первого IF:)

Ghjcnj Ша добавил потом не подумавши:)
...
Рейтинг: 0 / 0
31.10.2003, 12:23
    #32311587
assa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
Не, Like + OR оно конечно хорошо, но рыхло (все таки есть ограничение на длину SQL инструкции). In(,,,,,) значительно компактнее. Я для сбора строк использую че -нить наподобие:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Function ConCat (x, y, sep As String)
    If Trim(x &  "") = "  " Then
        ConCat = y & "  "
        Exit Function
    End If
    ConCat = x
    If Trim(y & "  ") <> " " Then
        ConCat = x & sep & y
    End If
End Function

И вызываю ее под разными соусами (sep ="," | " OR " | " AND ") для сшивок strWhere. Пополнив джентельменский набор ф-ей наподобие:
Код: plaintext
1.
2.
3.
4.
5.
6.
Function ConPreSuf (pref As String, x, suf As String) As String
    If Trim(x &  "") = "  " Then
        ConPreSuf = " "
        Exit Function
    End If
    ConPreSuf = pref & x & suf
End Function

можно покрыть большую часть потребностей по динамическому сбору SQL строк.
...
Рейтинг: 0 / 0
01.11.2003, 12:41
    #32312518
Spate
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
Спасибо всем за участие в этой проблеме!
И помогите сделать наверное последниый шаг %-\

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

Private Sub Кнопка9_Click()
Dim lb As ListBox
Dim strWhere As String
Dim strCriteria As String
Dim stDocName As String
Dim i As Long

Set lb = Me.[ChoiceTM]
If lb.ItemsSelected.Count <> 0 Then

strCriteria = "ShopManagerSpecialize.CodeTMSpecialize Like '" '
strWhere = strCriteria
For i = 0 To lb.ListCount - 1
If lb.Selected(i) Then
If strWhere = strCriteria Then
strWhere = strWhere & lb.Column(0, i) & "'"
Else
strWhere = strWhere & " OR " & strCriteria & lb.Column(0, i) & "'"
End If
End If
Next
MsgBox strWhere


End If
On Error GoTo Err_ChoiceTM_L
stDocName = "reportFIOsellerALL"
DoCmd.OpenReport stDocName, acPreview

Exit_ChoiceTM_L:
Exit Sub

Err_ChoiceTM_L:
MsgBox Err.Description
Resume Exit_ChoiceTM_L
End Sub

Отчет использует запрос, который я собрал в конструкторе, и чтобы его здесь показать, я его представил в виде SQL.

SELECT ShopManagerSpecialize.CodeTMSpecialize, TradeMark.TradeMarkR
FROM TradeMark INNER JOIN ((ShopInfo INNER JOIN ShopManager ON ShopInfo.CodeSI = ShopManager.CodeSI) INNER JOIN ShopManagerSpecialize ON ShopManager.CodeShM = ShopManagerSpecialize.CodeShM) ON TradeMark.CodeTM = ShopManagerSpecialize.CodeTMSpecialize
WHERE (((ShopManagerSpecialize.CodeTMSpecialize) Like '6' Or (ShopManagerSpecialize.CodeTMSpecialize) Like '16'));

в данном примере я подставил просто два числа 6 и 16 чтобы мне самому было понятнее как пишется условие отбора. Но вопрос вот в чем: я уже пробовал подставлять так:

SELECT ShopManagerSpecialize.CodeTMSpecialize, TradeMark.TradeMarkR
FROM TradeMark INNER JOIN ((ShopInfo INNER JOIN ShopManager ON ShopInfo.CodeSI = ShopManager.CodeSI) INNER JOIN ShopManagerSpecialize ON ShopManager.CodeShM = ShopManagerSpecialize.CodeShM) ON TradeMark.CodeTM = ShopManagerSpecialize.CodeTMSpecialize
WHERE ('strWhere');
с вариантами скобок, ковычек :-(, но похоже, что при таком подходе, данные не подставляются, а в WHERE используетсся просто само слово strWhere, а не то что эта переменная должна нести в себе.

вот что собирается при выборе двух значений из списка "ShopManagerSpecialize.CodeTMSpecialize Like '6' OR ShopManagerSpecialize.CodeTMSpecialize Like '16'" после нажатия кнопки в форме, но еще раз повторюсь, похоже что эта строка в запрос не передается.
...
Рейтинг: 0 / 0
01.11.2003, 14:56
    #32312559
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
Если в запрос вставлено имя переменной, то оно там не распознается. Надо вставить значение переменной. То есть:

strSelect = ... & strWhere

таким образом, чтобы значение strWhere стало частью значения strSelect.
...
Рейтинг: 0 / 0
03.11.2003, 20:55
    #32314140
Spate
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
напишите пожалуйста что куда поставить исходя из моего примера- никак не соображу сам :-((
...
Рейтинг: 0 / 0
03.11.2003, 21:12
    #32314154
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
В этом примере составляется некий стринг:

strWhere = strWhere & ...

Точно таким же образом надо этот стринг запихать в селект. Не имя его, а сам стринг.

strSelect = ... & strWhere
...
Рейтинг: 0 / 0
05.11.2003, 04:52
    #32315498
Spate
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
прошу прощения за то, что торможу, но вот куда конкретно вписать ваш пример в моем запросе???:

В этом примере составляется некий стринг:

strWhere = strWhere & ...

Точно таким же образом надо этот стринг запихать в селект. Не имя его, а сам стринг.

strSelect = ... & strWhere

SELECT ShopManagerSpecialize.CodeTMSpecialize, TradeMark.TradeMarkR
FROM TradeMark INNER JOIN ((ShopInfo INNER JOIN ShopManager ON ShopInfo.CodeSI = ShopManager.CodeSI) INNER JOIN ShopManagerSpecialize ON ShopManager.CodeShM = ShopManagerSpecialize.CodeShM) ON TradeMark.CodeTM = ShopManagerSpecialize.CodeTMSpecialize
WHERE ('strWhere');
с вариантами скобок, ковычек :-(, но похоже, что при таком подходе, данные не подставляются, а в WHERE используетсся просто само слово strWhere, а не то что эта переменная должна нести в себе.
...
Рейтинг: 0 / 0
05.11.2003, 15:21
    #32316260
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
> но похоже, что при таком подходе, данные не подставляются, а в WHERE используетсся просто само слово strWhere, а не то что эта переменная должна нести в себе.

Вот именно это и надо исправить.
...
Рейтинг: 0 / 0
06.11.2003, 12:28
    #32317143
Spate
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
но вот именно что как и где я и не могу дотумкать :-(((
Пожалуйста, впешите в пример моего запроса правильную строку подстановки фильтра выбранного из списка.
...
Рейтинг: 0 / 0
06.11.2003, 12:38
    #32317155
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
А как выглядит программа, которая запихивает буквы "strWhere" в стринг?
...
Рейтинг: 0 / 0
06.11.2003, 12:54
    #32317182
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
2 ВС
В сообщении выше представлен текст программы.

2 Spate
Код: plaintext
1.
DoCmd.OpenReport  "MyReport" , acViewPreview, , strWhere


В источнике данных репорта ставишь запрос без Where. Должно работать.
...
Рейтинг: 0 / 0
06.11.2003, 13:04
    #32317197
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
Hummer писал:В сообщении выше представлен текст программы.
В котором? Я прошу программу, которая запихивает буквы "strWhere" в стринг. Выше я вижу только сам стринг, полученный при помощи какой-то программы, и вижу программу, которая сочиняет strWhere, который нигде не используется.
...
Рейтинг: 0 / 0
06.11.2003, 13:40
    #32317269
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
2 Владимир Саныч
Не будем разводить демагогию.
Если прочитать всю ветку, то становится ясно, что автор ветки привёл текст запроса с неправильной вставкой переменной в запрос, вот и всё, Вы сами это поняли (strSelect = ... & strWhere (Ваше сообщение 404775)), автор этого не понял и не понял, что нужно сделать, чтобы всё заработало.
Он в конструкторе в запрос вставляет в условие Where переменную, потом смотрит текст запроса и получает имя переменной в кавычках.
Это следут из поста автора за номером 402641.
("Отчет использует запрос, который я собрал в конструкторе, и чтобы его здесь показать, я его представил в виде SQL").
Итоговая строка запроса в коде нигде не формируется, как это следует из того же поста.

2 Spate
Нужно объявить строковую переменную (strSelect) и сделать то, что предложил Владимир Саныч (strSelect = ... & strWhere, где вместо многоточия текст запроса с последней командой WHERE), далее открыть отчёт и в качестве его источника данных использовать эту переменную. Передать можно значение через OpenArgs или открыть в скрытом режиме и присвоить источник данных в том же блоке кода, где формируется Where.
...
Рейтинг: 0 / 0
06.11.2003, 13:54
    #32317305
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
> Не будем разводить демагогию.

Без демагогии я уже дважды сказал автору вопроса, что надо делать. Если он не понимает, то пусть покажет свою программу. Вставляет ли он в конструкторе, я не знаю, но догадка интересная.
...
Рейтинг: 0 / 0
06.11.2003, 14:12
    #32317338
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать из списка в форме в запрос несколько значений этого списка(+)?
:)
Не понимает, но программу показал уже всю. как мне кажется:)
Или я уже тоже ничего не понимаю:)

см. 402641 >сейчас у меня на кнопке, в форме которая вызывает отчет,благодаря вам, висит вот этот код:

и далее по тексту...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как передать из списка в форме в запрос несколько значений этого списка(+)? / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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