Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / создании формы с источником из перекрестного запроса Access 2010 / 25 сообщений из 61, страница 1 из 3
22.12.2016, 12:41
    #39372781
pims
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
добрый день.
Прошу помощи в создании формы с источником из перекрестного запроса, в котором к сожалению не фигурирует уникальный идентификатор, а мне нужно именно из него вызывать др.форму для редактирования. Как это можно сделать?
т.е. имеем таблицу:

Код: plaintext
1.
2.
3.
4.
5.
дата                 зал1            зал2        зал3          зал4

12/12/16          заказ        заказ        бронь        резерв 
13/12/16          бронь                       отказ         
15/12/16          заказ       заказ         заказ
22/12/16                         бронь       резерв          заказ

так вот, 2 раза ткнув мышью по значению (к примеру "бронь") у меня должна открыться карточка данного заказа.
почему именно такая таблица - потому что так очень наглядно и требование было получить визуально похожую на календарь форму
кто-то может подсказать? или есть иные варианты решения?
...
Рейтинг: 0 / 0
22.12.2016, 13:04
    #39372821
создании формы с источником из перекрестного запроса Access 2010
pims, для начала покажите текст запроса и опишите структуру таблицы, на которой он строится и, видимо, должна открываться 2-я форма.
У вас только 4 зала и по каждому на конкретную дату может быть только одно действие, или не быть?
...
Рейтинг: 0 / 0
22.12.2016, 13:12
    #39372837
pims
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
вот текст запроса:

Код: plaintext
1.
2.
3.
4.
5.
TRANSFORM First(этапы_работы.Этапы_работы) AS [First-Этапы_работы]
SELECT Таблица_заказов.дата_мероприятия
FROM этапы_работы INNER JOIN (зал INNER JOIN Таблица_заказов ON зал.Код = Таблица_заказов.зал_Код) ON этапы_работы.Код = Таблица_заказов.этапы_работы_Код
WHERE (((Таблица_заказов.тема_звонка_Код)=2))
GROUP BY Таблица_заказов.дата_мероприятия
PIVOT зал.Зал;

само открытие формы редактирования уже накидал, но только если в вышеуказанный запрос внести еще одно поле как заголовки строк в виде уникального ID_заказа , но тогда не получается именно группировки по дням но это и понятно, а нужно именно так как сейчас нарисовано в таблице.
...
Рейтинг: 0 / 0
22.12.2016, 13:22
    #39372859
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
pims,

датазал1зал2зал3зал412/12/16заказзаказброньрезерв13/12/16броньотказ15/12/16заказзаказзаказ22/12/16броньрезервзаказ
залов немного -- необязательно применять перекрестный запрос
...
Рейтинг: 0 / 0
22.12.2016, 13:24
    #39372866
pims
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
ПЕНСИОНЕРКА, всего залов 5, я просто не дописал
но я не понял вас, вы просто изобразили более красочно то что я накидал в тексте....

а как же мой вопрос?
...
Рейтинг: 0 / 0
22.12.2016, 13:26
    #39372872
pims
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
Анатолий ( Киев ), извиняюсь не дописал: по каждой дате в каждом зале может быть только одно состояние (действие, как угодно обзовите)
...
Рейтинг: 0 / 0
22.12.2016, 14:14
    #39372966
создании формы с источником из перекрестного запроса Access 2010
Когда вы щелкаете по полю, то можете получить значение даты в этой записи и имя поля (Me.ActiveControl.Name) - название зала.
Если источник открываемой формы - запрос на этих же таблицах, то можно применить фильтр по дате и залу, а также, при необходимости, значению этапа.

Совет - при неизменном кол-ве залов в перекрестном запросе лучше указать фиксированные значения столбцов (есть такое св-во). Это облегчит вам жизнь.
...
Рейтинг: 0 / 0
22.12.2016, 16:30
    #39373119
pims
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
Анатолий ( Киев ), ок, буду пересматривать структуру таблиц
...
Рейтинг: 0 / 0
23.12.2016, 16:42
    #39373950
pims
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
создал 5 заголовков столбцов с названиями залов в перекрестном запросе. Но теперь при отсутствии значения в данном поле в самом запросе просто пустое поле, а если создаешь форму на основе этого запроса (а мне нужна именно форма), то в этом столбце по все высоте появляется надпись "#Имя?" Как сделать чтобы было просто пусто?
...
Рейтинг: 0 / 0
23.12.2016, 16:45
    #39373956
pims
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
вот так получается
...
Рейтинг: 0 / 0
23.12.2016, 17:07
    #39373988
Лапух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
pims,
Указать правильное имя.
...
Рейтинг: 0 / 0
24.12.2016, 09:48
    #39374304
pims
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
Лапух, имя правильное, просто в данный промежуток времени нет данных, если они есть, то все нормально. Как обойти отсутствие данных?
...
Рейтинг: 0 / 0
24.12.2016, 10:36
    #39374311
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
[quote pims]вот так получается
а где текст запроса ?
...
Рейтинг: 0 / 0
24.12.2016, 12:22
    #39374336
pims
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
ПЕНСИОНЕРКА,
текст запроса:

