Ошибка при получении данных из postgresql

1. user1671936 1 09.07.24 14:37 Сейчас в теме
Здравствуйте, пытаюсь получить данные из базы postgresql. Вылезает ошибка
Ошибка: по причине: Произошла исключительная ситуация (ADODB.Connection): Операция не допускается, если объект закрыт.
. Нашел тут на форуме тему, но в моем случае ошибка не в строке подключения (пробовал небольшой запрос отправлять - он работает корректно). Проверял свой запрос на питоне - работает, данные приходят. Думал ошибка из-за пробела в названиях получаемых полей, убрал пробелы - не взлетело (select my_db.name_company "Название фирмы" заменил на "НазваниеФирмы", как пример). Подскажите, пожалуйста, что еще можно попробовать сделать?
По теме из базы знаний
Найденные решения
4. user1671936 1 09.07.24 16:15 Сейчас в теме
(3) С with такая же ошибка вышла
(1)
Ошибка: по причине: Произошла исключительная ситуация (ADODB.Connection): Операция не допускается, если объект закрыт.
. Добавил запрос в соединение к основному запросу, заработало.
|left join (sel ect 
    |    to_number(split_part(rt.rp_id, ',', 2), 'L9G999g999.99') ""rp_id"",
    |    rt.id ""rt_id"",
    |    rt.partner_id ""rt_partner_id"",
    |    to_number(split_part(rt.value, ',', 2), 'L9G999g999.99') ""b_id"" 
    |from 
    |    rt_table rt
    |where
    |    rt.name = 'Списания ДС'
    |group by
    |    to_number(split_part(rt.rp_id, ',', 2), 'L9G999g999.99'),
    |    rt.id,
    |    rt.partner_id,
    |    to_number(split_part(rt.value, ',', 2), 'L9G999g999.99')) tempTable
|on .........
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. user1671936 1 09.07.24 16:15 Сейчас в теме
(3) С with такая же ошибка вышла
(1)
Ошибка: по причине: Произошла исключительная ситуация (ADODB.Connection): Операция не допускается, если объект закрыт.
. Добавил запрос в соединение к основному запросу, заработало.
|left join (sel ect 
    |    to_number(split_part(rt.rp_id, ',', 2), 'L9G999g999.99') ""rp_id"",
    |    rt.id ""rt_id"",
    |    rt.partner_id ""rt_partner_id"",
    |    to_number(split_part(rt.value, ',', 2), 'L9G999g999.99') ""b_id"" 
    |from 
    |    rt_table rt
    |where
    |    rt.name = 'Списания ДС'
    |group by
    |    to_number(split_part(rt.rp_id, ',', 2), 'L9G999g999.99'),
    |    rt.id,
    |    rt.partner_id,
    |    to_number(split_part(rt.value, ',', 2), 'L9G999g999.99')) tempTable
|on .........
Показать
2. user1671936 1 09.07.24 14:55 Сейчас в теме
Нашел в чем проблема. У меня в начале запроса создается временная таблица, из-за нее приходит 0 в Fields.Count. Возможно ли это обойти(может неправильно написал текст запроса)? Или только переносить временную таблицу в соединения в запросе?
НаборЗаписей = Новый ComObject("ADODB.RecordSet");
		Команда = Новый COMОбъект("ADODB.Command");
		Попытка    
			Команда.ActiveConnection = Connection;    
			Команда.CommandText = ПолучитьТекстЗапроса();    
			НаборЗаписей = Команда.Execute();    
		Исключение    
			Сообщить("Нет данных."); 
			Сообщить(ОписаниеОшибки());
			Возврат;
		КонецПопытки;
		
		ТаблицаДанных = Новый ТаблицаЗначений;
		
		Для НомерСтолбца = 0 По НаборЗаписей.Fields.Count - 1 Цикл                 
			ИмяСтолбца = НаборЗаписей.Fields.Item(НомерСтолбца).Name;                
			ТаблицаДанных .Колонки.Добавить(ИмяСтолбца);
		КонецЦикла;
Показать
Текст запроса прикладываю
"Create temporary table temp_Table as(sel ect 
	|	to_number(split_part(rt.rp_id, ',', 2), 'L9G999g999.99') ""rp_id"",
	|	rt.id ""rt_id"",
	|	rt.partner_id ""rt_partner_id"",
	|	to_number(split_part(rt.value, ',', 2), 'L9G999g999.99') ""b_id"" 
	|from 
	|	rt_table rt
	|where
	|	rt.name = 'Списания ДС'
	|group by
	|	to_number(split_part(rt.rp_id, ',', 2), 'L9G999g999.99'),
	|	rt.id,
	|	rt.partner_id,
	|	to_number(split_part(rt.value, ',', 2), 'L9G999g999.99'));
	|select * fr om temp_Table";
Показать
3. Said-We 09.07.24 15:54 Сейчас в теме
(2) А обязательно прям "temporary table" создавать?
Может простым with обойтись?

https://onecompiler.com/postgresql/42jn5njjw
Прикрепленные файлы:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот