powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как передать данные в ....
15 сообщений из 15, страница 1 из 1
как передать данные в ....
    #32338535
Spate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скорее всего все мои вопросы из области знания азов Аксеса, просто есть какие то операторы, которых я не знаю.
и еще, несмотря на то, что тут очень много чего я написал, но на самом деле тут дольше читать, чем разбираться в сложностях.

На данный момент состояние дел таково:
мой запрос выводит нужную мне информацию.
но условия (товар) мне приходится вводить в ручную в конструкторе запросов.

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

город(CodeSI), ТорговаяМарка(CodeTM), НазваниеНагазина(NameShopE).

В нем есть все магазины, которые торгуют или одной или второй или третьей .... торговой маркой (сколько Like ..OR.. поставлю, столько и выдает).
он выглядит так:

Код: plaintext
1.
2.
3.
SELECT buys.CodeSI, buys.CodeTM, ShopInfo.NameShopE
 FROM TradeMark INNER JOIN (ShopInfo INNER JOIN buys ON ShopInfo.CodeSI = buys.CodeSI)
ON TradeMark.CodeTM = buys.CodeTM
GROUP BY buys.CodeSI, buys.CodeTM, ShopInfo.NameShopE;

называется он : zКакиеМагазиныТоргуютSrazuТМEp

затем также в конструкторе я создал второй запрос с помощью мастера(Повторяющиеся записи).
в виде SQL он выглядит так:

Код: plaintext
1.
2.
3.
4.
5.
SELECT zКакиеМагазиныТоргуютSrazuТМEp.CodeSI, zКакиеМагазиныТоргуютSrazuТМEp.CodeTM,
zКакиеМагазиныТоргуютSrazuТМEp.NameShopE FROM zКакиеМагазиныТоргуютSrazuТМEp
WHERE (((zКакиеМагазиныТоргуютSrazuТМEp.CodeSI) In
(SELECT [CodeSI] FROM [zКакиеМагазиныТоргуютSrazuТМEp] As Tmp
GROUP BY [CodeSI] HAVING Count(*)> 1  )))
ORDER BY zКакиеМагазиныТоргуютSrazuТМEp.CodeSI;

называется он :zКакиеМагазиныТоргуютSrazuТМE
Результат этого запрос выдает как раз ту табличку, которую я и хотел получть.
Только если я в первом запросе ставлю N условий, то во втором запросе приходится после знака> ставить число (N-1).


НО все это хорошо только для эксперимента. В реальности у меня есть форма в которой есть листбокс ТорговыхМарок, есть кнопка которая запускает Отчет,
вот код на кнопке в форме:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Private Sub Кнопка7_Click()
Dim lb As ListBox
Dim strWhere As String
Dim strCriteria As String
Dim stDocName As String
Dim i As Long

Set lb = Me.[choiceTradeMark]
If lb.ItemsSelected.Count <>  0  Then
    
    strCriteria =  "zКакиеМагазиныТоргуютSrazuТМEp.buys.CodeTM 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
    
End If

On Error GoTo Err_Кнопка7_Click
    stDocName = " reportWhoShopSrazuTME"
    DoCmd.OpenReport stDocName, acPreview, , strWhere

Exit_Кнопка7_Click:
    Exit Sub

End Sub

Отчет в качестве источника данных использует второй запрос
с именем zКакиеМагазиныТоргуютSrazuТМE,
этот запрос в качестве источника использует первый запрос с именем zКакиеМагазиныТоргуютSrazuТМEp

проблема заключается в том, что
А) надо как-то передать количество выбранных Торговых Марок из кода на кнопке ( их количество можно взять так :
KOLVO= lb.ItemsSelected.Count-1 ) в условие во втором запросе вот сюда HAVING Count(*)>1.
Б) я не знаю как передать условие во второй запрос(подчиненный). Дело в том, что условие которое
находится в strWhere подставляется в поле с тем же именем в первом запросе.
...
Рейтинг: 0 / 0
как передать данные в ....
    #32338946
Spate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа! если кто то может помочь, то не сочтите за труд сделать это как можно быстрее! Мне эта штука очень срочно нужна!
Заранее огромное спасибо!
...
Рейтинг: 0 / 0
как передать данные в ....
    #32339009
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А можно сделать краткое содержание вопроса?
...
Рейтинг: 0 / 0
как передать данные в ....
    #32339024
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, ладно, можно пока и без краткого обойтись, для начала как обычно, по маленькой: /topic/36767&hl=faq
...
Рейтинг: 0 / 0
как передать данные в ....
    #32340019
Spate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кратко наверное можно например так:
проблема заключается в том, что
А) надо как-то передать количество выбранных Торговых Марок из кода на кнопке ( их количество можно взять так :
KOLVO= lb.ItemsSelected.Count-1 ) в условие во втором запросе вот сюда HAVING Count(*)>1.
Б) я не знаю как передать условие во второй запрос(подчиненный). Дело в том, что условие которое
находится в strWhere подставляется в поле с тем же именем в первом запросе.

но что бы понять что за а) и Б) я решил накатать такую простыню какая здесь и отображена.

вообще, в силу своих ограниченных познаний в аксессе, я действительно не могу более кратко изложить суть вопроса, но с готовностью попытаюсь уточнить то , что вам покажется недостаточным для понимания того чем мне можно помочь здесь.

по той же причине мне очнеь трудно понять односложные ответы, которые отсылают меня к теории :-((

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

Спасибо за участие.
...
Рейтинг: 0 / 0
как передать данные в ....
    #32340022
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Полумысль. Может быть, можно не писать Like в конструкторе, а сделать таблицу, в записях которой будут сидеть эти лайки. Тогда во втором запросе количество лайков можно написать как количество записей в этой таблице.

Еще полумысль. Чтобы эту таблицу не заполнять каждый раз руками, можно сделать в ней поле "номер варианта" и включать в запросы только те ее записи, в которых номер варианта равен какому-нибудь параметру.
...
Рейтинг: 0 / 0
как передать данные в ....
    #32340037
Spate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот что я сделал после своего последнего сообщения:

strCriteria = "zSrazuTMEp.buys.CodeTM 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
strWhere = strWhere & " " & "zSrazuTME.CodeSI In (SELECT [CodeSI] FROM [zSrazuTMEp] As Tmp GROUP BY [CodeSI] HAVING Count(*)>'" & Kolvo & "'" & ")"
MsgBox strWhere

1)
для краткости я заменил названия запросов, но оставил их окончания теми же что и были :-)
2) в запросе с именем zSrazuTME я убрал из конструктора строку условия, и вставил ее в код на кнопке. - результат: теперь отчет вовсе не запускается, но зато возникла резонная мысль- а ведь я возможно не верно разделяю условия для разных полей!!! да еще и в разных запросах!!!

теперь мысль вопроса более четкая: как в strWhere = ..... написать это услови правильно?
...
Рейтинг: 0 / 0
как передать данные в ....
    #32340042
Spate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
некоторые уточнения:
1)
Dim Kolvo As Byte


Set lb = Me.[choiceTradeMark]
Kolvo = lb.ItemsSelected.Count - 1

это откуда количество взялось

2)
строка условия наверное более правильно должна так выглядеть:
strWhere = strWhere & " " & "zSrazuTME .zSrazuTMEp .CodeSI In (SELECT [CodeSI] FROM [zSrazuTMEp] As Tmp GROUP BY [CodeSI] HAVING Count(*)>'" & Kolvo & "'" & ")"
MsgBox strWhere
так как поле CodeSI в запросе zSrazuTME из запроса zSrazuTMEp

это я так по аналогии с лайком...

еще комментарий: отдельно лайк в варианте для запроса предварительного отлично работает.
...
Рейтинг: 0 / 0
как передать данные в ....
    #32340043
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понял, тебе надо найти магазины одновременно торгующие n торговыми марками (товарами). Аналогичная задача рассматривалась \r
тут\r
Удачи
...
Рейтинг: 0 / 0
как передать данные в ....
    #32340044
Spate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еще в догонку: разделил условия знаком "," отчет снова заработал, но он пустой...
буду дальше думать...
...
Рейтинг: 0 / 0
как передать данные в ....
    #32340045
Spate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
она то вроде аналогичная, но я никак не могу ее к своим полям подставить :_))))
поэтому мучаюсь в том виде который тут написал.
...
Рейтинг: 0 / 0
как передать данные в ....
    #32340046
Spate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еще один вопрос рядом с этой темой:
а как в коде запустить не отчет с параметрами, а запрос?
на моем примере?
хочу посмотреть- может быть у меня отчет где то глючит?
ведь как я уже раньше писал, если отдельно запрос запускать с предустановленными условиями вручную, то там правильно все выдается.
...
Рейтинг: 0 / 0
как передать данные в ....
    #32340052
Фотография SiriusB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Свести все нужные данные в один запрос

И действуя фильтрами по выделенному легко решить поставленную задачу

Если в запросе не окажется поля с нужной характеристикой отбора, создайте его как вычисляемое
...
Рейтинг: 0 / 0
как передать данные в ....
    #32340065
Spate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проблема в том, что моя метода работает только с двумя запросами!
в первом происходит выборка по Торговым маркам и группировка,
а во втором запросе применение вот такого условия:
zSrazuTME.zSrazuTMEp.CodeSI In (SELECT [CodeSI] FROM [zSrazuTMEp] As Tmp GROUP BY [CodeSI] HAVING Count(*)>'" & Kolvo & "'" & ")"

причем zSrazuTME.zSrazuTMEp.CodeSI это я сам подставил в код на кнопке, в попытке автоматизации ввода фильтра.
если же я пытаюсь совместить группировку, отбор по лайку с этим условием, то мне выдается много ненужной инфы- другими словами так не работает...
возможно тут действительно надо какое то выражение вписать в запрос, но я не знаю какое! :_(

причем как в первом запросе так и во втором используются только два столбца из одной таблицы ( в ссылке , которую мне тут дали) она называется таблицей соответствия... поля CodeSI- название магазина, CodeTM- название торговой марки продукта.
...
Рейтинг: 0 / 0
как передать данные в ....
    #32340568
Spate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
неужели моя задача такая сложная на самом деле?

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


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