Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];

Вниз

Ошибка в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.59 MB
Время: 0.007 c
4-91121
ctapik-net
2002-01-29 14:18
2002.03.28
Вопрос про Hint


1-90910
ded_di
2002-03-18 13:22
2002.03.28
BDE


3-90780
Alexander Vasjuk
2002-02-25 16:47
2002.03.28
КРИЗИС ЖАНРА или Настройка ширины колонок подчиненной таблицы


1-90920
DeNN
2002-02-28 21:15
2002.03.28
Как?


1-90892
kay
2002-03-17 10:33
2002.03.28
IMAGE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский