powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
25 сообщений из 73, страница 2 из 3
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496807
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
чччДdefecator..."адрес"...
А в лукап - списке ты отображаешь сразу все атрибуты (поля) сущности?
лукапа нет.
defecatorЯ делаю, чтобы при переходе в ячейку появлялась кнопочка сбоку,
усер нажимает на неё и открывается окно, где он выбирает из справочника, что ему надо
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496808
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
а в самом поле отображается то, что пользователь навводил в сущность "адрес".
функция собирает строку и показывает в колонке грида.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496810
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД> Не, я спрашиваю про то

Ты хочешь за рыбалкой новую систему редактирования
бизнес-метаданных придумать или какая цель?
Потому что у тебя несколько разных вопросов.
На которые могут быть (несколько) разные ответы.

--

P.S. Указать "что делать" можно лишь тремя способами -
- тупо на клиенте (без "своей системы");
- со слоем метаданных, когда есть правила построения
запросов (на чтение, на все редактирования, на выборки
для различных целей и пр.) - тут могут быть подварианты
как и когда эти правила построения формируются
- со слоем метаданных (c или без правила построения
запросов - не суть), но когда эти запросы можно явно
задавать (полностью или кусками, все или не все итдитп).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496812
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

т.е., фактически (в данном случае, не в общем случае), при редактировании реализовалась бы функциональность лукап-полей датасета.

Это несложно сделать прямо в коде, но утомительно. Хорошо бы описывать в какой-нибудь метаструктуре: понятно ведь, что нужно. Хотелось бы узнать, кто и как сие делает у себя.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496817
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам...
P.S. Указать "что делать" можно лишь тремя способами -
- тупо на клиенте (без "своей системы");
- со слоем метаданных, когда есть правила построения
запросов (на чтение, на все редактирования, на выборки
для различных целей и пр.) - тут могут быть подварианты
как и когда эти правила построения формируются
- со слоем метаданных (c или без правила построения
запросов - не суть), но когда эти запросы можно явно
задавать (полностью или кусками, все или не все итдитп).


Отлично классифицировал!

А хорошо бы примеров...
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496820
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator, ОК, я ~ понял, как у тебя визуально.

А решение "вот это поле должно быть с кнопочкой, которое создаст вот это окно" - ты как и когда принимаешь? Ты писал выше, что сервер что-то делает, но ведь на основе каких-то данных.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496822
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, я в отпуск пошел...
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496836
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД> А хорошо бы примеров...

Примеров реализации тоже может быть несколько,
каждый же по-разному лисапеды мастерит.

Во-втором варианте - одна реализация - это когда
есть "поле" city, к нему кроме обычных свойств есть
ещё доп.поля "tablename - city", "fieldname - id",
"displayfields - name" и т.д. Полей displayfields может
быть несколько (для отображения в деталях, для
отображения в окнах выборки и т.д.). Ещё вариант
реализации - это когда к полю city прилагается лишь
поле "entity - city", а все остальные перечисленные
настройки - внутри последнего. И таких вариантов тьма.

В третьем варианте - это когда у тебя кроме доп.полей
есть ещё поля для запросов (много разных), например,
"select id, name from city where id = :cityid". И т.д.

P.S. Приятного отпуска. Нафоткать не забудь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496867
Фотография Kast2K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мы пользуемся EhLib Dbgrid c Row Detail Panel. В ней сразу производится выборка необходимых значений.
Вот пример из демки:
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496877
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДДокпропущено...

Сделай по типу MRUList'а, куда можно подгружать отдельным запросом "склеенные" улицу + город (в котором эта улица гарантированно есть), например после 3-4 введенных символов

Не, я спрашиваю про то, каким образом ты сообщаешь своей системе: "вот это поле редактировать нужно вот так".

Я пишу кодом. Для каждого нетипичного случая пишется свой нетипичный код. Раньше увлекался метаданными и автоматизацией правил, потом понял, что получившееся автоматом чаще всего выглядит кондово.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496892
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для нетипичного-то нетипичный, конечно.
А для типичного можно и типичный, автоматом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496940
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДА результат бы записался sql - предложением
а-а-а, понял. Тебе надо аналог лукап-комбобокса. Если я правильно помню, у Большакова был DBLookUpCombobox, который, будучи лишенным связи с набором данных, становился почти обычным комбобоксом, но при этом имел KeyField и ListField. Можно было отдельным запросом к табле заполнить ListField любым значением и сопоставить каждому item'у его ID. Посмотри реализацию в сорцах эхлиба
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496946
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не нужен ему лукап-комбобокс, имеющихся хватает.
УниверсализЪм ему нужен, чтобы было чем голову на
время отпуска забить. Это временно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496956
Болтаювпт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примерно так:

Код: plaintext
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.
blocks: [
{
  name: "county_cr",
  type: "cursor",
  params: [
    {name: "id", direction: "field", datatype: "int", index_in_key: 1},
    {name: "name", direction: "field", datatype: "string", index_in_name: 1}
  ]
},
{
  name: "city_cr",
  type: "cursor",
  params: [
    {name: "id", direction: "field", datatype: "int", index_in_key: 1},
    {name: "name", direction: "field", datatype: "string", index_in_name: 1},
    {name: "i_country", direction: "in", datatype: "int"},
  ]
},
{
  name: "address_cr",
  type: "cursor",
  params: [
    {name: "id", direction: "field", datatype: "int", index_in_key: 1},
    {name: "full_name", direction: "field", datatype: "string", index_in_name: 1},
    {name: "i_city", direction: "in", datatype: "int"},
  ]
},
{
  name: "set_address",
  type: "procedure",
  params: [
    {name: "id", direction: "in", datatype: "int", visible: false},
    {name: "country", direction: "in", datatype: "int", lookup: {cursor: "country_cr"}},
    {name: "city", direction: "in", datatype: "int", lookup: {cursor: "city_cr", binds: [{dest:"i_country", src:"country"}]}},
    {name: "address", direction: "in", datatype: "int", lookup: {cursor: "address_cr", binds: [{dest:"i_city", src:"city"}]}},
  ]
}
]
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932768
Petrashkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простите, что поднимаю старый топик.
Прочитал пару раз, но решения так и не понял.

