powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
25 сообщений из 73, страница 1 из 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
25 сообщений из 73, страница 1 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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