powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / SQL - Перекрёстные запросы с выводом по фикс.столбцам и затем их "UNION"
7 сообщений из 7, страница 1 из 1
SQL - Перекрёстные запросы с выводом по фикс.столбцам и затем их "UNION"
    #39541497
Se16_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Есть таблица, в которую вводятся временные показатели в 10 полей. Каждое поле - это какая-то активность на производственной линии. Например в поле "Работа линии" вводятся 2 записи "00:00" и "02:40", затем в поле "Зачистка линии" вводятся показатели "02:40" и "03:10" и т.д. Таким образом составляется Карта работы линии по смене.
Для визуализации транспонирую таблицу со значениями по смене с разбивкой по фиксированным столбцам. Составляю 10 перекрёстных запросов (в таблице 10 полей с введёнными данными), затем с помошью "Union" свожу их вместе и пускаю в качестве рекордсета на форму. На форме (в формате "Datasheet"), с помощью Условного форматирования, подсвечиваю ячейки, в которых имеются данные. Разбивка интервала для фиксированных столбцов идёт по 10 мин.

Запрос 1 (QryVisualRobLin_Par1_Zmina1):
TRANSFORM Max(TblKartkyVvedZnach.Par1Txt) AS MaxOfPar1Txt
SELECT TblKartkyKatalogZmist.Parametr_1_NazvaTxt
FROM TblKartkyKatalogZmist LEFT JOIN TblKartkyVvedZnach ON TblKartkyKatalogZmist.ID_KartkyKatalogZmist = TblKartkyVvedZnach.FK_KartkyVvedZnach
WHERE (((TblKartkyVvedZnach.FK_KartkyVvedZnach)=1) AND ((TblKartkyVvedZnach.FK_DataWork)=[Forms]![FrmZagalna]![Frm_Glavna].[Form]![ID_DataWork]) AND ((TblKartkyVvedZnach.FK_Kartka)=[Forms]![FrmZagalna]![FrmKartkyKatalogZmistGolovna].[Form]![PerelikLng]))
GROUP BY TblKartkyKatalogZmist.Parametr_1_NazvaTxt
PIVOT TblKartkyVvedZnach.Par1Txt In ('00:00','00:10','00:20','00:30','00:40','00:50','01:00','01:10','01:20','01:30','01:40','01:50','02:00','02:10','02:20','02:30','02:40','02:50','03:00','03:10','03:20','03:30','03:40','03:50','04:00','04:10','04:20','04:30','04:40','04:50','05:00','05:10','05:20','05:30','05:40','05:50','06:00','06:10','06:20','06:30','06:40','06:50','07:00','07:10','07:20','07:30','07:40','07:50','08:00');

Запрос 2 (QryVisualRobLin_Par2_Zmina1):
TRANSFORM Max(TblKartkyVvedZnach.Par2Txt) AS MaxOfPar2Txt
SELECT TblKartkyKatalogZmist.Parametr_2_NazvaTxt
FROM TblKartkyKatalogZmist LEFT JOIN TblKartkyVvedZnach ON TblKartkyKatalogZmist.ID_KartkyKatalogZmist = TblKartkyVvedZnach.FK_KartkyVvedZnach
WHERE (((TblKartkyVvedZnach.FK_KartkyVvedZnach)=1) AND ((TblKartkyVvedZnach.FK_DataWork)=[Forms]![FrmZagalna]![Frm_Glavna].[Form]![ID_DataWork]) AND ((TblKartkyVvedZnach.FK_Kartka)=[Forms]![FrmZagalna]![FrmKartkyKatalogZmistGolovna].[Form]![PerelikLng]))
GROUP BY TblKartkyKatalogZmist.Parametr_2_NazvaTxt
PIVOT TblKartkyVvedZnach.Par2Txt In ('00:00','00:10','00:20','00:30','00:40','00:50','01:00','01:10','01:20','01:30','01:40','01:50','02:00','02:10','02:20','02:30','02:40','02:50','03:00','03:10','03:20','03:30','03:40','03:50','04:00','04:10','04:20','04:30','04:40','04:50','05:00','05:10','05:20','05:30','05:40','05:50','06:00','06:10','06:20','06:30','06:40','06:50','07:00','07:10','07:20','07:30','07:40','07:50','08:00');