Есть набор данных, где одна из колонок Адрес - результат работы функции, которая собирает слова Город, Улица, Дом, Квартира в один стринг.
Код: sql
1.
2.
select *, dbo.ReturnAddress(EMPLOYEE_ID) as Address
  from Employee


Структура такая
Код: sql
1.
2.
3.
4.
5.
EMPLOYEE_ID integer,
CITY_ID integer,   -- к справочнику городов
STREET_ID integer, -- к справочнику улиц
HOUS_ID integer,   -- к справочнику домов
APPARTMENT_NUMBER integer



В гриде у этого поля (Address) редактор TcxButtonEdit
Пользователь нажимает на кнопку, открывается Дерево городов, раскрывая узел показываются улицы, далее номера домов.
Выбирая нужный адрес, возвращаются набор значений (CITY_ID,STREET_ID,HOUS_ID,APPARTMENT_NUMBER), на которые нужно поменять редактирумую строку, и каким то образом нужно изменить текст в колонке Адрес на вновь выбранный.
Подскажите, как это сделать.
Может нужно какой то другой компонент для редактирования в гриде ?
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932782
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petrashkevich
каким то образом нужно изменить текст в колонке Адрес на вновь выбранный.
Подскажите, как это сделать.
Обработчики OnGetDisplayText / OnGetDataText на колонке грида
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932796
Petrashkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ma1tus
Обработчики OnGetDisplayText / OnGetDataText на колонке грида

То есть OnGetDisplayText для всего столбца ?
То есть с клиента спрашивать у сервера результат для каждой строчки ?
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932835
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petrashkevich
То есть с клиента спрашивать у сервера результат для каждой строчки ?

С какого перепугу-то? Ивент вызовется - когда нужно гриду и, когда нужно тебе - проверяй в его обработчике: изменил юзер значение или нет.
Если нет - ничего не делай, пусть выводится "значение из датасета"; если да - подставляй новое значение для ячейки в нужной строке / строках на то время, пока запись не зафиксирована / не отправлена на сервер.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932836
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petrashkevich,

собственно, вообще непонятно в чём трабл. Отправляй изменившиеся данные на сервер и обновляй соответствующую строку в гриде
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932847
Petrashkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ma1tus
Отправляй изменившиеся данные на сервер и обновляй соответствующую строку в гриде

Как обновить одну строку в гриде ?
В Гриде 10 строк. Пользователь становится на вторую нажимает на кнопку в ячейке (cxButtonEdit), выбирает из формы новый адрес. Вот мы получили 4 новых значения. Постим их в таблицу, но в ячейке Address по прежнему старый адрес. Изменить его нельзя, так как поле ReadOnly, формируется результатом функции на сервере.
Куда мне его запомнить, что бы подставить в OnGetDisplayText ?
Потом пользователь становится на третью строчку и тоже меняет адрес, уже нужно помнить два значения, для второй и для третей строки ?
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932860
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petrashkevich
Как обновить одну строку в гриде ?
В некоторых (O/Uni/Fire)DAC'ах есть такая опция. Перезапрашивай всё, наконец, или с этим какие-то затруднения?
Если говоришь "постим их в таблицу", то обработчики - не нужны, о них было в рамках вопроса о компоненте.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932871
Petrashkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ma1tus
Если говоришь "постим их в таблицу", то обработчики - не нужны, о них было в рамках вопроса о компоненте.

Немного неправильно написал.
Записываем в Dataset новые 4 значения. При этом нужно поменять текст в поле Address, на новое.
Может пользователю что-то не понравится и он нажмёт Esc и значения вернутся прежние, соответственно и прежний текст вернуться должен.
Как это реализовать ?
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932879
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petrashkevich
ma1tus
Если говоришь "постим их в таблицу", то обработчики - не нужны, о них было в рамках вопроса о компоненте.

Немного неправильно написал.
Записываем в Dataset новые 4 значения. При этом нужно поменять текст в поле Address, на новое.
Может пользователю что-то не понравится и он нажмёт Esc и значения вернутся прежние, соответственно и прежний текст вернуться должен.
Как это реализовать ?

Что "это"? Изменение текста в поле Address, обработку кнопку ESC или откат изменений в датасете?
Задавай не более одного вопроса на сообщение.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932883
Petrashkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ёёёёё
Что "это"? Изменение текста в поле Address, обработку кнопку ESC или откат изменений в датасете?
Задавай не более одного вопроса на сообщение.

Грид сам делает откат значений.
Как отобразить новое значение в поле, в зависимости от новых значений в других полях, причём эти данные на клиенте и на сервере их ещё нет
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932890
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petrashkevich
ёёёёё
Что "это"? Изменение текста в поле Address, обработку кнопку ESC или откат изменений в датасете?
Задавай не более одного вопроса на сообщение.

Грид сам делает откат значений.
Как отобразить новое значение в поле, в зависимости от новых значений в других полях, причём эти данные на клиенте и на сервере их ещё нет

Ответы обязательно должны учитывать твои заблуждения?
...
Рейтинг: 0 / 0
25 сообщений из 73, страница 2 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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