Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2012, 11:22   #1
Leximus
Пользователь
 
Регистрация: 18.09.2010
Сообщений: 85
По умолчанию По разному выполняется запрос из разных мест!

Есть некоторый запрос, основная часть в нём это выборка. Запрос состоит из выборки и вставки.

Запрос выполняется из Zeos Query.

Вот код

Код:
zqMySQL.SQL.Clear;
zqMySQL.SQL.Append('');
zqMySQL.SQL.Append('insert into report_prd_price (');
zqMySQL.SQL.Append('report_prd_price.pos_id,');
zqMySQL.SQL.Append('report_prd_price.prd_id,');
zqMySQL.SQL.Append('report_prd_price.prd_code,');
zqMySQL.SQL.Append('report_prd_price.is_order,');
zqMySQL.SQL.Append('report_prd_price.order_day,');
zqMySQL.SQL.Append('report_prd_price.pricelist_id,');
zqMySQL.SQL.Append('report_prd_price.price_prov)');
zqMySQL.SQL.Append('select');
zqMySQL.SQL.Append('price_raw.pos_id,');
zqMySQL.SQL.Append('producer_names.prd_id,');
zqMySQL.SQL.Append('price_raw.`code`,');
zqMySQL.SQL.Append('IF(price_raw.det_exist=''заказ'',''Y'',''N''),');
zqMySQL.SQL.Append('IFNULL(providers_prices.delivery_days,0) + IFNULL(price_raw.term,0),');
zqMySQL.SQL.Append('price_raw.pricelist_id,');
zqMySQL.SQL.Append('price_raw.price_prov');
zqMySQL.SQL.Append('from price_raw');
zqMySQL.SQL.Append('left join producer_names on producer_names.`name` = price_raw.prd_name');
zqMySQL.SQL.Append('left join providers_prices on providers_prices.pricelist_id = price_raw.pricelist_id');
zqMySQL.SQL.Append('where det_exist = ''заказ'' limit 0,10');
zqMySQL.SQL.SaveToFile('c:\test.sql');
zqMySQL.ExecSQL;
Смысл в следующем... Почемуто плохо срабатывает условие запроса
zqMySQL.SQL.Append('where det_exist = ''заказ'' limit 0,10');

Если убрать это, то также не выполняется следующая строка запроса
zqMySQL.SQL.Append('IF(price_raw.de t_exist=''заказ'',''Y'',''N''),');

Там строк таких не мало, я бы сказал очень много... И если выполнить через отдельное приложение запрос который сохраняется в test.sql, то он выполниться прекрастно, без всяких проблем и покажет правильный результат. Тут почемуто не правильно выполняется обработка параметров. Кто то знаеть почему? Как это исправить?
Конечно теоритически можно через параметр, сейчас кстати проверю, но правильно ли из-за одного НЕПЕРЕМЕННОГО слова параметр включать...
Leximus вне форума Ответить с цитированием
Старый 16.08.2012, 11:31   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Почемуто плохо срабатывает условие запроса
Интересно, какой смысл вкладывется в фразу "плохо срабатывает"? Не лучше ли вместо where det_exist писать where price_raw.det_exist? И не мешало бы IF заменить на IFF
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.08.2012, 11:31   #3
Leximus
Пользователь
 
Регистрация: 18.09.2010
Сообщений: 85
По умолчанию

Забыл сказать Delphi 2010
Leximus вне форума Ответить с цитированием
Старый 16.08.2012, 11:38   #4
Leximus
Пользователь
 
Регистрация: 18.09.2010
Сообщений: 85
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Интересно, какой смысл вкладывется в фразу "плохо срабатывает"? Не лучше ли вместо where det_exist писать where price_raw.det_exist? И не мешало бы IF заменить на IFF
Забыл сказать что это MySQL 5

А что такое IFF ? У меня сразу на это ошибку выдало, мол не знает такую функцию...


where price_raw.det_exist - От такого написания ничего не изменится, я вообще его добавил так как не срабатывает IF, чтобы протестировать.
Но удивительное то, что запуская сохранённый запрос в другом месте, например через сервер, то работает нормально...
Leximus вне форума Ответить с цитированием
Старый 16.08.2012, 11:45   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
И не мешало бы IF заменить на IFF
Пропустили. Перемкнуло
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.08.2012, 12:01   #6
Leximus
Пользователь
 
Регистрация: 18.09.2010
Сообщений: 85
По умолчанию

Вопрос решён, дело было в кодировке!
Leximus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сессия работает по разному в разных ОС dr.Chas PHP 4 04.08.2011 12:46
На разных компьютерах по разному считает jmaz Microsoft Office Excel 1 19.01.2010 15:18
В разных excel по разному располагают на странице Алексей11111 Microsoft Office Excel 7 25.11.2009 14:29
Сайт по разному отображается на разных компьютерах Abramovich HTML и CSS 4 05.01.2009 16:30
По-разному печатается на разных компьютерах igr БД в Delphi 6 05.01.2009 16:19