powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
73 сообщений из 73, показаны все 3 страниц
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496689
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Терпеть не могу возиться с лукап - полями, поэтому везде использую какие-нибудь собственные велосипеды.

Расскажите, как вы редактируете наборы данных, сформированные из связанных табличек, вроде такого:

Код: sql
1.
2.
3.
select S.ID STREET_ID, S.NAME STREET_NAME, C.NAME CITY_NAME
from STREET S
join CITY C on S.CITY_ID = C.ID



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

Исходные данные: связанные сущности Город-Улица-Дом:
Таблички
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
/* Город */
CREATE TABLE CITY (
    ID    INTEGER GENERATED BY DEFAULT AS IDENTITY,
    NAME  VARCHAR(128));

/* Улица */
CREATE TABLE STREET (
    ID       INTEGER GENERATED BY DEFAULT AS IDENTITY,
    NAME     VARCHAR(128),
    CITY_ID  INTEGER);

/* Дом */
CREATE TABLE BUILDING (
    ID         INTEGER GENERATED BY DEFAULT AS IDENTITY,
    NUM        VARCHAR(32),
    STREET_ID  INTEGER);

ALTER TABLE STREET ADD CONSTRAINT PK_STREET PRIMARY KEY (ID);
ALTER TABLE CITY ADD CONSTRAINT PK_CITY PRIMARY KEY (ID);
ALTER TABLE BUILDING ADD CONSTRAINT PK_BUILDING PRIMARY KEY (ID);


...данные:
связанные
Код: sql
1.
2.
ALTER TABLE STREET ADD CONSTRAINT FK_STREET_CITY FOREIGN KEY (CITY_ID) REFERENCES CITY (ID);
ALTER TABLE BUILDING ADD CONSTRAINT FK_BUILDING_STREET FOREIGN KEY (STREET_ID) REFERENCES STREET (ID);


... с данными:
данные
Код: sql
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.
INSERT INTO CITY (ID, NAME) VALUES (1, 'Москва');
INSERT INTO CITY (ID, NAME) VALUES (2, 'Киев');
INSERT INTO CITY (ID, NAME) VALUES (3, 'Саратов');

INSERT INTO STREET (ID, NAME, CITY_ID) VALUES (1, 'Ленинский проспект', 1);
INSERT INTO STREET (ID, NAME, CITY_ID) VALUES (2, 'Улица Лобачевского', 1);
INSERT INTO STREET (ID, NAME, CITY_ID) VALUES (3, 'Улица Теплый стан', 1);

INSERT INTO STREET (ID, NAME, CITY_ID) VALUES (4, 'Старонаводницкая улица', 2);
INSERT INTO STREET (ID, NAME, CITY_ID) VALUES (5, 'Московская улица', 2);

INSERT INTO STREET (ID, NAME, CITY_ID) VALUES (6, 'Амурская улица', 3);
INSERT INTO STREET (ID, NAME, CITY_ID) VALUES (7, 'Корсачья улица', 3);

INSERT INTO BUILDING (ID, NUM, STREET_ID) VALUES (1, '1 ', 1);
INSERT INTO BUILDING (ID, NUM, STREET_ID) VALUES (2, '2', 1);

INSERT INTO BUILDING (ID, NUM, STREET_ID) VALUES (3, '2', 2);
INSERT INTO BUILDING (ID, NUM, STREET_ID) VALUES (4, '3', 2);

INSERT INTO BUILDING (ID, NUM, STREET_ID) VALUES (5, '1', 3);
INSERT INTO BUILDING (ID, NUM, STREET_ID) VALUES (6, '22/1', 3);

INSERT INTO BUILDING (ID, NUM, STREET_ID) VALUES (7, '33', 4);
INSERT INTO BUILDING (ID, NUM, STREET_ID) VALUES (8, '44', 4);

INSERT INTO BUILDING (ID, NUM, STREET_ID) VALUES (9, '5', 5);

INSERT INTO BUILDING (ID, NUM, STREET_ID) VALUES (10, '33', 6);

INSERT INTO BUILDING (ID, NUM, STREET_ID) VALUES (11, '22', 7);
INSERT INTO BUILDING (ID, NUM, STREET_ID) VALUES (12, '2/1 А', 7);

COMMIT;


...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496698
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, если нужно именно В ГРИДЕ, то альтернативу лукапным полям придумать сложновато.

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

Код: pascal
1.
2.
3.
4.
select B.ID, C.NAME CITY_NAME, S.NAME STREET_NAME, B.NUM BLD_NUM
from BUILDING B
join STREET S on B.STREET_ID = S.ID
join CITY C on S.CITY_ID = C.ID   



Хочется не просто выбирать город и улицу из списков. Хочется , чтобы если уже была выбрана Москва, в списке доступных улиц были доступны только улицы Москвы.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496700
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Я делаю, чтобы при переходе в ячейку появлялась кнопочка сбоку,
усер нажимает на неё и открывается окно, где он выбирает из справочника, что ему надо.

P.S. но обычно стараюсь в самом гриде не давать ничего редактировать
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496701
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийну, если нужно именно В ГРИДЕ, то альтернативу лукапным полям придумать сложновато.

зы: у нас в конторе для редактирования записи обычно везде вызываются специальные диалоговые окна.

Ну, в общем, несущественно, в окне или в гриде. В последнем случае лишь элемент редактирование нужно каким-то образом в ячейку грида впихнуть.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496703
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorЯ делаю, чтобы при переходе в ячейку появлялась кнопочка сбоку,
усер нажимает на неё и открывается окно, где он выбирает из справочника, что ему надо.

P.S. но обычно стараюсь в самом гриде не давать ничего редактировать

Да бог с ним, с гридом. Вопрос был в том, как ты описываешь сценарий редактирования конкретного поля.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496705
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я так понимаю, проблема только в фильтрации?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496707
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
чччДdefecatorЯ делаю, чтобы при переходе в ячейку появлялась кнопочка сбоку,
усер нажимает на неё и открывается окно, где он выбирает из справочника, что ему надо.

P.S. но обычно стараюсь в самом гриде не давать ничего редактировать

Да бог с ним, с гридом. Вопрос был в том, как ты описываешь сценарий редактирования конкретного поля.

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

Нет проблемы :).

Когда-то я делал "это" прямо в коде, потом появился простой визуальный редактор, теперь (в новом продукте) хочется "все переделать".

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

А откуда сервер знает, что, например, для редактирования "лукапного" поля "City" нужно показывать в списке не только название улицы, но и название города (ну, так захотелось разработчику / заказчику)?
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496713
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
чччДdefecator...
запрос для грида формируется на сервере,
оттуда же приходит и служебная информация,
какой справочник для какого поля подцепить.

А откуда сервер знает, что, например, для редактирования "лукапного" поля "City" нужно показывать в списке не только название улицы, но и название города (ну, так захотелось разработчику / заказчику)?

Ну если лукапное поле City, то это однозначно City, а не Street
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496719
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorчччДпропущено...


А откуда сервер знает, что, например, для редактирования "лукапного" поля "City" нужно показывать в списке не только название улицы, но и название города (ну, так захотелось разработчику / заказчику)?

Ну если лукапное поле City, то это однозначно City, а не Street
1. А если надо ("хочется"), чтобы в лукап -списке было и имя улицы, и имя города (улица ведь в городе, ОК?).

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

А откуда сервер знает, что, например, для редактирования "лукапного" поля "City" нужно показывать в списке не только название улицы, но и название города (ну, так захотелось разработчику / заказчику)?
из дополнительных метаданных
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496723
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosчччДпропущено...


А откуда сервер знает, что, например, для редактирования "лукапного" поля "City" нужно показывать в списке не только название улицы, но и название города (ну, так захотелось разработчику / заказчику)?
из дополнительных метаданных

Каких - "дополнительных"? Как эти метаданные создаются, какую имеют (примерную) структуру?
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496728
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
чччДdefecatorпропущено...


Ну если лукапное поле City, то это однозначно City, а не Street
1. А если надо ("хочется"), чтобы в лукап -списке было и имя улицы, и имя города (улица ведь в городе, ОК?).

2. А если в улице больше ("информационных") полей, чем в моем примере - ты их в се в лукап - списке показываешь?
ну так если было City, а потом заказчику захотелось ещё и улицу,
то структуру данных придётся поменять и справочник создавать/расширять.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496772
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДViPRosпропущено...

из дополнительных метаданных

Каких - "дополнительных"? Как эти метаданные создаются, какую имеют (примерную) структуру?
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496780
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД1. А если надо ("хочется"), чтобы в лукап -списке было и имя улицы, и имя города (улица ведь в городе, ОК?).
Сделай по типу MRUList'а, куда можно подгружать отдельным запросом "склеенные" улицу + город (в котором эта улица гарантированно есть), например после 3-4 введенных символов
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496785
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorчччДпропущено...

