|
|
|
Фильтр по запросу Crosstab
|
|||
|---|---|---|---|
|
#18+
Имеем собранный из разных таблиц Query1: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Crosstab'ом переворачивем Query1 в вид (Query2): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Задача состоит в следующем: Query2 вызывается из формы TopicForm, в которой лежит ComboBox, состоящий из списка месяцев, и кнопки, по которой открываеться Query2. Необходимо, что бы, в зависимости от выбранного месяца в ComboBox, Query2 фильтровался по этому месяцу. Конечно, можно было бы создать Report, содержащий поля из Query2, но при добавлении строк в Query1, автоматом поле в Report'e не обновлялись бы. Приходилось снова и снова его перерисовывать. А если я указываю критерий отбора в Query2: =[Forms]![TopicForm]![CobmoBox].[value] Тогда после открытия Query1, выскакивает ошибка, что указанный критерий не допустимое имя или выражение. Как можно решить такую проблему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2003, 13:36 |
|
||
|
Фильтр по запросу Crosstab
|
|||
|---|---|---|---|
|
#18+
Необходимо в параметрах запроса Query2 указать параметр [Forms]![TopicForm]![CobmoBox].[value] as date() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2003, 15:09 |
|
||
|
Фильтр по запросу Crosstab
|
|||
|---|---|---|---|
|
#18+
Вижу две вещи. 1. Если не получается обратиться непосредственно к контролю на форме, то можно завести переменную, заносить в нее значение на AfterUpdate контроля, а в SQL'е поставить функцию, которая бы возвращала значение этой переменной. 2. Поскольку речь идет о месяце, то я сомневаюсь, что можно так запросто проверять на "равно". Надо либо проверять интервал (от 1 числа до 1 числа), либо месяц отдельно и год отдельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2003, 15:16 |
|
||
|
Фильтр по запросу Crosstab
|
|||
|---|---|---|---|
|
#18+
re: Вижу две вещи. по пункту 2, всё понятно....та просто ставиться like "**.01.2003", тут нет проблем...только как из кросстаба достучаться до переменной, лежащей в форме.....расскади по подробней о пункте 1....как "завести переменную", с афтерупдейтом я разберусь...., и как в "SQL'е поставить функцию"?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2003, 01:40 |
|
||
|
Фильтр по запросу Crosstab
|
|||
|---|---|---|---|
|
#18+
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 с данными не строкового типа нехорошо, а две * подряд - это все равно что одна. :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2003, 11:36 |
|
||
|
Фильтр по запросу Crosstab
|
|||
|---|---|---|---|
|
#18+
Попробуй вот так: 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; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2003, 14:31 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32115389&tid=1682164]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 204ms |
| total: | 340ms |

| 0 / 0 |
