powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запись запроса с содержанием Transform в отдельную таблицу
25 сообщений из 29, страница 1 из 2
Запись запроса с содержанием Transform в отдельную таблицу
    #39933557
Стартер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, написал запрос для транспонирования таблицы с полями (Вопрос, Баланс, Деятельность, Дата)
Код: sql
1.
2.
3.
4.
5.
Transform first(ТестТаблица.Баланс)
Select ТестТаблица.Дата
From ТестТаблица
Group by ТестТаблица.Дата
Pivot ТестТаблица.Вопрос 


Все работает отлично, но при попытке вставить этот кусок в модуль VBA этот модуль при вызове этого куска кода через CurrentDb.Execute крашится. Пытался отладить, понял, что нужно выделить результат запроса в отдельную таблицу, попробовал так:
Код: sql
1.
2.
3.
4.
5.
6.
Transform first(ТестТаблица.Баланс)
Select ТестТаблица.Дата
Into New(Некая новая таблица)
From ТестТаблица
Group by ТестТаблица.Дата
Pivot ТестТаблица.Вопрос 


Зарезервированная ошибка (-3002)
Вопрос итоговый таков: каким образом мне записать результат запроса Transform в новую таблицу?
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933635
1. Перекрестный запрос, это разновидность запроса на выборку. На нем можно открыть Recordset (CurrentDb.OpenRecordset), а CurrentDb.Execute применяется для запросов на действие (Update, Delete и т.п.)
2. В Аксе в одном SQL выражении Transform и Into не уживаются (возможно и уживутся если запрос с Transform использовать как вложенный в запросе на создание). Запрос на создание таблицы можно создать на основе сохраненного перекрестного.

А какая ваша цель?
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933637
Стартер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий,

Оба предложенных Вами варианта мне подходят, мне необходимо получить итоговую после трансформации отдельную от запроса таблицу. Если есть возможность, буду благодарен коду каким образом возможно вставить transform в запросе на создание таблицы. Важный момент в том, что я не знаю всех полей после трансформации, поэтому руками перебрать в insert into(1,2,3...), можно сказать, не представляется возможным. Количество полей после применения transform будет больше 50.
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933642
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стартер,
перекрестный запрос можно экспортировать в ексель
а ексель таблицу прилинковать к базе и использовать в запросе
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933643
Стартер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий,

Например, если делать через CurrentDb:
Код: vbnet
1.
2.
3.
4.
5.
6.
 trans = "Transform first(ТестТаблица.Баланс)
Select ТестТаблица.Дата
From ТестТаблица
Group by ТестТаблица.Дата
Pivot ТестТаблица.Вопрос "
CurrentDb.Execute("insert into NewrTestTab select * from ... ")


А вместо многоточия что писать? не trans же?
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933645
Стартер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,
Этот перекрестный запрос - все лишь часть проекта на VBA. Мне эти данные нужны в дальнейшем для обработки, и поэтому хотелось бы не вставлять костыль
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933654
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стартер,

но тогда вы не можете гарантированно знать имена полей, а значит могут вылетать ошибки при выполнении запросов/форм/отчетов

если же вам надо сохранить этот перекрестный запрос в ВОРД-отчет, то может это следует делать программно
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933656
Стартер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Этот код, если выполнять в запросах в Аксе работает отлично, напомню
И еще вдобавок проблемка:
Пытаюсь записать в ResordSet
Код: vbnet
1.
2.
 trans = "Transform first(ТестТаблица.Баланс) Select ТестТаблица.Дата From ТестТаблица Group by ТестТаблица.Дата Pivot ТестТаблица.Вопрос "
rs.Open trans, CurrentProject.Connection, adOpenKeySet, adLockOptimistic 


Ошибка Method 'Open of object' _RecordSet' failed
Руинится именно на этом момента, во всех других местах использования РекордСета все было чётко
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933657
Стартер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,
Нет, мне не для отчета
У меня большая база данных, по которой формируется выборка. Этот фрагмент кода с Transform'ом мне поможет в дальнейшем в структуризации информации. По факту, это к вопросу не относится, мне просто нужно получить итоговую таблицу с применением этой трансформации. Есть ли есть какой-то другой способ как я могу перевести из строчной таблицы в стобовидную - мне это необходимо как воздух
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933658
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стартер,

возможно подойдет такой вариант, если ТестТаблица.Вопрос имеет значение до 250

создать запрос р250

