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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2009, 22:32   #11
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

мне же надо чтобы средний рез-т отображался в одно ячейки ,а он мне сразу эти цифры в каждой
crit вне форума Ответить с цитированием
Старый 17.05.2009, 22:34   #12
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

в общем посчитало правильно,но засунуло во все ячейки)
crit вне форума Ответить с цитированием
Старый 17.05.2009, 22:36   #13
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

получилась такая цифра,а как выделить целую часть,например получилось 44545,66666.. тоесть 4.
crit вне форума Ответить с цитированием
Старый 17.05.2009, 22:46   #14
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

сделал так =)
OraQuery1.SQL.Add('select A ,('+inttostr(summa)+'/'+inttostr(REc)+'/'+inttostr(100000)+') as Summa ');
получилось 4,5656....... как отбросить все после запятой??
crit вне форума Ответить с цитированием
Старый 17.05.2009, 23:00   #15
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Извиняюсь, не первый раз уже забываю прописывать Next. Надо его вставить, тогда будет работать.

Код:
 REc:=AdoQuery1.RecordCount;
  AdoQuery1.DisableControls;
AdoQuery1.First;
 for I := 0 to AdoQuery1.RecordCount- 1 do    // Iterate
 begin
  summa:=summa+AdoQuery1.fieldbyname('kod').AsInteger;
  AdoQuery1.Next;
 end;    // for
 AdoQuery1.EnableControls;
А чтобы было целое число попробуй round округление
Код:
  AdoQuery1.SQL.Add('select kod, caption, (round('+inttostr(summa)+'/'+inttostr(REc)+')) as Summa ');
есть еще trunc отcечение дробной части, но почему-то не получилось
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.

Последний раз редактировалось ArtInt; 17.05.2009 в 23:05.
ArtInt вне форума Ответить с цитированием
Старый 17.05.2009, 23:09   #16
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

но забивает всеравно во все ячейки(
crit вне форума Ответить с цитированием
Старый 17.05.2009, 23:12   #17
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

А зачем в одной ячейке, тогда не легче было сделать просто поле Edit внизу c надписью Средний результат? И обновлять его когда вносится новый результат. Все также по циклу выясняется сумма и делится на количество записей. И потом результат присваивается Edit.
Если результат выводится в одну ячейку, зачем тогда заводить новое поле?
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.

Последний раз редактировалось ArtInt; 17.05.2009 в 23:15.
ArtInt вне форума Ответить с цитированием
Старый 17.05.2009, 23:16   #18
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

хм..не красиво получица) ну да ладно, как в едит занести?подскажи плиз
crit вне форума Ответить с цитированием
Старый 17.05.2009, 23:20   #19
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Сначала вычислили сумму:
Код:
  AdoQuery1.DisableControls;
AdoQuery1.First;
 for I := 0 to AdoQuery1.RecordCount- 1 do    // Iterate
 begin
  summa:=summa+AdoQuery1.fieldbyname('kod').AsInteger;
  AdoQuery1.Next;
 end;    // for
 AdoQuery1.EnableControls;
Потом
Код:
  Edit1.text:=(inttostr(trunc(summa/AdoQuery1.RecordCount)));
Также компонент Label прописываешь что надо.
-----------------
А если надо чтобы в сетке первая ячейка была заполнена, то вместо Edit присваивание надо сделать именно одной ячейке.
Например так:
Код:
AdoQuery1.First; //выбираем ячейку, можно и последнюю Last,  или RecNo:=7;
AdoQuery1.Edit;//в данном случае редактируем эту ячейку, но можно и Insert если пустую строку вставить снизу и в ней вывести
AdoQuery1.FieldbyName('Rez').AsString:=(inttostr(trunc(summa/AdoQuery1.RecordCount)));
AdoQuery1.Post;
Так что можно два варианта использовать.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.

Последний раз редактировалось ArtInt; 17.05.2009 в 23:30.
ArtInt вне форума Ответить с цитированием
Старый 17.05.2009, 23:34   #20
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

Спасибо тебе=)
crit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перенос данных из DBGrid в DBGrid KingSize БД в Delphi 17 24.04.2009 09:30
DBGrid Alexsandr БД в Delphi 5 08.10.2008 00:00
DBGrid Ane4ka БД в Delphi 28 01.06.2008 10:00
DBGRID Devikss БД в Delphi 2 29.05.2008 08:17