Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка в SQL запросе?! [D5, IB6.x, dBase, FoxPro]


Страницы:   1 2 3 4

Sava ©   (2002-02-28 10:52:00) 

Уважаемы мастера, помогите всю голову разбил уже!
В кратце описываю что у меня есть:
Есть база (dDase), я пишу запрос чтоб получить записи за определенный период, период задается с помощью компонентов RxLib, а именно DateEdit, происходит следующая вещь, когда в результате запроса есть хоть одна запись, все замечательно, но вот когда результат пустой, т.е. условию не удовлетворяет ни одна запись вылетает ошибка, примерно вот такая: Translate Error. Value out of bounds.
Запрос примерно такой:

Select data, sum(kolvo) from prihod
where data between "22.02.2002" and "25.02.2002"
group by data

у меня два подозрения но что делать незнаю. Первое передаю дату как текс, хотя поле Data имеет тип "дата", и второе подозрение связанное с group by. Подскажите что делать????
Я SQL недавно осваивать начал, может я что не знаю?
Заранее благодарен!


Sava   (2002-02-28 12:20:00) [61]

>Johnmen
Я что-то себе это не представляю, как через параметры отобрать даты, а потом по ним еще и сгруперовать?
Если не трудно подскажи?


Johnmen   (2002-02-28 12:16:00) [62]

даты через параметры


Sava   (2002-02-28 12:01:00) [63]

Open тоже не помог, но я кажится нашел проблемму, то она породила вторую проблемму, еслия не отбираю дату, т.е. запрос такого вида:

Select mest, sum(kolvo) from prihod
where data between "22.02.2002" and "25.02.2002"
group by mest

Все работает как только мечьтать можно, и если ничего не выбрано без ошибок показывает и когда что-то выбрано тоже без ошибок показывает.
Но мне дату тоже надо выбрать вот в чем беда и как это организовать?


iva   (2002-02-28 11:52:00) [64]

Тогда еще вариант - ExecSQL замени на Open


Johnmen   (2002-02-28 11:51:00) [65]

Query.Open вместо Query.ExecSQL


Sava   (2002-02-28 11:50:00) [66]

>iva
никаких обработчикой нигде не стоит, даже еще в нормальный вид не оформлено, не до этого пока, просто на форму набросано DBGrid, Query, DataSourse и все... Единственное что програмно передается это сам запрос, его вызов, больше никаких обраотчиков нету, обработчики только для самой формы OnClose и все. Я тут еще поэксперементировал, если родной DBGrid, то ошибка выдается один раз ты ее Ок и все, попробовал DBGridEh ошибка вообще не уберается, ее Ок тык а она опять тут как тут. И где предчину искать????


iva   (2002-02-28 11:42:00) [67]

Возможно в DBGrid стоит какая-то обработка при прорисовке (например на DrawColumnCell)


Sava   (2002-02-28 11:39:00) [68]

>Val
Результат запроса выводится только в DBGrid и больше ничего, щас попробую в этом направлении поискать. Запрос который выдавал пустое значение уже встречался, но такого не было, а тут...


Sava   (2002-02-28 11:35:00) [69]

>Shirson
Попробовал, пустой запрос выдет, уже хорошо, попутно всыдает странную ошибку Operation not applicable, щас с ней буду разбираться.

>Val
Попробовал через параметры, не помогло та же ошибка.

>iva
Вполне возможно что и не учитываю, а как это учесть?
Да дейстаительно запрос проходит без всяких броблем ExecSQL замечательно срабатывает, а вот что дальше происходит трудно сказать:( И как мне с проблеммой бороться?


Val   (2002-02-28 11:23:00) [70]

>Shirson © (28.02.02 11:13)
В Local SQL это неважно.
скорее прав iva, возможно вы пытаетесь затем присвоить результат запроса чему-либо не проверяя, вернул ли он что-нибудь.


Shirson   (2002-02-28 11:13:00) [71]

Можно вопрос, а разве SQL подразумевает выделение строк двойными кавычками? Я всегда делал одинарными. Попробуй так:


sql.Append("where data between "+quotedstr(dateedit1.text)+" and "+ quotedstr(dateedit2.text));


iva   (2002-02-28 11:04:00) [72]

А возможно ли такое, что ошибка возникает не во время выполнения запроса, а после. Может Вы не учитываете, что запрос вернул нулевое кол-во записей.


Sava   (2002-02-28 10:58:00) [73]

Нет дату передаю следующим образом:

sql.Append("where data between ""+dateedit1.text+"" and ""
+ dateedit2.text+""");

предварительно clear, и тому подобное, а через параметры не пробовал.


Val   (2002-02-28 10:55:00) [74]

запрос написан верно, а дату передаете параметром?


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо