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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2009, 19:12   #1
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию Stack Overflow

Привожу сразу весь код обработчика
Код:
procedure TDataModule2.tb_OplataCalcFields(DataSet: TDataSet);
var
 i: integer;
 Cost, sum: integer;
begin
 sum := 0;
 if DataModule2.tb_Zvonki.RecordCount <> 0 then
 begin
  tb_Zvonki.First;
  for i := 0 to DataModule2.tb_Zvonki.RecordCount - 1 do
  begin
   Cost := Cost + DataModule2.int__ZvonkiВремя_разговорамин.Value;
   tb_Zvonki.Next;
  end;
  Cost := Cost * CostMin;

  tb_Oplata.First;      //На этой строчке и происходит ошибка (проверял отладчиком
  for i := 0 to tb_Oplata.RecordCount - 1 do
  begin
   sum := sum + int__OplataСумма_оплаты.Value;
   tb_Oplata.Next;
  end;

  if Cost > sum then
  begin
   int__OplataPereplateOrNedoplata.Value := Cost - sum;
   strngfld_OplataTypeOplata.Value := 'Переплата';
  end;
  if Cost < sum then
  begin
   int__OplataPereplateOrNedoplata.Value := sum - Cost;
   strngfld_OplataTypeOplata.Value := 'Недоплата';
  end;
  if Cost = sum then
  begin
   int__OplataPereplateOrNedoplata.Value := 0;
   strngfld_OplataTypeOplata.Value := 'Равно';
  end;
 end;
end;
Даже если оставить вот такой код:
Код:
procedure TDataModule2.tb_OplataCalcFields(DataSet: TDataSet);
begin
 tb_Oplata.First;
end;
то произойдет такая же ошибка.
В чем же дело?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 02.06.2009, 19:37   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

ты пытаешься чота там вычислить в текущей строчке датасета и при этом еще листаешь этот самый датасет
ничего удивительного, что возникает такая ошибка

Код:
 tb_Oplata.First;      //На этой строчке и происходит ошибка (проверял отладчиком
  for i := 0 to tb_Oplata.RecordCount - 1 do
  begin
   sum := sum + int__OplataСумма_оплаты.Value;
   tb_Oplata.Next;
  end;
получай инфу для этого куска кода отдельным запросом - будет правильнее и быстрее
soleil@mmc вне форума Ответить с цитированием
Старый 03.06.2009, 00:39   #3
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Да я уже решил эту проблему. Правильно говорите. Как всегда осенило сразу же после задания вопроса. Отдельный запрос тут не нужен. Там по типу программы запрос не подходит.
Но все равно спасибо.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Stack Overflow при сохранении Shouldercannon Общие вопросы Delphi 1 20.05.2009 11:46
Stack OverFlow Tanya2008 Общие вопросы Delphi 6 11.05.2009 15:16
Помогите со Stack МаксMorfey Помощь студентам 0 10.05.2009 16:37
При переключении между чекбоксами - ошибка Stack overflow. Как исправить эту ошибку? SkAndrew Общие вопросы Delphi 5 26.08.2008 21:32
Stack Overflow??? Рустам Общие вопросы Delphi 7 01.04.2008 17:24