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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2009, 11:22   #1
kzmd
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 39
По умолчанию Снова Арифметика в Базе данных access


Всем доброго времени суток
У меня по нажатию кнопки база считает значение выделенных ЧекБоксом значечий из базы ...
sum:=0;
if CheckBox1.Checked then sum:=sum+DataModule2.ADOQuery2.Fiel ds[2].AsInteger;
if CheckBox2.Checked then sum:=sum+DataModule2.ADOQuery2.Fiel ds[3].AsInteger;
if CheckBox3.Checked then sum:=sum+DataModule2.ADOQuery2.Fiel ds[4].AsInteger;
ShowMessage( IntToStr(sum) );

так до 30 .

скажем результат чекбокса 1+чекбокса2+чекбокса3=18
А мне нужно что бы это значение sum потом делилось на количество выбранных чекбоксов ??? т.е. 18:3=6 и вот этот результат по нажатию выводился в мессадж ???
или чекбокс2+чекбокс3+чекбокс5+чекбокс1 =54делённое на количество выбранных чекбоксов т.е. 54:4=13.5 ...
огромное спасибо всем кто откликнется !!!!
kzmd вне форума Ответить с цитированием
Старый 07.02.2009, 11:30   #2
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

заведи переменную счетчик и при выборе чекбокса увеличивай на 1 а потом дели на нее сумму т.е.
Код:
if CheckBox1.Checked then begin sum:=sum+DataModule2.ADOQuery2.Fields[2].AsInteger; i:=i+1;end;...........showmessage(floattostr(sum/i));
вступлю в команду разработчиков ПО на Delphi

Последний раз редактировалось maladoy; 07.02.2009 в 11:35.
maladoy вне форума Ответить с цитированием
Старый 07.02.2009, 12:18   #3
kzmd
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 39
По умолчанию

procedure TForm1.Button1Click(Sender: TObject);
begin

sum:=0;
if CheckBox1.Checked then begin sum:=sum+DataModule2.ADOQuery2.Fiel ds[2].AsInteger; i:=i+1;end;
if CheckBox2.Checked then begin sum:=sum+DataModule2.ADOQuery2.Fiel ds[3].AsInteger; i:=i+1;end;
if CheckBox3.Checked then begin sum:=sum+DataModule2.ADOQuery2.Fiel ds[4].AsInteger; i:=i+1;end;
showmessage(floattostr(sum/i));


end;
Большое спасибо ,

маленький нюансик ,я кнопку жму а он значеие всё меньше выдаёт 2+2+2=6/3 т.е. 2 потом жму кнопку 1 потом 0.5 ?
kzmd вне форума Ответить с цитированием
Старый 07.02.2009, 12:30   #4
Mugger
 
Регистрация: 07.02.2009
Сообщений: 7
По умолчанию

начало поменяй...

i:=0;
sum:=0;
if....
Mugger вне форума Ответить с цитированием
Старый 07.02.2009, 13:36   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Да вы что? Там же
Цитата:
так до 30
И что, 30 строк лепить "ифов"?
Давайте уж примерно так:
Код:
var i,cnt: integer;
    sum: currency;
    cmp: TComponent;
begin
cnt:=0;
sum:=cnt;
for i:=1 to 55 (хоть миллион :)) do
begin
cmp:=FindComponent('CheckBox'+IntToStr(i));
in cmp=nil then
break;
if (cmp as TCheckBox).Checked then
begin
sum:=sum+DataModule2.ADOQuery2.Fields[i+1].AsInteger;
cnt:=cnt+1;
end;
end;
if cnt>0 then
ShowMessage(FloatToStr(sum/cnt));
end;
mihali4 вне форума Ответить с цитированием
Старый 08.02.2009, 01:29   #6
kzmd
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 39
По умолчанию

спс,большое очень помогли
Тогда у меня такой щё вопрос ,showmessage(floattostr(sum/i)); у меня выводиться .
Вот только надо его поле внести что бы потом по значениям график построить ..Создавал в ассеsse 30 числовых полей где а1,а2,и.т.д значения потом там же делал поля короче с 60-ти полями меня access послал ..
Решил др. таблицу сделать где и буду их складывать ???? есть комментарии как ещё можно точки под ДВгрид вывести ?
kzmd вне форума Ответить с цитированием
Старый 08.02.2009, 02:33   #7
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

в стринггрид выводи
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 08.02.2009, 02:48   #8
kzmd
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 39
По умолчанию

mihali4 Код замечательный, только кодга ставишь на чекбокс1+чекбокс2=поля где у меня Фамилия стоит +дата рождения ..приходиться первое 5-тым ставить
kzmd вне форума Ответить с цитированием
Старый 08.02.2009, 02:51   #9
kzmd
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 39
По умолчанию

maladoy Можеш поподробнее инструкцию выдать .
kzmd вне форума Ответить с цитированием
Старый 08.02.2009, 13:08   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от kzmd Посмотреть сообщение
mihali4 Код замечательный, только кодга ставишь на чекбокс1+чекбокс2=поля где у меня Фамилия стоит +дата рождения ..приходиться первое 5-тым ставить
А это вам нужно просто установить правильное соответствие между номером чекбокса и номером поля в таблице...
Вы же указали исходно:
Цитата:
if CheckBox1.Checked then sum:=sum+DataModule2.ADOQuery2.Fiel ds[2].AsInteger;
Я вам так и предложил - 1-ый чекбокс = 2-му полю, 2-ой = 3-ему и так далее...

Последний раз редактировалось mihali4; 08.02.2009 в 13:10.
mihali4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста сделать поиск по базе данных в форме! Access 2003 LilijaSt Microsoft Office Access 19 25.12.2010 10:13
Access + ADO + Delphi = Поиск по базе vicvtor БД в Delphi 35 10.02.2009 11:00
Поиск по базе данных ERASERROR БД в Delphi 4 14.03.2008 16:34
Создать таблицу Access в существующей базе. Nowichok БД в Delphi 6 10.02.2007 18:32