Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Ehlib

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

Открыть новую тему     Написать ответ в эту тему

rich76

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPerformer

Цитата:
то есть если на этом же поле поставить fvtSum и больше ничего не менять, то работает?

да

Всего записей: 23 | Зарегистр. 06-02-2006 | Отправлено: 17:01 08-05-2013
XPerformer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
rich76
бред какой-то.. у меня было, что при закрытии, удалении всех записей и открытии датасета не обнулялись итоговые значения. Но они все не обновлялись и суммы и кол-ва. Думаю, лучше в отладчике посмотреть, чем они так сильно отличаются

Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 17:15 08-05-2013
rich76

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPerformer
у меня EhLib не Full Source, для ХЕ3 файлы *.Int  

Всего записей: 23 | Зарегистр. 06-02-2006 | Отправлено: 17:46 08-05-2013
XPerformer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
сейчас занят, завтра смогу продебажить, если раньше никто не поможет

Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 17:48 08-05-2013
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPerformer
Ну я вот автор датасета. В первую очередь взял EhLib - была байда. Датасет мой кривой был, - что не бывает? Вы не указываете датасет - бог в помощь.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 19:39 08-05-2013
XPerformer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
а что ссылки на TMTNumericDataFieldEh недостаточно?

Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 19:52 08-05-2013
rich76

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
связка
DbGridEh-MemTableEh-SQLDriverEH-MyDataSource-MyQuery

Всего записей: 23 | Зарегистр. 06-02-2006 | Отправлено: 09:58 09-05-2013
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
rich76
Странно, вроде всё должно работать. С EhLib иногда помогает Dataset.Resync([]); но куда его нужно прикрутить не подскажу.  
 
-
Тут дело то ещё в том что MyDataSource отвечает за систему рассылки событий. Нужно полагать датасурс немного отличается от стандартного, даёт свои плюсы.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 12:42 09-05-2013 | Исправлено: delover, 13:08 09-05-2013
XPerformer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
rich76
Создал с нуля проект со связкой
DbGridEh-MemTableEh-SQLDriverEH-MyDataSource-MyQuery
В таблице 1500 записей. Работает и сумма и среднее, кол-во
Так ошибка в вашем коде
Я не понял только откуда взялся TMTNumericDataFieldEh, если вы работаете через  SQLDataDriverEh? он сам копирует структуру, не надо ее забивать в MemTable

Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 11:06 10-05-2013
rich76

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPerformer

Цитата:
В таблице 1500 записей. Работает и сумма и среднее, кол-во  

какая версия Ehlib-a у Вас?

Цитата:
Я не понял только откуда взялся TMTNumericDataFieldEh, если вы работаете через  SQLDataDriverEh? он сам копирует структуру, не надо ее забивать в MemTable

так я и написал, как MemTable определяет тип этого поля
 

Всего записей: 23 | Зарегистр. 06-02-2006 | Отправлено: 20:46 10-05-2013
XPerformer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
rich76
ehlib 6.1
 
Добавлено:
delphi xe

Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 21:29 10-05-2013
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На работе EhLib 5.6 но я не могу найти компоненты MyDataSource и MyQuery. Это MySQL либа? UNiDac или я не догоняю?
 
Добавлено:
Попробовал с фибами...

Код:
v := SumList.SumCollection.GetSumByOpAndFName(SumListArray[Footer.ValueType], FieldName).SumValue;

Через SQLDriver и мем всегда 0 у меня. Хотя когда привязываю датасурс к FIB показывает avg без вопросов. Чтото либо с мем либо с драйвером.
 
Добавлено:
Выполняю
DBGridEh1.SumList.RecalcAll;
Отсылает в
RecalcAllForIntMemTable;
Делает
AIntMemTable.GetAggregatedValuesForRange(
В цикле
for i := FromRN-1 to ToRN-1 do
Нету расчёта AVG, Только количество для него считает а AVG нет в принципе.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 09:00 13-05-2013
XPerformer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
ничего, что среднее считается как сумма деленная на кол-во? зачем его в цикле считать-то?

Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 11:13 13-05-2013
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPerformer
В этом цикле перечисляются элементы. Без элементов среднего не будет. В этом цикле есть вычисление Min Max Count и Sum. Вы предлагаете Avg считать отдельно, в другом цикле или считать вообще без элементов???
 
EhLib
Порадовало

Код:
procedure TRecordsViewEh.QuickSort(L, R: Integer; Compare: TCompareRecords; ParamSort: TObject);
...
begin
  if L >= R then Exit; //<--??? Это что от дурака защита на все времена???
     //На практике 'L >= R' = false.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 12:29 13-05-2013
XPerformer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
может, туплю, конечно, что если Sum/Count не среднее получится?

Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 12:34 13-05-2013
miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover

Цитата:
if L >= R then Exit; //<--??? Это что от дурака защита на все времена???  

А что не так? Вполне себе правильная проверка, на практике не всегда 'L >= R' = false. Pазве что я бы какой-нибудь assert/exeption делал вместо exit-а.
 
XPerformer
delover, наверное, подразумевает, что для вычисления суммы/количества все равно нужен цикл.

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 12:58 13-05-2013
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPerformer

Цитата:
может, туплю, конечно

Наверно. Я вообщето про Eh-код пишу, а не про что то. Нету ещё ни Sum ни Count
 
>  DBGridEh1.SumList.RecalcAll;
 
Предположительно означает, что программист захотел пересчитать агрегатные функции.
Это значит нет ни Sum ни Count - их надо сосчитать. Для MemTable расчёт выполняется отдельно:
 
  if  Supports(DataSet, IMemTableEh, AIntMemTable)
   then
  begin
    RecalcAllForIntMemTable;
 
Функция которая реализует само суммирование:
 
Подробнее...
 
обратите внимание
 
if (agfCountEh in AggrFuncs) or (agfAvg in AggrFuncs) then
  ResultArr[agfCountEh] := ResultArr[agfCountEh] + 1;
 
это значит что для AVG тоже надо знать количество. Больше про AVG никто не вспоминал. Возможно автора отвлекли в этот момент. Либо момент был очень волнительный. Но расчёта AVG тут нет...
 
Про сортировку достаточно было:
 
procedure TRecordsViewEh.SortData(Compare: TCompareRecords; ParamSort: TObject);
begin
  if FMemoryViewList.Count > 1 then //<<--- Добавить чтобы в цикле не ловить дурака.
  QuickSort(0, FMemoryViewList.Count-1, Compare, ParamSort);

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 13:08 13-05-2013
XPerformer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
понимаю. Но у меня все работает

Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 13:09 13-05-2013
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
miwa

Цитата:
Вполне себе правильная проверка

С учётом что афтор это делает в цикле сортировки которая "Быстрая" якобы.
    if L < J then
      QuickSort(L, J, Compare, ParamSort);
 
 
Добавлено:
Надо ещё sleep(1) добавить в цикл QuickSort. А чтоб жизнь мёдом не казалась.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 13:13 13-05-2013
miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover

Цитата:
 
miwa

Цитата:
Вполне себе правильная проверка

С учётом что афтор это делает в цикле сортировки которая "Быстрая" якобы.
 

Ну, отсюда не видно, где еще эта функция используется. Да и не факт, что завтра она не будет использоваться еще где-то.

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 21:05 13-05-2013
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Ehlib


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru