Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как передать данные в .... / 15 сообщений из 15, страница 1 из 1
29.11.2003, 22:12
    #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
01.12.2003, 09:04
    #32338946
Spate
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать данные в ....
Господа! если кто то может помочь, то не сочтите за труд сделать это как можно быстрее! Мне эта штука очень срочно нужна!
Заранее огромное спасибо!
...
Рейтинг: 0 / 0
01.12.2003, 09:53
    #32339009
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать данные в ....
А можно сделать краткое содержание вопроса?
...
Рейтинг: 0 / 0
01.12.2003, 10:04
    #32339024
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать данные в ....
Да, ладно, можно пока и без краткого обойтись, для начала как обычно, по маленькой: /topic/36767&hl=faq
...
Рейтинг: 0 / 0
01.12.2003, 23:25
    #32340019
Spate
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать данные в ....
кратко наверное можно например так:
проблема заключается в том, что
А) надо как-то передать количество выбранных Торговых Марок из кода на кнопке ( их количество можно взять так :
KOLVO= lb.ItemsSelected.Count-1 ) в условие во втором запросе вот сюда HAVING Count(*)>1.
Б) я не знаю как передать условие во второй запрос(подчиненный). Дело в том, что условие которое
находится в strWhere подставляется в поле с тем же именем в первом запросе.

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

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

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

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

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

Еще полумысль. Чтобы эту таблицу не заполнять каждый раз руками, можно сделать в ней поле "номер варианта" и включать в запросы только те ее записи, в которых номер варианта равен какому-нибудь параметру.
...
Рейтинг: 0 / 0
02.12.2003, 00:20
    #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
02.12.2003, 00:35
    #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
02.12.2003, 00:36
    #32340043
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать данные в ....
Насколько я понял, тебе надо найти магазины одновременно торгующие n торговыми марками (товарами). Аналогичная задача рассматривалась \r
тут\r
Удачи
...
Рейтинг: 0 / 0
02.12.2003, 00:37
    #32340044
Spate
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать данные в ....
еще в догонку: разделил условия знаком "," отчет снова заработал, но он пустой...
буду дальше думать...
...
Рейтинг: 0 / 0
02.12.2003, 00:38
    #32340045
Spate
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать данные в ....
она то вроде аналогичная, но я никак не могу ее к своим полям подставить :_))))
поэтому мучаюсь в том виде который тут написал.
...
Рейтинг: 0 / 0
02.12.2003, 00:47
    #32340046
Spate
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать данные в ....
еще один вопрос рядом с этой темой:
а как в коде запустить не отчет с параметрами, а запрос?
на моем примере?
хочу посмотреть- может быть у меня отчет где то глючит?
ведь как я уже раньше писал, если отдельно запрос запускать с предустановленными условиями вручную, то там правильно все выдается.
...
Рейтинг: 0 / 0
02.12.2003, 01:21
    #32340052
SiriusB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать данные в ....
Свести все нужные данные в один запрос

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

Если в запросе не окажется поля с нужной характеристикой отбора, создайте его как вычисляемое
...
Рейтинг: 0 / 0
02.12.2003, 03:10
    #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
02.12.2003, 12:49
    #32340568
Spate
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как передать данные в ....
неужели моя задача такая сложная на самом деле?

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


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