... и так 10 запросов.
Затем UNION
select * from QryVisualRobLin_Par1_Zmina1
UNION ALL
select * from QryVisualRobLin_Par2_Zmina1
UNION ALL
select * from QryVisualRobLin_Par3_Zmina1
UNION ALL
select * from QryVisualRobLin_Par4_Zmina1
UNION ALL
select * from QryVisualRobLin_Par5_Zmina1
UNION ALL
select * from QryVisualRobLin_Par6_Zmina1
UNION ALL
select * from QryVisualRobLin_Par7_Zmina1
UNION ALL
select * from QryVisualRobLin_Par8_Zmina1
UNION ALL
select * from QryVisualRobLin_Par9_Zmina1
UNION ALL select * from QryVisualRobLin_Par10_Zmina1;

Уважаемые форумчане,
1) Как можно скрыть те столбцы, где нет ниодного значения?
2) Можно ли введённые значения расположить по фиксированным столбцам в случае, если точно не соответствует столбцу? Например "01:25" надо расположить в столбце "01:30", т.к. разбивка идёт с интервалом в 10 минут

Заранее благодарен!!!
...
Рейтинг: 0 / 0
SQL - Перекрёстные запросы с выводом по фикс.столбцам и затем их "UNION"
    #39541565
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Se16_Vlad... и так 10 запросов
И чем они отличаются
...
Рейтинг: 0 / 0
SQL - Перекрёстные запросы с выводом по фикс.столбцам и затем их "UNION"
    #39541577
Se16_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

Разные столбцы транспонирую в строки: Par1Txt; Par2Txt; ... Par10Txt.
Запрос 1 - Par1Txt
Запрос 2 - Par2Txt
...
Запрос 10 - Par10Txt
...
И затем UNION ALL эти запросы свожу вместе
...
Рейтинг: 0 / 0
SQL - Перекрёстные запросы с выводом по фикс.столбцам и затем их "UNION"
    #39541732
Se16_Vlad2) Можно ли введённые значения расположить по фиксированным столбцам в случае, если точно не соответствует столбцу? Например "01:25" надо расположить в столбце "01:30", т.к. разбивка идёт с интервалом в 10 минут
Надо PIVOT делать не по полю, а по выражению, приводящему к правильному округлению.
Например для "07:41", "07:50" и "07:51" (часы и минуты можно получить из строки с помощью Left и Right):
Код: vbnet
1.
2.
3.
4.
5.
6.
?Format(TimeSerial("07",Clng(Clng("41")/10+0.45)*10,0),"hh:mm")
07:50
?Format(TimeSerial("07",Clng(Clng("50")/10+0.45)*10,0),"hh:mm")
07:50
?Format(TimeSerial("07",Clng(Clng("51")/10+0.45)*10,0),"hh:mm")
08:00



Se16_Vlad 1) Как можно скрыть те столбцы, где нет ниодного значения?
Если результат выводится в табличной форме, то можно пройтись по записям в RecordsetClone, проанализировать поля, а затем скрыть/показать столбцы.
...
Рейтинг: 0 / 0
SQL - Перекрёстные запросы с выводом по фикс.столбцам и затем их "UNION"
    #39541816
Se16_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На стадии формирования запросов, до передачи в табличную форму рекордсета, никак нельзя скрыть поля, где все значения "Null"?
...
Рейтинг: 0 / 0
SQL - Перекрёстные запросы с выводом по фикс.столбцам и затем их "UNION"
    #39541886
Se16_VladНа стадии формирования запросов, до передачи в табличную форму рекордсета, никак нельзя скрыть поля, где все значения "Null"? Ну, если у вас UNION запрос сохраненный, то можно открыть Recordset на запросе, возвращающем из него MAX для каждого поля - пройтись по коллекции Fields и составить новый SELECT, перечислив в нем только поля, в которых не Null, а затем вставить его в источник формы.
Но в форме есть все поля и к ним привязаны поля источника, которых в нем может и не быть.
Это еще дополнительная возня. Лучше уж вываливать все это в Ёксель и там анализировать.
...
Рейтинг: 0 / 0
SQL - Перекрёстные запросы с выводом по фикс.столбцам и затем их "UNION"
    #39541898
Se16_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ),

... мне нужно это делать именно в ACCESS. Пользователь перемещается по записям главной формы (там, где указаны Линия, Дата, Смена, ... и т.д.), а на подчинённой табличной форме (к которой и делаются перекрёстные запросы и затем UNION) должна показываться именно эта визуализация работы линии. Если показывать все 49 полей временного интервала (интервал - 10 мин.), то конечно, без скролинга пользователя по подчинённой форме не обойтись, а это очень неудобно. Если же скрывать поля, которые не имеют значений, то получается значительно удобоваримее.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / SQL - Перекрёстные запросы с выводом по фикс.столбцам и затем их "UNION"
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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