|
26 / 1 / 1
Регистрация: 18.03.2018
Сообщений: 278
|
|
Создание вычисляемого поля между двумя DBGrid25.11.2019, 02:29. Показов 4333. Ответов 28
Метки нет (Все метки)
Здравствуйте. Имеется главная и зависимая таблицы Пара и Выступление. в таблице Пара есть атрибут "результат", а в зависимой таблице Выступление есть атрибут "Баллы". Необходимо создать такое поле, чтобы в атрибут "результат" в главной таблице записывалось количество баллов, т.е. баллы из нескольких записей зависимой таблицы. Также при добавлении новых записей, либо при удалении, необходимо чтобы этот "результат" также обновлялся. Для баз данных использую Firebird. Подскажите, пожалуйста, как это можно реализовать? И как будет сделать лучше, в Delphi, или, например, в IBExpert?
0
|
|
| 25.11.2019, 02:29 | |
|
Ответы с готовыми решениями:
28
Создание Вычисляемого Поля Отображение определенных записей и создание вычисляемого поля Связь между двумя DBGrid |
|
32 / 26 / 7
Регистрация: 18.10.2019
Сообщений: 187
|
|
| 28.11.2019, 17:05 | |
|
Несколько причин почему фио лучше хранить раздельно.
1. Сортировка, группировка намного удобнее по отдельным полям. Попробуйте сгруппировать по одному полю и отсортировать каждый элемент в разном порядке - задачка нетривиальная. 2. Большинство гридов имеют встроенные средства сортировки и группировки но для отдельных полей. 3. С ростом объема базы, время поиска по контексту в фио будет только увеличиваться, в то время как для отдельных полей этого не будет. 4. Если возникнет необходимость вывести только фамилию и инициалы, это намного проще делать из трех полей, чем парсить одно поле с фио. Данные человека могут не содержать отчества или состоять более чем из 3 частей, например: Лю Ци, Ахбей Ибн Нарад Мавсин Задат и т.д.
0
|
|
|
26 / 1 / 1
Регистрация: 18.03.2018
Сообщений: 278
|
|
| 28.11.2019, 18:07 [ТС] | |
|
Скандербег, спасибо, попробую сделать
Добавлено через 5 минут Скандербег, Ещё сразу такой вопрос, а куда этот запрос записывать? Например, если в IBExpert. Просто в редактор скриптов? Или куда-то ещё? Просто мне нужно чтобы он постоянно выполнялся в процессе изменения, что-то типа триггера, но в триггеры же нельзя записывать запросы? Или я что-то путаю?
0
|
|
|
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
|
|
| 28.11.2019, 18:46 | |
|
Запрос какой?
Конечно не редактор скриптов IBExpert. Пока не зная о каком запросе речь, могу сказать, что любой можно реализовать в хранимой процедуре (ХП)
0
|
|
|
26 / 1 / 1
Регистрация: 18.03.2018
Сообщений: 278
|
||||||
| 28.11.2019, 21:52 [ТС] | ||||||
|
Скандербег, вот что касается вот этого вашего запроса:
Добавлено через 1 час 25 минут Скандербег, просто как его записать, если синтаксис делфи не позволяет записывать такой код? Не получается ![]() Добавлено через 38 минут Скандербег, в общем, постараюсь объяснить что нужно еще раз в делфи с точки зрения пользователя. Допустим я - пользователь. Передо мной 2 таблицы, главная "Пара" и зависимая "Выступление". Я выбрал какую-то пару из главной таблицы, в зависимой таблице появилось несколько записей для этой пары, одним атрибутом в которой является количество баллов, и это количество баллов в сумме равняется результатом выступления для ВЫБРАННОЙ в главной таблице "Пара" записи. Допустим я, пользователь, решил добавить в зависимую таблицу ещё одну запись выступления с определенным количеством баллов, например, 15 балов. Тогда после добавления этой записи в главной таблице для выбранной записи результат должен увеличиться на 15 баллов соответственно. Если я решил изменить в зависимой таблице или удалить одну из записей, то в главной, выбранной строке результат также должен динамически изменяться. Можно это реализовать и в IBExpert, не обязательно в Delphi. Если бы вы смогли помочь реализовать это в IBExpert, был бы очень благодарен, т.к. всю базу разбирался сам кое как, делал. Преподаватель не очень хочет помогать. Раньше получалось справиться с помощью методичек/форумов, а сейчас конкретно встал на месте, уже больше недели не получается решить данный вопрос
0
|
||||||
|
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
|
|
| 29.11.2019, 05:33 | |
Сообщение было отмечено Komputershik как решение
Решение
Komputershik, всё это реализовано в одном модуле, где размещены все датасеты (модуль прилагается).
На форму добавлен еще один датасет для получения суммы баллов и в класс формы добавлены три процедуры. При использовании FIBPlus этого оказалось достаточно чтобы получилось так как рассказано постом выше. Реакция процедур для изменение суммы баллов по выбранной паре получается если добавлять, изменять или удалять баллы в выступлениях выбранной пары. Т.е. для уже существующих в БД пар и их баллов автоматически баллы не суммируются. Но это и не надо.
0
|
|
|
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
|
|
| 29.11.2019, 05:57 | |
|
Komputershik, для уверенной записи суммы баллов в процедуре TdmCity.ResultPair; в самом конце надо добавить строку: dstPair.Post;
"Не уверенной" запись нового результата получается, если после суммирования не "съехать" со строки, в которой выбрана пара. Чтобы таких случаях не было, надо принудительно вызывать метод Post.
0
|
|
|
26 / 1 / 1
Регистрация: 18.03.2018
Сообщений: 278
|
|
| 29.11.2019, 13:08 [ТС] | |
|
Скандербег, спасибо большое, работает! Post добавил, результат сохраняется. Вы очень сильно помогли
0
|
|
|
|
|
| 30.11.2019, 07:28 | |
|
ОФФ
если честно, совет от человека, который занимается танцевальной программой с 1991 года уходите от DB-Aware компонентов) делайте модели данных, выводите их в обычные формы тогда следующий шаг - вместо датасетов перейти к HTTP-запросам, как это делается в 21 веке - пройдет легко и безболезненно, а не как у меня )))
0
|
|
| 30.11.2019, 07:28 | |
|
Создание поля в DBGrid, значение которого присваивается ориентируясь на значение поля в базе данных SQL Вычисляемые поля между двумя таблицам ADOQuery Создание связи между dblookupcombobox с dbgrid
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Новости компьютерного мира и их обсуждение (4)
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|