1. А если надо ("хочется"), чтобы в лукап -списке было и имя улицы, и имя города (улица ведь в городе, ОК?).

2. А если в улице больше ("информационных") полей, чем в моем примере - ты их в се в лукап - списке показываешь?
ну так если было City, а потом заказчику захотелось ещё и улицу,
то структуру данных придётся поменять и справочник создавать/расширять.

Ну вот в схеме 20682788 City и Street - разные таблички.
Для лукап-представления, отображающего список значений поля City_Id таблички Building, достаточно их City и Street:

Код: sql
1.
2.
3.
select S.ID, C.NAME CITY_NAME, S.NAME STREET_NAME
from STREET S
join CITY C on S.CITY_ID = C.ID   


- без расширения структуры. Твой сервер такие вещи понимает?
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496787
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
чччДdefecatorпропущено...

ну так если было City, а потом заказчику захотелось ещё и улицу,
то структуру данных придётся поменять и справочник создавать/расширять.

Ну вот в схеме 20682788 City и Street - разные таблички.
Для лукап-представления, отображающего список значений поля City_Id таблички Building, достаточно их City и Street:

Код: sql
1.
2.
3.
select S.ID, C.NAME CITY_NAME, S.NAME STREET_NAME
from STREET S
join CITY C on S.CITY_ID = C.ID   



- без расширения структуры. Твой сервер такие вещи понимает?

у меня есть сущность "адрес", которая (сущность) собирается из разных табличек
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496791
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
а в этой сущности "адрес" ты волен уже заполнять её как угодно, хоть только город, хоть город-улица, хоть округ-город-улиа-дом
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496793
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокчччД1. А если надо ("хочется"), чтобы в лукап -списке было и имя улицы, и имя города (улица ведь в городе, ОК?).
Сделай по типу MRUList'а, куда можно подгружать отдельным запросом "склеенные" улицу + город (в котором эта улица гарантированно есть), например после 3-4 введенных символов

Не, я спрашиваю про то, каким образом ты сообщаешь своей системе: "вот это поле редактировать нужно вот так".
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496799
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator..."адрес"...
А в лукап - списке ты отображаешь сразу все атрибуты (поля) сущности?
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496801
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДвот это поле редактировать нужно вот так
расшифруй :)
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39496806
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокчччДвот это поле редактировать нужно вот так
расшифруй :)
Ну вот смотри, запрос: 20682780

Код: sql
1.
2.
3.
select S.ID STREET_ID, S.NAME STREET_NAME, C.NAME CITY_NAME
from STREET S
join CITY C on S.CITY_ID = C.ID


В гриде получаем примерно такую картинку:


Я хочу редактировать поле CITY_NAME, чтобы по клику появился выпадающий список с городами.
А результат бы записался sql - предложением:

Код: pascal
1.
2.
3.
update street
set
city_id = <выбранное в таблице City значение id>
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #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
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932896
Petrashkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ёёёёё
Ответы обязательно должны учитывать твои заблуждения?

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

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

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

добавь в запрос null as "соседнее_поле"
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932910
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Del
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932913
Petrashkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ma1tus
добавь в запрос null as "соседнее_поле"

Добавил, но оно тоже ReadOnly.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932917
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petrashkevich,

У вас адрес - Lookup-поле? Или вы его физически протянули в НД? Т.е. грид у вас привязан к одному запросу, в т.ч. и поле "Адрес"?
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932924
Petrashkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
goldmi45
Т.е. грид у вас привязан к одному запросу, в т.ч. и поле "Адрес"?

Грид привязан к датасету, поле Адрес - результат функции которая формирует текст по 4 значениям таблички (CITY_ID,STREET_ID,HOUS_ID,APPARTMENT_NUMBER)
Код: sql
1.
select *, dbo.ReturnAddress(EMPLOYEE_ID) as Address from Employee



У вас адрес - Lookup-поле?
Классический Лукап - это поле ID в исходном Датасете и отдельный Датасет с перечнем подстановочных значений.

У меня 4 поля в датасете и пятое Адрес - текстовая сборка с четырёх справочников.
Я на колонке Адрес повесил редактор cxButtonEdit, по нажатию кнопки выбираю новый Адрес, полученные 4 значения присваиваю в Датасет. Теперь нужно как то изменить текст в поле Адрес. Поле ReadOnly так как это результат функции.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932926
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petrashkevich
оно тоже ReadOnly.

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

