Странная ошибка.

Обсуждение возникших проблем, предложений и ошибок MyDAC компонентов
Ответить
DYUMON
Сообщения: 34
Зарегистрирован: Чт 05 июл 2012 05:21
Откуда: Новосибирск
Контактная информация:

Странная ошибка.

Сообщение DYUMON » Ср 29 мар 2017 14:41

День добрый.
Использую Delphi 10.1 и MyDac 8.7.27.
В myquery находится запрос

Код: Выделить всё

SELECT GROUP_CONCAT(DISTINCT CONCAT(' sum( if(oper_date = "',oper_date,'", oper_kolvo,null)) as  "', DATE_FORMAT( oper_date,'%d.%m.%Y' ),'"'))
 INTO @sql
FROM subprocess WHERE det_id =:id;
-- SELECT @sql
set @sql = CONCAT('SELECT oper_name as `Операция`,',
@sql,
', ss.klv  , (bb.kolvo_det - ss.klv) AS dolg   FROM subprocess ',
' left join ( SELECT ss.oper_name AS oper_name1, SUM(ss.oper_kolvo) AS klv FROM subprocess ss GROUP BY ss.oper_name) as ss ON ss.oper_name1 = subprocess.oper_name',
' LEFT JOIN (SELECT sid , kolvo_det   FROM submain  ) AS bb  ON bb.sid = det_id where det_id ='+:id+' group by oper_name ');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
запускаю программу, нажимаю его выполнить , получаю ошибку что столбец bb.kolvo_det не найден.
om_error.png
om_error.png (12.76 КБ) 17669 просмотров
Но если в design time делаю myquery активным то все срабатывает нормально и данные отображаются.
Читал по форуму что была такая ошибка и вроде как её давно поправили. Подскажите что можно сделать?

ViktorV
Devart Team
Сообщения: 199
Зарегистрирован: Чт 31 июл 2014 09:52

Re: Странная ошибка.

Сообщение ViktorV » Ср 29 мар 2017 15:21

Для того, чтобы мы смогли дать вам детальный ответ, пожалуйста, составьте и вышлите нам, с помощью контактной формы https://www.devart.com/company/contactform.html, небольшой пример, демонстрирующий указанное вами поведение, включающий скрипты для создания и заполнения объектов БД.

DYUMON
Сообщения: 34
Зарегистрирован: Чт 05 июл 2012 05:21
Откуда: Новосибирск
Контактная информация:

Re: Странная ошибка.

Сообщение DYUMON » Чт 30 мар 2017 12:36

создал тестовый пример.
Ошибка возникает если я в запросе использую параметры. если чистый sql , то все нормально.
mydac_error.zip
(57.46 КБ) 1082 скачивания

ViktorV
Devart Team
Сообщения: 199
Зарегистрирован: Чт 31 июл 2014 09:52

Re: Странная ошибка.

Сообщение ViktorV » Чт 30 мар 2017 14:02

Для решения задачи, пожалуйста, используйте следующий SQL запрос:

Код: Выделить всё

set @id = :id;
SELECT GROUP_CONCAT(DISTINCT CONCAT(' sum( if(oper_date = "',oper_date,'", oper_kolvo,null)) as  "', DATE_FORMAT( oper_date,'%d.%m.%Y' ),'"'))
 INTO @sql
FROM subprocess WHERE det_id = @id;
-- SELECT @sql;
set @sql = CONCAT('SELECT oper_name as `Операция`,',
@sql,
', ss.klv AS `Изготовлено` , (bb.kolvo_det - ss.klv) AS `Долг`    FROM subprocess ',
' left join ( SELECT ss.oper_name AS oper_name1, SUM(ss.oper_kolvo) AS klv FROM subprocess ss GROUP BY ss.oper_name) as ss ON ss.oper_name1 = subprocess.oper_name',
' LEFT JOIN (SELECT sid , kolvo_det   FROM submain  ) AS bb  ON bb.sid = det_id where det_id = @id group by oper_name order by oper_name');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Обратите внимание, данный вопрос не относится к MyDAC функциональности, а относится к MySQL функциональности. В дальнейшем, для получения ответа на подобные вопросы, пожалуйста, обратитесь к документации MySQL сервера или задайте соответсвующий вопрос на профильных форумах.

DYUMON
Сообщения: 34
Зарегистрирован: Чт 05 июл 2012 05:21
Откуда: Новосибирск
Контактная информация:

Re: Странная ошибка.

Сообщение DYUMON » Чт 30 мар 2017 15:33

О как . Спасибо огромное. Не сталкивался с таким раньше.

ViktorV
Devart Team
Сообщения: 199
Зарегистрирован: Чт 31 июл 2014 09:52

Re: Странная ошибка.

Сообщение ViktorV » Чт 30 мар 2017 15:38

Спасибо за интерес к нашим продуктам.
Обращайтесь к нам, если у Вас возникнут вопросы по MyDAC.

Ответить