Текущий архив: 2002.03.28;
Скачать: CL | DM;
ВнизОшибка в SQL запросе?! Найти похожие ветки
← →
iva (2002-02-28 14:44) [40]Проблема действительно существует.
Попробовал то же самое на базах Парадокса (DB) ошибка исчезла.
← →
Val (2002-02-28 14:47) [41]>Sava © (28.02.02 14:42)
(вобщем далеко от запроса), запрс выдает все нормально пустые записи
Уважаемый, чего тогда мы ваш запрос мусолим?
Вы можете сказать нормально, что у вас не работает?
← →
iva (2002-02-28 14:52) [42]>Val © (28.02.02 14:47)
>Вы можете сказать нормально, что у вас не работает?
У кого это "у вас" ?
← →
Sava (2002-02-28 14:54) [43]> Val
Со всем уважением, но не могу сказать что от запроса работоспособность не зависит напрямую!!!!
Тоесть я убираю кое-что из запроса (смотрите выше) и даже пустые строки выводит замечательно, так что не могу сказать, что проблемма не в запросе, вероятно она и не в запросе, но от именно запрос является возбудителем этой ошибки или не согласны?
>iva
Вот и я говорю, что существует..... А что делать уж больно на парадокс переходить не хочется.....
← →
iva (2002-02-28 14:54) [44]Sava, мне кажется виной всему BDE
← →
Sava (2002-02-28 14:57) [45]> iva
> У кого это "у вас" ?
Это в мой адрес издевка:))
Мда тяжелый случай... водщем проблема осталась нерешенной
← →
Val (2002-02-28 15:01) [46]>Sava
никаких издевок.
если проблема в запросе, то ошибка должна появляться именно на строке Query1.Open
← →
Sava (2002-02-28 15:15) [47]>val
Повторяюсь еще раз есть два запроса:
первый:
with query1 do begin
close;
sql.Clear;
sql.Append("select data, mest, kateg, postav, sum(kolvo) from prihod ");
sql.Append("where data between ""+dateedit1.text+"" and ""+ dateedit2.text+""");
sql.Append("group by data, mest, kateg, postav");
и второй запрос:
with query1 do begin
close;
sql.Clear;
sql.Append("select mest, kateg, postav, sum(kolvo) from prihod ");
sql.Append("where data between ""+dateedit1.text+"" and ""+ dateedit2.text+""");
sql.Append("group by mest, kateg, postav");
Разницы между ними чуть, а вот первый выдает ошибку а второй нет? И кто виноват? И самое главное ЧТО ДЕЛАТЬ????
← →
Shirson (2002-02-28 15:20) [48]Коллега... а в DBGird у вас колонки заранее не определены?
← →
Sava (2002-02-28 15:29) [49]>Shirson
Коллега... К великому сожелению это не имеет значения, и когда определены ошибка и когда не определены тоже ошибка:((( Этот этап был пройден часа два назад :((( У меня идеи кончились подскажите свежую!!!!!!!!!!
← →
Shirson (2002-02-28 16:04) [50]Значит нужно рыть с кореней.
С какой базой вы работаете? Что-нибудь типа кверианалайзера там есть? Как sqlw для MSSQL. Вобщем оболочка, где можно писать запросы для базы.
Загоните свой запрос туда и посмотрите результат.
Еще попробуйте в запросе прописать дату константой и попробуйте сгруппировать по дате - ошибка есть?
← →
Sava (2002-02-28 16:18) [51]>Shirson
Коллега, мне не приятно это напомитать, но, вопервых, с какой базой я работаю написано в самом первом сообении - это dBase. И там, кстати, дата стоит констанотой, ошибка есть.
А вот за "кверианалайзера" спасибо идея новая, щас попробую что нит найти похожее, вот только интересно найду-ли?
Буду признателен за идеи!!!
Проблема то есть кто не верет намылю кусочик проекта.
← →
Shirson (2002-02-28 16:46) [52]Если не секрет и не комерческая тайна, закинте мне свой dbf (в нем храните, если не ошибаюсь?). Посмотреть хоть, что за чудо такое, которое так глючит :)
(мыло под ником)
← →
Johnmen (2002-02-28 16:51) [53]>Sava © : Из области ненаучного тыка - переименуй поле data - что-то оно мне не нравится...
Если по-прежнему будет плохо - намыль...
← →
Sava (2002-02-28 17:15) [54]Жаль что не помогло!!!
Еще идеи есть? Меня сначало это злило, а теперь просто интересно уже!!!
← →
asafr (2002-02-28 17:26) [55]Попробуй так:
With Query1 do begin
try
if active then close;
SQL.Clear;
SQL.Add("Select data, sum(kolvo) from prihod")
SQL.Add("where data between ");
SQL.Add("""+FormatDateTime("dd.mm.yyyy",DateEdit1.Date)+"" and");
SQL.Add("""+FormatDateTime("dd.mm.yyyy",DateEdit2.Date)+""");
SQL.Add("group by data ");
Open;
Finally
Close
end;
end;
← →
Johnmen (2002-02-28 17:32) [56]>asafr © :
...
Open;
Finally
Close
...
- чтобы тутже закрылся ? :)
← →
Val (2002-02-28 17:46) [57]коллеги, тут проблема, похоже, действительно в DBase-тот же Paradox - и все корректно работает (недавно проверил в SQL Explorer один и тот же запрос на таблицах двух форматов):(
← →
asafr (2002-02-28 17:50) [58]Johnmen, согласен. Не внимателен, не заметил, что DBGrid. Конечно, Close не надо
.....
.....
.....
Open;
except
Close
end;
← →
iva (2002-03-01 07:24) [59]Sava, единственное, что у меня получилось - это обойти проблему, но не решить.
Query1.close;
Query1.DisableControls;
with query1 do
begin
sql.Clear;
sql.Append("select data, sum(kolvo), count(*) as Cnt from prihod ");
sql.Append("where data between ""+dateedit1.text+"" and ""
+ dateedit2.text+""");
sql.Append("group by data ");
open;
if Query1.FieldByName("cnt").AsInteger = 0 then
begin
ShowMessage("Данных нет. Пусто");
close;
end;
end;
Query1.EnableControls;
← →
gek (2002-03-01 07:41) [60]Может поле data переименовать в другое
← →
iva (2002-03-01 07:47) [61]
> gek (01.03.02 07:41)
> Может поле data переименовать в другое
Была такая мысль, но не проходит.
← →
Sava (2002-03-01 08:03) [62]Народ iva подсказал дельную мысль, хоть так обойти и то приятно, спасибо ему огромное!!!
А вот
try
Open;
...
except
Close
end;
не поможет, так как ошибка не в самом запросе происходит а позже, в момент перерисовки DBGrid, хотя сам запрос порождает эту ошибку.
← →
roottim (2002-03-01 08:19) [63]а ты пробовал без грида открывать запрос по батону?
а если дело не в запросе, то чего вы его мусолите?
незнаю имеет ли это смысл но попробуй приписать
sum(..) as sum1
← →
iva (2002-03-01 08:36) [64]Мои предположения:
проблема возникает когда нет информации для заданного периода. Но результат запроса не пустой, в нем содержится только одна запись, в которой вместо значения даты стоит пустота (что это NULL или еще что - я не знаю), при отображении которй и возникает проблема.
Но еще интересней: если все это проделать на базах "Парадокс", проблемы не возникает.
← →
roottim (2002-03-01 08:47) [65]> проблема возникает когда нет информации для заданного периода
если дело в том что по сумме проскакивает NULL то добавте условиеand kolvo is not null
← →
Val (2002-03-01 10:26) [66]>roottim (01.03.02 08:47)
проблема, похоже, именно в датах, когда запрос возвращает null по этому полю
← →
fishka (2002-03-01 10:56) [67]Запрос верный, но даже если нет записей, то будет одна запись, в которой поле дата пустое и сумма=0.
Чтобы исключить эту запись, необходимо в текст SQL добавить
последнюю строку:
sql.Append("having sum(kolvo)<>0 ");
В данном случае ошибки не будет при отображении с помощью DBGrid.
Если все получится, напишите.
← →
iva (2002-03-01 11:08) [68]
> fishka (01.03.02 10:56)
> Запрос верный, но даже если нет записей, то будет одна запись,
> в которой поле дата пустое и сумма=0.
> Чтобы исключить эту запись, необходимо в текст SQL добавить
> последнюю строку:
> sql.Append("having sum(kolvo)<>0 ");
такой подход не совсем верный вот в каком смысле, Нулевая сумма за правильный период будет невидима (т.е. если kolvo везде равно 0), а вот если дописать sql.Append("having count(*)>0 "), то все будет Ok.
← →
Sava (2002-03-01 11:10) [69]>fiska
И в самом делепомогло!!! Я даже своим глазам не поверил, только вот о чем я думаю:
Если сумма на самом деле будет равна нулю? Что тогда делать? Хотя конечно в данных условиях задачи такое маловероятно, но все-же если подойти к решению этой задачи в общих четрах, я так понимаю что такую запись в выборке мы не увидем.
← →
iva (2002-03-01 11:12) [70]sql.Append("having count(*)>0 ")
← →
Val (2002-03-01 11:16) [71]Это все хорошо, но это тот же обход проблемы, только средствами SQL. Если кто-то найдет информацию, почему так себя ведет DBase, поделитесь пожалуйста.
← →
Sava (2002-03-01 11:18) [72]>iva
Решенье найдено УРА!
Работает на все 100% И хотя как многие говорили проблемма не в запросе решается он корректировкой запроса, так в чем всетаки проблемма остается сикретом!
← →
Sava (2002-03-01 11:20) [73]
> Val
> Если кто-то найдет информацию, почему так себя ведет DBase,
> поделитесь пожалуйста.
И со мной тоже поделитесь пожалуйста, если найдете.
← →
iva (2002-03-01 11:23) [74]fishka - молодец
Страницы: 1 2 вся ветка
Текущий архив: 2002.03.28;
Скачать: CL | DM;
Память: 0.58 MB
Время: 0.009 c