Код: sql
1.
select *, dbo.ReturnAddress(EMPLOYEE_ID) as Address from Employee



У вас адрес - Lookup-поле?

Классический Лукап - это поле ID в исходном Датасете и отдельный Датасет с перечнем подстановочных значений.

У меня 4 поля в датасете и пятое Адрес - текстовая сборка с четырёх справочников.
Я на колонке Адрес повесил редактор cxButtonEdit, по нажатию кнопки выбираю новый Адрес, полученные 4 значения присваиваю в Датасет. Теперь нужно как то изменить текст в поле Адрес. Поле ReadOnly так как это результат функции.

Т.е. на вход функции ReturnAddress передаётся идентификатор человека, а не адрес??? Тогда пока новый адрес не запишется в таблицу, откуда функция берёт значение - никак.

Вариант - править ReturnAddress (или делать новую функцию), чтобы она по адресу (идентификатор улицы, номер дома, квартиры) формировала строку, которую можно было вызвать на клиенте, передавая в неё новые данные. Тогда это поле (Адрес) можно сделать Lookup.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932935
Petrashkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ma1tus
Что мешает поменять для него эту настройку ?

Код: pascal
1.
2.
3.
4.
Dataset['CITY_ID'] := NewCITI_ID;
Dataset['Address'] := NewAddres;
...
Dataset.Post; // тут на сервер полетит новое значение поля Адрес ?




goldmi45Вариант - править ReturnAddress (или делать новую функцию), чтобы она по адресу (идентификатор улицы, номер дома, квартиры) формировала строку, которую можно было вызвать на клиенте, передавая в неё новые данные. Тогда это поле (Адрес) можно сделать Lookup.
А Lookup по какому полю ?
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932941
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petrashkevich
Код: pascal
1.
2.
3.
4.
Dataset['CITY_ID'] := NewCITI_ID;
Dataset['Address'] := NewAddres;
...
Dataset.Post; // тут на сервер полетит новое значение поля Адрес ?


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

Не знаю. Используется ADOQuery. Где можно задать какие поля полетят на сервер ?
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932953
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petrashkevich
goldmi45Вариант - править ReturnAddress (или делать новую функцию), чтобы она по адресу (идентификатор улицы, номер дома, квартиры) формировала строку, которую можно было вызвать на клиенте, передавая в неё новые данные. Тогда это поле (Адрес) можно сделать Lookup.

А Lookup по какому полю ?
При формировании lookup-поля задаются key fields и lookup keys. Т.е. можно по нескольким полям сделать lookup.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932969
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petrashkevich, а вообще, можно сделать поле адрес - вычисляемым (calc) и в событии OnCalcField вычислять его по другим полям. Тогда будет то поведение, которое вы хотите: Вы будете устанавливать 4 поля адреса, эти 4 поля будут передаваться в процедуру, которая по ним будет возвращать строку адреса, и вот эту строку вы и будете отображать в гриде. Тогда при нажатии ESC вернутся старые значения полей.
Теоретически такое можно конечно сделать. Но если у вас в гриде будет 100500 человек, то будет 100500 запросов по адресу. И всё это ради того, чтобы пользователь имел возможность нажать ESC, если он увидел, что неправильно ввёл адрес до того, как этот адрес улетел на сервер.
И встаёт вопрос "зачем такое поведение"?

Сделайте процедуру, которая возвращает людей и их адреса
Field type commentEMPLOYEE_ID integer идентификаторEMP_FIO string ФИОCITY_ID integer к справочнику городовSTREET_ID integer к справочнику улицHOUS_ID integer к справочнику домовAPPARTMENT_NUMBER integerADDRESS string адрес
В гриде отображаете 2 поля - ФИО и адрес.
У поля адрес делаете кнопку "редактировать", по кнопке поднимаете диалог с выбором адреса. Как только пользователь выберет адрес (т.е. будут готовы все 4 поля), вы записываете этот адрес в базу. Потом делаете рефреш данных (или одной записи, если позволяет датасет) и позиционируетесь на запись, которую пользователь редактировал.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39932977
Petrashkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
goldmi45
При формировании lookup-поля задаются key fields и lookup keys. Т.е. можно по нескольким полям сделать lookup.

Тогда Датасет для Лукапа нужно построить не по всем возможным адресам, а только по тем которые есть в результирующем наборе ?

