Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
 Аватар для kebot
9 / 9 / 4
Регистрация: 11.07.2012
Сообщений: 200

Компонент MemTableEh и вычисляемые поля

14.12.2015, 22:02. Показов 4667. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.

Вопрос собственно простой - как отобразить вычисляемое поле в гриде если идет реализация связки:

ClientDataSet - DataSetDriverEh1 - MemTableEh - DataSource - DBGridEh

Если убрать (DataSetDriverEh1 - MemTableEh) то вычисляемое поле нормально отображается, иначе
в колонке вычисляемого поля отображаются одни нули, в футерах групп ( у меня включена группировка в DBGridEh)
тоже в данном поле одни нули и только в итоговом общем футере находится правильное подсчитанное значение
суммы хотя вся колонка одни нули, стоит убрать MemTableEh сразу появляются значения

Если нужно вычисляемое поле как то отдельно описать в MemTableEh огромная просьба опишите подробно
по шагам что нужно сделать - облазил все руководство и оф. сайт так и не сообразил как подступиться

Добавлено через 9 часов 8 минут
Пробовал добавлять это поле через редактор (двойной щелчок) по MemTableEh, а также прописывать в
событии ОnCalcFields у MemTableEh - ни какого эффекта все равно нули, пробовал просто тестовое поле создать
значение двух реальных полей между собой сложить - просто пустота даже нулей нет

Добавлено через 14 часов 1 минуту
Можно как нибудь обмануть MemTableEh ? Представить вычисляемое поле как реальное поле временной таблицы ?

Пытаюсь реализовать это с помощью подзапроса. Запрос срабатывает ошибок не выдает но и картина не меняется
все равно одни нули рисует в этом поле.

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
     'SELECT ZP.*,ZP.SUMMA '+
                                                  'FROM  (select p1.EMP_N,'+
                                                         'p1.EMP_FIO,'+
                                                         'p1.EMP_BANK_N,'+
                                                         'p2.ISP_DATE,'+
                                                         'p2.ISP_SHTRAF,'+
                                                         'case when p2.ISP_TIME_BEGIN < p2.ISP_TIME_END '+
                                                         'then p2.ISP_TARIF * CAST( (DATEDIFF(MINUTE ,p2.ISP_TIME_BEGIN,p2.ISP_TIME_END) - DATEDIFF(MINUTE,CAST(''00:00:00'' AS TIME),p2.ISP_TIME_OBED)) AS DEC(12,1))/60 - p2.ISP_SHTRAF + p2.ISP_BONUS '+
                                                         'else p2.ISP_TARIF * CAST( (1440 - DATEDIFF(MINUTE,CAST(''00:00:00'' AS TIME),p2.ISP_TIME_BEGIN) + DATEDIFF(MINUTE,CAST(''00:00:00'' AS TIME),p2.ISP_TIME_END) - DATEDIFF(MINUTE,CAST(''00:00:00'' AS TIME),p2.ISP_TIME_OBED)) '+
                                                         'AS DEC(12,2))/60 - p2.ISP_SHTRAF + p2.ISP_BONUS '+
                                                         'end SUMMA '+
                                                  'from EMPLOYES p1,ISPOLNENIE p2,PLANIROVANIE p3,UR_FACE_ZAK p4 '+
                                                  'where p2.ISP_EMPLOYES_KEY = p1.EMPLOYES_KEY AND p2.ISP_PLANIROVANIE_KEY = p3.PLAN_KEY AND p3.PLAN_UR_FZ_KEY = p4.UR_FZ_KEY '+
                                                  'AND  p2.ISP_SMENA = ''1'' AND p2.ISP_DATE >= '''+D1+''' AND p2.ISP_DATE <= '''+D2+''' AND p2.ISP_MANAGER_R IS NOT NULL '+
                                                  'ORDER BY p1.EMP_FIO,p2.ISP_DATE) AS ZP';
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.12.2015, 22:02
Ответы с готовыми решениями:

Вычисляемые поля
Мне необходимо осуществить подсчет баллов студента,смотря на процент его успеваемости,посещаемости и тд. Некоторые поля у меня числовые,а...

Вычисляемые поля
Доброе время суток) У меня есть форма &quot;Сотрудник&quot;, на которой находится DataSource1 и Table1. Так как в таблице много данных, решила...

Вычисляемые поля
В БД использую вычисляемое поле. Есть дата поступления, срок службы и дата списания (вычисляемое поле). Подскажите, каким типом в таблице...

4
3 / 3 / 2
Регистрация: 03.11.2015
Сообщений: 10
14.12.2015, 22:22
Для компонентов которые отображают результат нет разницы между полем, которое физически существовало в таблице, и полем которое было вычислено (есть разница когда идет запись в таблицу, но это не тот случай). Скорее всего ошибка в самом запросе. В таких случаях нужно сначала максимально упростить запрос и убедиться что результат соответствует ожиданиям. Затем, постепенно усложняя запрос, отслеживать корректность результата.
0
 Аватар для kebot
9 / 9 / 4
Регистрация: 11.07.2012
Сообщений: 200
14.12.2015, 22:47  [ТС]
Попробую, но я читал ответ из службы поддержки Ehlib там они вроде как говорили, что MemTableEh не умеет
записывать в себя вычисляемые поля из другого набора данных посредством драйвера.

Добавлено через 4 минуты
Дело наверно в том что DBGridEh не просто отображает а еще в данном случае делает свою обработку данных
(сортировки, группировки и т.д.) и в этих алгоритмах еще просто не реализована корректная работа с вычисляемыми полями

Добавлено через 15 минут
Попробовал -

SQL
1
 'SELECT EMPLOYES.*,(EMP_N + 10) AS test FROM  EMPLOYES'
работает

и че ему в моем реальном запросе не по нраву...
0
3 / 3 / 2
Регистрация: 03.11.2015
Сообщений: 10
14.12.2015, 23:05
Лучший ответ Сообщение было отмечено kebot как решение

Решение

А сам запрос на чем выполняется? На MemTableEh? То что я писал верно для классических серверов БД - когда результатом выполнения запроса является некая виртуальная таблица, которая затем передается клиенту.
В случае со встроенным интерпретатором запросов возможна ситуация что диалект SQL слишком бедный - простые запросы выполняет, более сложные - нет.
Выяснить так это или нет можно тем же способом - постепенно усложняя запрос.
1
 Аватар для kebot
9 / 9 / 4
Регистрация: 11.07.2012
Сообщений: 200
15.12.2015, 00:10  [ТС]
Разобрался,
вот откуда ты все знаешь ..!

все дело было в AS DEC(12,2) через обычный НД это работало нормально
а в этом случае точность я задал в свойстве displayformat = 0.##
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.12.2015, 00:10
Помогаю со студенческими работами здесь

Вычисляемые поля
Здравствуйте. Помогите необходимо в DBGridе значения вычисляемых полей двух и более записей вносить в одну строку. Условием является...

Вычисляемые поля
Необходимо в таблице &quot;Отделы&quot; создать поле &quot;Балансовая стоимость&quot; где будет подсчитываться суммарная стоимость всех продуктов по каждому...

Вычисляемые поля
Добрый день! Подскажите как добавить вычисляемое поле в датасет динамически, как статически знаю, и как в такое поле вывести данные...

Вычисляемые поля
Добрый день. у меня имеется в Postgresql таблица следующей структуры ID NAME KOLVO FK 1 Sergey 4 5 2 Andrey 5 5 3 Sergey 6 5 ...

Вычисляемые поля
Здравствуйте, не получается подсчитать кол-во спортсменов по каждому виду спорта в определённом поле.. Смысл задания таков: создать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru