Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.07.2011, 18:24
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
Вопрос Сумма значений выделенных записей DBGridEh

Всем привет...
Не могу понять что не так:
хочу подсчитать сумму значений выделенных ячеек DBGridEh

Код:
var
i:integer;
sum:real;
begin
sum:=0;
  for i := 0 to DBG.SelectedRows.Count-1 do begin
       sum:=sum + dbg.SelectedRows.DataSet.FieldByName('SUMMA').AsFloat;
       DBG.SelectedRows.DataSet.Next;
  end ;
  ShowMessage(FloatToStr(sum));
end;

где DBG - DBGridEh1
глянте свежим взглядом может кто увидит косяк....

Программа считает ,но почемуто такую охинею выдаёт в резульат аж жуть....
Ответить с цитированием
  #2  
Старый 26.07.2011, 19:02
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

Что-то я не увидел перед for первоначальной установки указателя на начало выделенного блока.
__________________
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА!
Ответить с цитированием
  #3  
Старый 27.07.2011, 09:45
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию

тьфу не дописал вот так:

Код:
var
i:integer;
sum:real;
begin
sum:=0; dbg.SelectedRows.DataSet.First;
//for I:=1  to dbg.SelectedRows.Count-1 do begin
  for i := 0 to DBG.SelectedRows.Count-1 do begin
       sum:=sum + dbg.SelectedRows.DataSet.FieldByName('SUMMA').AsFloat;
       DBG.SelectedRows.DataSet.Next;
  end ;
  ShowMessage(FloatToStr(sum));
end;

Вот так видно в копи пасте не попало....
Даже с этим результт сумирования неправильный 700+200=900 прога вадает 784..
Ответить с цитированием
  #4  
Старый 27.07.2011, 14:19
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

Код:
dbg.SelectedRows.DataSet.First;
Это неправильно. SelectedRows не cоздаёт Датасета .
SelectedRows.DataSet указывает на родительский Датасет.
В справке к EhLib написано, что с SelectedRows надо работать, как с набором вкладок.
Попробуй так, хотя я не тестировал, и почитай внимательно справку к EhLib
Код:
//DBG.SelectedRows.DataSet можно заменить на идентификатор родительского Датасета
var
i:integer;
sum:real;
begin
sum:=0;
//for I:=1  to dbg.SelectedRows.Count-1 do begin
  for i := 0 to DBG.SelectedRows.Count-1 do begin
GotoBookmark(pointer(DBG.SelectedRows.DataSet.SelectedRows.Items[i]));
       sum:=sum + dbg.SelectedRows.DataSet.FieldByName('SUMMA').AsFloat;
//    DBG.SelectedRows.DataSet.Next; не нужен
  end ;
  ShowMessage(FloatToStr(sum));
end;
__________________
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА!

Последний раз редактировалось Viajero, 27.07.2011 в 14:21.
Ответить с цитированием
  #5  
Старый 27.07.2011, 14:41
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию

Странно ругается на эту строчку:
Код:
GotoBookmark(pointer(DBG.SelectedRows.DataSet.SelectedRows.Items[i]));

Может чего в Uses прописать?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:56.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025