Получается, открываем запрос из EMPLOYEE, потом пробегаем по всему полученному датасету и складываем в отдельный Датасет для Лукапа поля 1+2+3+4 и Адрес. А на сервере формируем такое же комбинированное поле 1+2+3+4.
Код: sql
1.
2.
3.
select *, dbo.ReturnAddress(EMPLOYEE_ID) as ADDRESS, 
       CITY_ID+STREET_ID+HOUS_ID+APPARTMENT_NUMBER as LOOKUP_ID
 from Employee


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
begin
  EmployeeShow.Open;
  EmployeeShow.DisabledControls;
  while not EmployeeShow.EOF do
  begin
    if not LookupDataset.Locate('LOOKUP_ID',EmployeeShow['LOOKUP_ID'],[]) then
    begin
      LookupDataset.Append;
      LookupDataset['LOOKUP_ID'] := EmployeeShow['LOOKUP_ID'];
      LookupDataset['ADDRESS'] := EmployeeShow['ADDRESS'];
      LookupDataset.Post;
    end;
    EmployeeShow.Next;
  end;
  EmployeeShow.First;
  EmployeeShow.EnabledControls;
end;



Так ?
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39933272
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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), на которые нужно поменять редактирумую строку, и каким то образом нужно изменить текст в колонке Адрес на вновь выбранный.
Подскажите, как это сделать.
Может нужно какой то другой компонент для редактирования в гриде ?


Я конечно извиняюсь, но у Вас лыжи в гамаке из-за неправильной организации данных в БД. У Вас нарушение 5 нормальной
формы, иными словами, судя по Вашему алгоритму действий, атрибуты, которые Вы пытаетесь хранить в таблице взаимозависимы.
Если HOUS_ID является последним элементом в Вашей иерархии, то в таблице храните только это значение, если-же последним элементом иерархии является номер комнаты, то достаточно в таблице хранить только уникальный индекс комнаты. Зная уникальный номер комнаты вы всегда можете восстановить (вычислить) и дом, и улицу и город.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39933285
Petrashkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zeon11
Зная уникальный номер комнаты вы всегда можете восстановить (вычислить) и дом, и улицу и город.

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

Тогда храни только улицы. После коммита ID улицы на сервер, вычитывай на клиента вычисляемое поле , напр. FullAddress,
где будут отражаться "Страна+Область+Город+Улица", ну и отдельными полями, если надо, дом и квартира
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39933317
Petrashkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zeon11
Тогда храни только улицы. После коммита ID улицы на сервер, вычитывай на клиента вычисляемое поле , напр. FullAddress,
где будут отражаться "Страна+Область+Город+Улица", ну и отдельными полями, если надо, дом и квартира

Не важно что хранить. Важно понять(разработать) методику "составного Лукапа" и способ редактирования его в гриде.
Наверняка у каждого есть такой Лукап, но все почему то молчат как у них это реализовано
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39933320
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как уже сказал кто-то выше, редактировать прямо в гриде на определенном жизненном этапе перестает казаться правильным :)
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39933328
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petrashkevich
zeon11
Тогда храни только улицы. После коммита ID улицы на сервер, вычитывай на клиента вычисляемое поле , напр. FullAddress,
где будут отражаться "Страна+Область+Город+Улица", ну и отдельными полями, если надо, дом и квартира

Не важно что хранить. Важно понять(разработать) методику "составного Лукапа" и способ редактирования его в гриде.
Наверняка у каждого есть такой Лукап, но все почему то молчат как у них это реализовано


У меня такой был, но потом потерялся в 90-х, за ненадобностью. Но если серьёзно хочется, то сделай маленькую формочку, которую вызывай по событию выпадающего списка какого-либо лукапа и передавай туда фокус ввода. Естественно положение этой формочки при отображении надо рассчитывать, чтобы она выглядела по-месту, как выпадающий список. На показ стандартного лукапа надо поставить заглушку. Ну, а в самой показываемой форме делай какие хочешь компоненты отображения, запросы, деревья и т.п.
...
Рейтинг: 0 / 0
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
    #39933339
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petrashkevich,
ещё, как вариант, сделать датасет в памяти, с ним резвиться, накатывать изменения, откатывать, и только когда пользователь созрел, отправлять данные на сервер.
А лучше, всё-таки, об этом уже тут говорили, сделать редактируемую карточку записи и пускай пользователь что хочет, то и делает.
...
Рейтинг: 0 / 0
73 сообщений из 73, показаны все 3 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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