Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Небольшая проблема в коде БД 
V
    Опции темы
mauar
Дата 7.5.2008, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 5.9.2007

Репутация: нет
Всего: нет



Есть опросник.  3 варианта вопросов: 
Задаю переменную на правильный
ответ:
Код

var
 OtvetPravilno: Integer;
  OtvetNePravilno: Integer; 


Подключаюсь к базе с помощью процедуры так:
Код

 procedure TTMSForm1.Otvet(praviln: boolean);
begin

  DataModule1.ADOQueryResult.SQL.Clear;
  DataModule1.ADOQueryResult.SQL.Add('SELECT * FROM Itog WHERE Student = ''' +
    SelectStudent.KeyValue + '''');
  try
  DataModule1.ADOQueryResult.Open;
  except
    Application.MessageBox(PChar('Не удалось выполнить запрос.' + #13#10 +
  DataModule1.ADOQueryResult.SQL.GetText), 'ОШИБКА', MB_ICONERROR);
    Exit;
  end;

  if DataModule1.ADOQueryResult.RecordCount = 0 then
     DataModule1.ADOQueryResult.Insert
  else if DataModule1.ADOQueryResult.RecordCount = 1 then
     DataModule1.ADOQueryResult.Edit
  else begin
    while DataModule1.ADOQueryResult.RecordCount > 0 do DataModule1.ADOQueryResult.Delete;
    DataModule1.ADOQueryResult.Insert;
  end;

    DataModule1.ADOQueryResult.FieldByName('Student').Value :=
    SelectStudent.ListSource.DataSet.FieldByName('Student').Value;
    DataModule1.ADOQueryResult.FieldByName('Fakultet').Value :=
    SelectStudent.ListSource.DataSet.FieldByName('Fakultet').Value;
    DataModule1.ADOQueryResult.FieldByName('Gruppa').Value :=
    SelectStudent.ListSource.DataSet.FieldByName('Gruppa').Value;
    DataModule1.ADOQueryResult.FieldByName('Otvetil').Value := 1;
  if praviln then begin
    DataModule1.ADOQueryResult.FieldByName('Pravilno').Value := OtvetPravilno;
    DataModule1.ADOQueryResult.FieldByName('NePravilno').Value := OtvetNePravilno;
  end else begin
    DataModule1.ADOQueryResult.FieldByName('Pravilno').Value := OtvetPravilno ;
    DataModule1.ADOQueryResult.FieldByName('NePravilno').Value := OtvetNePravilno;
  end;
    DataModule1.ADOQueryResult.FieldByName('Ocenka').Value := 100;

  try
      DataModule1.ADOQueryResult.Post;
  except
    Application.MessageBox('Не удалось сохранить результаты тестирования.',
      'ОШИБКА', MB_ICONERROR);
    Exit;
  end;

    DataModule1.ADOTableItog.Close;
    DataModule1.ADOTableItog.Open;  // Обновим грид с результатами

    end;


при нажатии на кнопку должна записаться 1 
код:

Код

if AdvOfficeRadioButton10.Checked then begin
   // Правильный ответ
     Otvet(True);  inc(OtvetPravilno);
    end else begin
   // Неправильный ответ
   Otvet(False); inc(OtvetNePravilno);
    end;


и так 30 раз, значение должно получиться 30.
Но в итоге выдает 29 вместо 30. Куда 1 девается ?
PM MAIL   Вверх
Данкинг
Дата 8.5.2008, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Значение чего?? smile 

Кстати, не понял в чём разница:

Код

 if praviln then begin
    DataModule1.ADOQueryResult.FieldByName('Pravilno').Value := OtvetPravilno;
    DataModule1.ADOQueryResult.FieldByName('NePravilno').Value := OtvetNePravilno;
  end else begin
    DataModule1.ADOQueryResult.FieldByName('Pravilno').Value := OtvetPravilno ;
    DataModule1.ADOQueryResult.FieldByName('NePravilno').Value := OtvetNePravilno;



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
mauar
Дата 8.5.2008, 03:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 5.9.2007

Репутация: нет
Всего: нет



Цитата(Данкинг @  8.5.2008,  00:38 Найти цитируемый пост)
Значение чего??  
:


Значение просто цифер, ну если удобней для восприятия будем считать в деньгах,  можно считать сумма должна получиться 30 рублей  а выходит 29.


Цитата

Кстати, не понял в чём разница


без разницы так тоже не равботает:

Код

if praviln then begin
    DataModule1.ADOQueryResult.FieldByName('Pravilno').Value := OtvetPravilno;
end 
else begin
    DataModule1.ADOQueryResult.FieldByName('NePravilno').Value := OtvetNePravilno;
end; 


30 кнопчек идут по порядку на каждой странички PageControl'a по кнопочке нажимаем на кнопочку делается увеличение на  1 (допустим 1 рубь) и автоматичесски переключается на следующую вкладку  PageControla'a где стоит новая кнопочка с точно такими же функциями что и предыдущая.
Сама процедурв описанна один раз в начале кода, а дальше по нажатию кнопки обращаемся к этой процедуре чтобы увеличить значение на 1.

Напишу еще раз код этой кнопочки:
Код

if AdvOfficeRadioButton10.Checked then begin
   // Правильный ответ
     Otvet(True);  inc(OtvetPravilno);
    end else begin
   // Неправильный ответ
   Otvet(False); inc(OtvetNePravilno);
    end;


 Посмотрите пожалуйсто свежим взглядом со стороны, в чем может быть причина, ведь должно записаться 30, куда 1 девает не могу понять.

Это сообщение отредактировал(а) mauar - 8.5.2008, 03:50
PM MAIL   Вверх
mauar
Дата 9.5.2008, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 5.9.2007

Репутация: нет
Всего: нет



А в ответ тишина.
PM MAIL   Вверх
ASGDeveloper
Дата 10.5.2008, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(mauar @  9.5.2008,  02:01 Найти цитируемый пост)
А в ответ тишина. 

Эээ, может поменять местами Inc и Otvet?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0438 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.