Код: sql
1.
2.
3.
4.
5.
Transform first(ТестТаблица.Баланс)
Select ТестТаблица.Дата
From ТестТаблица
Group by ТестТаблица.Дата
Pivot ТестТаблица.Вопрос in (1,2,3.........,250) 



запрос 2 -запись в таблицу(дата,1,2,3,4,........250)

insert into NewrTestTab select * from p250
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933660
Стартер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,
Подскажи такой момент, этот SQL-запрос у меня крутится в VBA модуле, вопрос следующий - вот этот первый запрос должен же выполниться, как мне его запустить? Через РекордСет?
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933662
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стартер,

первый запускать не надо - второй его сам запустит
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933666
Стартер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

то есть псевдокод такой:
Код: vbnet
1.
2.
 запрос1 = "трансформ..."
insert into NewTab select * from запрос1

?
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933670
Попробуйте такой запрос на создание таблицы:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT Q.* INTO NewrTestTab FROM
(Transform first(ТестТаблица.Баланс)
Select ТестТаблица.Дата
From ТестТаблица
Group by ТестТаблица.Дата
Pivot ТестТаблица.Вопрос) As Q


В VBA выполняется методом CurrentDb.Execute
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933680
Стартер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий,

Спасибо, завтра на работе попробую, надеюсь получится. Спасибо за отклик
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933868
Стартер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий,

Не вышло, компилятор ругается на ошибку в построении FROM
Ругается именно на содержание Transform в выражении внутри FROM
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933871
Фотография 4d_monster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стартер,

Вам ПЕНСИОНЕРКА же написала .

Нужно создать и сохранить перекрёстный запрос. А потом использовать его как источник для создания таблицы.

Код: vbnet
1.
2.
3.
4.
5.
qdQ = currentdb.CreateQueryDef ("Transform first(ТестТаблица.Баланс) Select ТестТаблица.Дата From ТестТаблица Group by ТестТаблица.Дата Pivot ТестТаблица.Вопрос;", "p250")
currentdb.QueryDefs.Refresh
currentdb.Execute("insert into NewrTestTab select * from p250;")
currentdb.QueryDefs.Delete "p250"
currentdb.QueryDefs.Refresh
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933882
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4d_monster
Вам ПЕНСИОНЕРКА же написала .

Нужно создать и сохранить перекрёстный запрос. А потом использовать его как источник для создания таблицы

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

Код: sql
1.
2.
3.
select ТестТаблица.Дата, ТестТаблица.Вопрос, first(ТестТаблица.Баланс) into rab1 
from ТестТаблица
group by ТестТаблица.Дата,ТестТаблица.Вопрос



- и уже rab1 обрабатывать позже
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933884
Фотография 4d_monster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА,

Неизвестность имён полей в Access не проблема, он в этом вопросе лучше остальных СУБД.
Задача скорей всего - красивые отчёты с минимумом усилий.
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933886
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА
- при перекрестном запросе неизвестны имена полей
не всегда, к тому же их можно перечислить в разделе Pivot.

ПЕНСИОНЕРКА
- к тому же не понимаю , в какой задаче это может потребоваться
например формирование формы/отчёта табель рабочего времени - формирование из "длинной" таблицы в "широкую"
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933888
Стартер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4d_monster,
Как раз к неизвестности имен полей
Ошибка вылетела с описанием "Инструкция INSERT INTO содержит неизвестное имя поля... Убедитесь, что имя указано правильно"
Я так понимаю, что он не может найти в добавляемой таблице необходимое поле, а как следствие - все, так как в этой новосозданной таблице ничего нет.
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933891
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стартер
Все работает отлично, но при попытке вставить этот кусок в модуль VBA этот модуль при вызове этого куска кода через CurrentDb.Execute крашится.
Зачем это писать в VBA?
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933894
Стартер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

Результат этого rab1 и есть ТестТаблица, я уже ее сформировал и теперь просто хочу повернуть горизонтально. Что дальше-то? Каким образом мне обрабатывать "позже"? Transform применить - задача возвращается к прежней - как записать результат в таблицу?
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933895
Стартер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

Потому что это не единоразовая задача типа "посмотрел - пошел дальше". Мне с этой горизонтальной таблицей нужно работать дальше в vba. Это просто часть модуля.
...
Рейтинг: 0 / 0
Запись запроса с содержанием Transform в отдельную таблицу
    #39933896
Фотография 4d_monster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стартер,

Если вы не подготовили целевую таблицу, тогда не наполняйте её, а создавайте запросом:
"select * into NewrTestTab from p250;"
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запись запроса с содержанием Transform в отдельную таблицу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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