Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DBGrid в режиме MasterDetail / 16 сообщений из 16, страница 1 из 1
10.06.2020, 17:01
    #39967950
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid в режиме MasterDetail
Можно как-нибудь в одном TDBGrid удобно отобразить две таблицы со связями один-ко-многим?
Обычный JOIN в запросе возвращает слишком много лишних данных и с ними неудобно работать.

Собственно здесь я пытался найти один из путей решения, но он, походу, тупиковый.

Возможно есть какие-то другие пути нормально работать с данными в таком представлении?
...
Рейтинг: 0 / 0
10.06.2020, 17:19
    #39967958
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid в режиме MasterDetail
В одном - нет
...
Рейтинг: 0 / 0
10.06.2020, 17:34
    #39967968
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid в режиме MasterDetail
alekcvp

Обычный JOIN в запросе возвращает слишком много лишних данных и с ними неудобно работать.

Пользователю не нужны миллионы строк. Придумайте фильтры, по которым можно обрезать запрос. Например два календаря, чтобы показывать данные в промежутке между датами, вид транспорта (наземный/воздушный) и т.д.
...
Рейтинг: 0 / 0
10.06.2020, 17:39
    #39967972
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid в режиме MasterDetail
alekcvp
Можно как-нибудь в одном TDBGrid удобно отобразить две таблицы со связями один-ко-многим?

Можно отобразить в одном TcxGrid. Или в двух TDBGrid (что лично по мне - удобнее).

alekcvp
Возможно есть какие-то другие пути нормально работать с данными в таком представлении?

Вы идёте не с того конца. У Вас есть реализация запроса (join) и Вы придумываете, что с ней делать. А нужно - "вот здесь мне нужны вот такие данные вот в таком виде", и отсюда плясать - "как это сделать".

P.S. У грида нет режима MasterDetail.

DimaBr
Пользователю не нужны миллионы строк.

Господи, сколько ещё раз мы будем слышать "я не умею этого сделать, поэтому пользователю этого не нужно"? К тому же в данном случае вообще по принципу "слышал звон".
...
Рейтинг: 0 / 0
10.06.2020, 17:48
    #39967983
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid в режиме MasterDetail
DimaBr
alekcvp

Обычный JOIN в запросе возвращает слишком много лишних данных и с ними неудобно работать.

Пользователю не нужны миллионы строк. Придумайте фильтры, по которым можно обрезать запрос. Например два календаря, чтобы показывать данные в промежутке между датами, вид транспорта (наземный/воздушный) и т.д.

Пользователь видит 50 строк, из них 20 строк отличаются только несколькими полями - зачем ему видеть 20 повторяющихся значений в столбце, он в них теряется и ему не удобно видеть где заканчиваются повторяющиеся и начинаются новые...
softwarer
Вы идёте не с того конца. У Вас есть реализация запроса (join) и Вы придумываете, что с ней делать. А нужно - "вот здесь мне нужны вот такие данные вот в таком виде", и отсюда плясать - "как это сделать".

У меня есть ТЗ, грубо говоря: "хочу в одной таблице видеть одновременно вот эти данные, но не хочу в ней видеть повторяющиеся значения".
...
Рейтинг: 0 / 0
10.06.2020, 17:50
    #39967985
kv67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid в режиме MasterDetail
У TcxGridDBDataController есть свойство DetailKeyFieldNames

Description

To establish master-detail relationships between two datasets, you have to create a data controller for each and set detail & master key field names via the DetailKeyFieldNames and MasterKeyFieldNames properties of the detail controller. Thus you link two datasets by specific fields. The detail data controller will represent the data corresponding to a specific record in the master data controller.

Да, это DevExpress
...
Рейтинг: 0 / 0
10.06.2020, 17:51
    #39967987
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid в режиме MasterDetail
alekcvp
У меня есть ТЗ, грубо говоря: "хочу в одной таблице видеть одновременно вот эти данные, но не хочу в ней видеть повторяющиеся значения".

Построй запрос так, чтобы значения не повторялись
...
Рейтинг: 0 / 0
10.06.2020, 18:34
    #39968005
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid в режиме MasterDetail
alekcvp
У меня есть ТЗ, грубо говоря: "хочу в одной таблице видеть одновременно вот эти данные, но не хочу в ней видеть повторяющиеся значения".

Значит, нужно написать запрос так, чтобы в нём были одновременно вот эти данные, но не было повторяющихся значений. Либо (если это геморройно) решить этот вопрос на клиенте отрисовкой (вернее, неотрисовкой) нужных ячеек. Либо таки взять TcxGrid.
...
Рейтинг: 0 / 0
10.06.2020, 18:56
    #39968010
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid в режиме MasterDetail
У автора firebird - его средсвами можно что хочешь сделать, и с повтором значений, и без повторов, обычным execute block, или селективной хранимкой. Ежели сложности с конструированием обычного select.
...
Рейтинг: 0 / 0
10.06.2020, 19:13
    #39968017
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid в режиме MasterDetail
DimaBr
alekcvp
У меня есть ТЗ, грубо говоря: "хочу в одной таблице видеть одновременно вот эти данные, но не хочу в ней видеть повторяющиеся значения".

Построй запрос так, чтобы значения не повторялись


Например?..
Есть таблица товар (название, производитель, цена), есть таблица продажи (дата, кол-во, кому), как вывести все продажи за день, чтобы "название, производитель, цена" одного и того же товара не повторялась для каждой продажи?..
...
Рейтинг: 0 / 0
10.06.2020, 19:30
    #39968024
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid в режиме MasterDetail
alekcvp
Есть таблица товар (название, производитель, цена), есть таблица продажи (дата, кол-во, кому), как вывести все продажи за день, чтобы "название, производитель, цена" одного и того же товара не повторялась для каждой продажи?..

Это уже вопрос "научите меня пользоваться SQL". Вариантов сколько угодно, например самый простой:
...
Рейтинг: 0 / 0
10.06.2020, 20:11
    #39968037
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid в режиме MasterDetail
alekcvp
Можно как-нибудь в одном TDBGrid удобно отобразить две таблицы со связями один-ко-многим?

ты про это что ли?

...
Рейтинг: 0 / 0
10.06.2020, 20:19
    #39968042
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid в режиме MasterDetail
softwarer
alekcvp
Есть таблица товар (название, производитель, цена), есть таблица продажи (дата, кол-во, кому), как вывести все продажи за день, чтобы "название, производитель, цена" одного и того же товара не повторялась для каждой продажи?..

Это уже вопрос "научите меня пользоваться SQL". Вариантов сколько угодно, например самый простой:

О, спасибо!
...
Рейтинг: 0 / 0
10.06.2020, 20:20
    #39968043
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid в режиме MasterDetail
Док
alekcvp
Можно как-нибудь в одном TDBGrid удобно отобразить две таблицы со связями один-ко-многим?

ты про это что ли?

Нет, я примерно про то что softwarer выше написал.
...
Рейтинг: 0 / 0
10.06.2020, 20:41
    #39968049
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid в режиме MasterDetail
Пробежал глазами. Не совсем понял что надо. Но если что - в cxGrid есть CellMerging, объединяющий повторяющиеся значения (искаропки)
...
Рейтинг: 0 / 0
10.06.2020, 21:08
    #39968050
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid в режиме MasterDetail
white_nigger,

У ещё cxGrid есть цена для хобби неподъёмная :)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DBGrid в режиме MasterDetail / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]