Код: vbnet
1.
2.
3.
4.
5.
TRANSFORM First(этапы_работы.Этапы_работы) AS [First-Этапы_работы]
SELECT Таблица_заказов.дата_мероприятия
FROM этапы_работы INNER JOIN (зал INNER JOIN Таблица_заказов ON зал.Код = Таблица_заказов.зал_Код) ON этапы_работы.Код = Таблица_заказов.этапы_работы_Код
GROUP BY Таблица_заказов.дата_мероприятия
PIVOT зал.Зал In ("1 этаж","2 этаж","Винотека","Библиотека","Весь ресторан");
...
Рейтинг: 0 / 0
24.12.2016, 12:41
    #39374339
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
Видимо в справочнике Зал нет "Библиотеки" или "Винотеки". Хотя на рисунке ошибка на Винотеке, но перекрестный запрос с фиксированым пивотом строит поля в порядке перечисленном в Pivot, а там порядок иной чем на рисунке. Поэтому сомнения чего нет на самом деле.
...
Рейтинг: 0 / 0
24.12.2016, 12:58
    #39374342
pims
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
mds_world,

когда данные по этому столбцу присутствуют, то ошибки нет
...
Рейтинг: 0 / 0
24.12.2016, 13:09
    #39374347
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
Ну попробуйте проверяться на ошибку
Код: sql
1.
TRANSFORM iif(iserror(First(этапы_работы.Этапы_работы)), null, First(этапы_работы.Этапы_работы))
...
Рейтинг: 0 / 0
24.12.2016, 13:31
    #39374353
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
pims,

А если так?
Код: sql
1.
2.
3.
4.
5.
TRANSFORM IIf(зал.Зал Is Null, Null, First(этапы_работы.Этапы_работы) AS [First-Этапы_работы])
SELECT Таблица_заказов.дата_мероприятия
FROM этапы_работы LEFT JOIN (зал INNER JOIN Таблица_заказов ON зал.Код = Таблица_заказов.зал_Код) ON этапы_работы.Код = Таблица_заказов.этапы_работы_Код
GROUP BY Таблица_заказов.дата_мероприятия
PIVOT зал.Зал In ("1 этаж","2 этаж","Винотека","Библиотека","Весь ресторан");
...
Рейтинг: 0 / 0
24.12.2016, 13:46
    #39374355
pims
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
mds_world,

ругается, пишет "не поддерживается выражение объединения JOIN"

__Michelle, тоже ругается "ошибка синтаксиса (пропущен оператор в выражении запроса IIf(зал.Зал Is Null, Null, First(этапы_работы.Этапы_работы) AS [First-Этапы_работы])"
...
Рейтинг: 0 / 0
24.12.2016, 13:53
    #39374357
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
pims,

Простите, скобка не та была.)))
Вот так теперь
Код: sql
1.
2.
3.
4.
5.
TRANSFORM IIf(зал.Зал Is Null, Null, First(этапы_работы.Этапы_работы)) AS [First-Этапы_работы]
SELECT Таблица_заказов.дата_мероприятия
FROM этапы_работы LEFT JOIN (зал INNER JOIN Таблица_заказов ON зал.Код = Таблица_заказов.зал_Код) ON этапы_работы.Код = Таблица_заказов.этапы_работы_Код
GROUP BY Таблица_заказов.дата_мероприятия
PIVOT зал.Зал In ("1 этаж","2 этаж","Винотека","Библиотека","Весь ресторан");
...
Рейтинг: 0 / 0
24.12.2016, 13:57
    #39374358
pims
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
ребята, прошу меня простить, сам дурак, сам нашел свою же ошибку... она совершенно не связана с указанным мною запросом, все работает!
...
Рейтинг: 0 / 0
24.12.2016, 14:05
    #39374360
pims
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
но опять вопрос, вот в этом сообщении чуть выше 20036710 Анатолий (Киев) советовал открывать форму с фильтром по значениям двух полей.
Делаю вот так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Dim Y As Long

If Me.ActiveControl.Name = "1 этаж" Then
Y = 1
ElseIf Me.ActiveControl.Name = "2 этаж" Then
Y = 2
ElseIf Me.ActiveControl.Name = "Библиотека" Then
Y = 3
ElseIf Me.ActiveControl.Name = "Винотека" Then
Y = 4
ElseIf Me.ActiveControl.Name = "Весь ресторан" Then
Y = 5
Else
End If



DoCmd.OpenForm "форма_мероприятие", , "[зал_Код]=" & Y And "[дата_мероприятия]=" & дата_мероприятия


пишет тип мисмач
хотя все значения фильтра верны (высвечиваются при дебаге)
...
Рейтинг: 0 / 0
24.12.2016, 14:13
    #39374361
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
pims,

Совет. Лучше так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Select Case Me.ActiveControl.Name 
 Case "1 этаж"
  Y = 1
 Case "2 этаж"
  Y = 2
 Case "Библиотека"
  Y = 3
 Case "Винотека"
  Y = 4
 Case "Весь ресторан"
  Y = 5
End Select


А все же попробуйте мой запрос - работает или нет, интересно.
...
Рейтинг: 0 / 0
24.12.2016, 14:19
    #39374362
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
pims,

Что касается вопроса, то неверно построено выражение.
Сами посмотрите в Debug.Print, что у Вас получается...)))

Вот как надо:
Код: vbnet
1.
DoCmd.OpenForm "форма_мероприятие", , "[зал_Код]=" & Y & " And [дата_мероприятия]=" & дата_мероприятия
...
Рейтинг: 0 / 0
24.12.2016, 14:19
    #39374363
pims
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создании формы с источником из перекрестного запроса Access 2010
__Michelle,

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


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