Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2009, 13:46   #1
Tanya2008
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 13
По умолчанию Stack OverFlow

Добрый день! у меня проблема с переполнением стека. программа такая: на главной форме есть меню, на клике на одном из пунктов меню написан такой код:
Код:
period:='';
 if not InputQuery('Ввод периода', 'Введите период',period)
then exit;
t_name:='Budget_'+period;
DM.ADOQuery1.Close;
DM.ADOQuery1.SQL.Clear;
DM.ADOQuery1.sql.add('select Kategoria.kategor, Pklass.pklas, sum('+t_name+'.isp_b) from Pklass, '+t_name+', Kategoria ');
DM.ADOQuery1.sql.add('where (Kategoria.kodkat=Pklass.kodkat) and (Pklass.kodkat='+t_name+'.kodkat) and (Pklass.kodkl='+t_name+'.kodkl)and (Pklass.kodp='+t_name+'.kodp) and ('+t_name+'.utv_b!=0) group by Kategoria.kategor, Pklass.pklas ');
DM.ADOQuery1.sql.add('order by Kategoria.kategor ;');
DM.ADOQuery1.ExecSQL;
DM.ADOQuery1.Open;
Form6.QRLabel1.Caption:='Анализ структуры доходной части бюджета области за '+copy(t_name,8,4)+' г.';
Form6.QuickRep1.Preview;
В базу делается запрос. Должен формироваться отчет QuickRep, который связан с ADOQuery1.
Если я выполняю эту процедуру один раз, то ошибки нет, но когда пытаюсь еще раз, ввожу в InputQuery другой год, но вылетает оишбка Stack Overflow! Подскажите что сделать! Почему ошибка не пойму.
Tanya2008 вне форума Ответить с цитированием
Старый 11.05.2009, 14:14   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Попробуй убери вот это
Код:
DM.ADOQuery1.ExecSQL;
Должно хватить Open.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 11.05.2009, 14:16   #3
Tanya2008
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Kotofff Посмотреть сообщение
Попробуй убери вот это
Код:
DM.ADOQuery1.ExecSQL;
Должно хватить Open.
Попробовала, не помогает
Tanya2008 вне форума Ответить с цитированием
Старый 11.05.2009, 14:26   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

А ошибка точно в данной части кода ?
Дело в том, что ExecSQL отличается от Open тем, что не возвращает набор данных и его использование с select внутри самого запроса нецелесообразно. Если ты ожидаешь получить от запроса данные, то используй Open.
Дай больше кода тогда посмотреть.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 11.05.2009, 14:51   #5
Tanya2008
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 13
По умолчанию

больше кода нет, это весь
что интересно, если отчет не отображать (Form6.QuickRep1.Preview то все работает идеально, только толку мало

Последний раз редактировалось Tanya2008; 11.05.2009 в 14:58.
Tanya2008 вне форума Ответить с цитированием
Старый 11.05.2009, 15:03   #6
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Так может в нем и проблема ?
Отладчиком посмотри на какой именно строчке происходит ошибка.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 11.05.2009, 15:16   #7
Tanya2008
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 13
По умолчанию

ни на каком не происходит, когда все строчки проходит тогда и выдает, последнюю проходит и появляется ошибку, а на первый раз ошибки нет, только на второй.
Может этот отчет как-нибудь очищать надо или что? не пойму ничего
Tanya2008 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите со Stack МаксMorfey Помощь студентам 0 10.05.2009 16:37
Линкер выдает ошибку Error: Fixup overflow Terasbetoni Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 27.04.2009 13:03
STACK и QUEUE vo_sa Общие вопросы C/C++ 3 25.03.2009 11:45
При переключении между чекбоксами - ошибка Stack overflow. Как исправить эту ошибку? SkAndrew Общие вопросы Delphi 5 26.08.2008 21:32
Stack Overflow??? Рустам Общие вопросы Delphi 7 01.04.2008 17:24