powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Фильтр по запросу Crosstab
6 сообщений из 6, страница 1 из 1
Фильтр по запросу Crosstab
    #32114818
LANKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеем собранный из разных таблиц Query1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
+ -----------------+-----------------+------------------+
 
|    col_topic	|       date      |      money       |
+ -----------------+-----------------+------------------+
 
|    topic1	|    01 . 02 . 2003     |       200 	|
+ -----------------+-----------------+------------------+
 
|    topic2	|    10 . 02 . 2003      |       300 |
+ -----------------+-----------------+------------------+
 
|    topic3	|    01 . 03 . 2003     |       400 	|
+ -----------------+-----------------+------------------+
 
|    topic4	|    05 . 03 . 2003     |       350 	|
+-----------------+-----------------+------------------+


Crosstab'ом переворачивем Query1 в вид (Query2):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
+ ------------+--------+--------+--------+--------+
 
|    date    | topic1 | topic2 | topic3 | topic4 |
+ ------------+--------+--------+--------+--------+
 
|  01 . 02 . 2003  |   200    |
+ ------------+--------+--------+--------+--------+
 
|  10 . 02 . 2003  |	    |  300     
+ ------------+--------+--------+--------+--------+
 
|  01 . 03 . 2003  |	    |        |    400   
+ ------------+--------+--------+--------+--------+
 
|  05 . 03 . 2003  |	    |        |	    |    350 	 
+ ------------+--------+--------+--------+--------+
 


Задача состоит в следующем:
Query2 вызывается из формы TopicForm, в которой лежит ComboBox, состоящий из списка месяцев, и кнопки, по которой открываеться Query2. Необходимо, что бы, в зависимости от выбранного месяца в ComboBox, Query2 фильтровался по этому месяцу.

Конечно, можно было бы создать Report, содержащий поля из Query2, но при добавлении строк в Query1, автоматом поле в Report'e не обновлялись бы. Приходилось снова и снова его перерисовывать.

А если я указываю критерий отбора в Query2: =[Forms]![TopicForm]![CobmoBox].[value]
Тогда после открытия Query1, выскакивает ошибка, что указанный критерий не допустимое имя или выражение.

Как можно решить такую проблему?
...
Рейтинг: 0 / 0
Фильтр по запросу Crosstab
    #32114906
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо в параметрах запроса Query2 указать параметр [Forms]![TopicForm]![CobmoBox].[value] as date()
...
Рейтинг: 0 / 0
Фильтр по запросу Crosstab
    #32114916
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вижу две вещи.

1. Если не получается обратиться непосредственно к контролю на форме, то можно завести переменную, заносить в нее значение на AfterUpdate контроля, а в SQL'е поставить функцию, которая бы возвращала значение этой переменной.

2. Поскольку речь идет о месяце, то я сомневаюсь, что можно так запросто проверять на "равно". Надо либо проверять интервал (от 1 числа до 1 числа), либо месяц отдельно и год отдельно.
...
Рейтинг: 0 / 0
Фильтр по запросу Crosstab
    #32115220
LANKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
re: Вижу две вещи.

по пункту 2, всё понятно....та просто ставиться like "**.01.2003", тут нет проблем...только как из кросстаба достучаться до переменной, лежащей в форме.....расскади по подробней о пункте 1....как "завести переменную", с афтерупдейтом я разберусь...., и как в "SQL'е поставить функцию"?...
...
Рейтинг: 0 / 0
Фильтр по запросу Crosstab
    #32115389
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
1. В каком-нибудь модуле:

Dim v As Variant

Sub SetV(vValue As Variant)
v = vValue
End Sub

Function GetV() As Variant
GetV = v
End Function

2. В AfterUpdate:

SetV ...

3. В SQL'е:

... WHERE ... = GetV()

4. Кстати: использовать Like с данными не строкового типа нехорошо, а две * подряд - это все равно что одна. :^)
...
Рейтинг: 0 / 0
Фильтр по запросу Crosstab
    #32115602
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй вот так:

PARAMETERS Forms!TopicForm!CobmoBox DateTime;
TRANSFORM Sum(Query1.Money) AS SumOfMoney
SELECT Query1.Date, Format([Date],"mm\.yy") AS Expr1
FROM Query1
WHERE (((Format([Date],"mm\.yy"))=Format([Forms]![TopicForm]![CobmoBox],"mm\.yy")))
GROUP BY Query1.Date
PIVOT Query1.col_Topic;
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Фильтр по запросу Crosstab
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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