![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка в SQL запросе?! [D5, IB6.x, dBase, FoxPro]
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]запрос написан верно, а дату передаете параметром?