Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глюк с TQuery, Почему запрос ничего не возвращает? 
:(
    Опции темы
Serggggg
  Дата 20.1.2004, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 12.12.2003
Где: Донецк, Украина

Репутация: нет
Всего: нет



Очень прошу помочь.
В программе есть возможность выборки за определённое число.
SQL.Text запроса в конечном итоге выглядит так:

select * from t_jrn_pn_reestr where to_date(dcreated,'dd.mm.yyyy')=
to_date('20.01.2004','dd.mm.yyyy') order by npn_num

В SQL Navigator'e все работает. А запрос Delphi (он же TQuery) не возвращает в Grid ничего.
В чем может быть проблема?
Спасибо.

С уважением, Serggggg.
--------------------
C уважением, Serggggg.
PM MAIL ICQ   Вверх
Paradox
Дата 20.1.2004, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



Ты после присваивания query.sql.text вызываешь query.Open или нет ?

Это сообщение отредактировал(а) Paradox - 20.1.2004, 15:07


--------------------
---
PM MAIL WWW   Вверх
Serggggg
Дата 20.1.2004, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 12.12.2003
Где: Донецк, Украина

Репутация: нет
Всего: нет



Я работаю со свойством Active
Cначала присваиваю ему False, потом задаю SQL.Text, а потом Active:=True;
--------------------
C уважением, Serggggg.
PM MAIL ICQ   Вверх
x77
Дата 20.1.2004, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 1
Всего: 22



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

но хотелось бы, конечно, увидеть участок кода полностью.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Serggggg
Дата 20.1.2004, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 12.12.2003
Где: Донецк, Украина

Репутация: нет
Всего: нет



Немного поясню - выборка по дате делается компонентом DateTimePicker - назовём его Date1.
А теперь привожу код, срабатывающий по нажатию кнопки:

JRPNQuery.Active:=False;
JRPNQuery.SQL.Text:='SELECT * FROM T_JRN_PN_REESTR WHERE '
+ 'TO_DATE(DCREATED,' + #39 + 'DD.MM.YYYY' + #39 + ')='
+ 'TO_DATE(' + #39 + DateToStr(Date1.Date) + #39 + ','
+ #39 + 'DD.MM.YYYY' + #39 + ') ORDER BY NPN_NUM';
JRPNQuery.Active:=True;

В итоге при вводе сегодняшнего числа имеем

SELECT * FROM T_JRN_PN_REESTR WHERE TO_DATE(DCREATED,'DD.MM.YYYY')=
TO_DATE('20.01.2004','DD.MM.YYYY') ORDER BY NPN_NUM

#39 - это символ одинарной кавычки, который используется при формировании SQL-строки.
С DataSource проблем нет - при замене TO_Date на To_Char все работает! Проблема лишь в том, что при использовании TO_Char запрос сравнивает не дату, а стринговые переменные и не всегда выдаёт верный результат. Особенно при поиске за период.
--------------------
C уважением, Serggggg.
PM MAIL ICQ   Вверх
x77
Дата 20.1.2004, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 1
Всего: 22



а если сравнить DCREATED с параметром напрямую? без всяких приведений?


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Serggggg
Дата 20.1.2004, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 12.12.2003
Где: Донецк, Украина

Репутация: нет
Всего: нет



В смысле, если сделать типа ниже описанного?

'... WHERE DREATED=' + #39 + DateToStr(Date1.Date) + #39

Пробовал! Тоже ничего. В самой БД (Oracle) вроде бы ничего не менялось! В компе формат даты настроен на dd.mm.yyyy.

--------------------
C уважением, Serggggg.
PM MAIL ICQ   Вверх
x77
Дата 20.1.2004, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 1
Всего: 22



попробуй объявить параметр (...WHERE DCREATED = biggrin.gif) и присваивать его через ParamByName ('D').AsDateTime := Date1.Date.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Serggggg
Дата 20.1.2004, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 12.12.2003
Где: Донецк, Украина

Репутация: нет
Всего: нет



Ответ найден!
Оказывается, для каждой сессии дефолтовый формат даты не срабатывает (который прописан в конфиге Oracle). Поэтому после коннекта следовало выполнить всего лишь строку запроса
ALTER SESSION SET NLS_DATE_FORMAT='DD.MM.YYYY'
После ExecSQL всё заработало - теперь данные выбираются при помощи условия, в котором используется To_date!
Может я даун, но никогда бы не подумал.
Спасибо.

С уважением, Serggggg
--------------------
C уважением, Serggggg.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1368 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.