Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Расскажите, как вы организуете редактирование связанных табличек (в гриде, например) / 25 сообщений из 73, страница 1 из 3
28.07.2017, 14:16
    #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
28.07.2017, 14:18
    #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
28.07.2017, 14:24
    #39496698
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
ну, если нужно именно В ГРИДЕ, то альтернативу лукапным полям придумать сложновато.

зы: у нас в конторе для редактирования записи обычно везде вызываются специальные диалоговые окна.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.07.2017, 14:24
    #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
28.07.2017, 14:25
    #39496700
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
Я делаю, чтобы при переходе в ячейку появлялась кнопочка сбоку,
усер нажимает на неё и открывается окно, где он выбирает из справочника, что ему надо.

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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


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

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

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

Каких - "дополнительных"? Как эти метаданные создаются, какую имеют (примерную) структуру?
...
Рейтинг: 0 / 0
28.07.2017, 16:04
    #39496780
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
чччД1. А если надо ("хочется"), чтобы в лукап -списке было и имя улицы, и имя города (улица ведь в городе, ОК?).
Сделай по типу MRUList'а, куда можно подгружать отдельным запросом "склеенные" улицу + город (в котором эта улица гарантированно есть), например после 3-4 введенных символов
...
Рейтинг: 0 / 0
28.07.2017, 16:07
    #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
28.07.2017, 16:09
    #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
28.07.2017, 16:10
    #39496791
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
а в этой сущности "адрес" ты волен уже заполнять её как угодно, хоть только город, хоть город-улица, хоть округ-город-улиа-дом
...
Рейтинг: 0 / 0
28.07.2017, 16:11
    #39496793
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
ДокчччД1. А если надо ("хочется"), чтобы в лукап -списке было и имя улицы, и имя города (улица ведь в городе, ОК?).
Сделай по типу MRUList'а, куда можно подгружать отдельным запросом "склеенные" улицу + город (в котором эта улица гарантированно есть), например после 3-4 введенных символов

Не, я спрашиваю про то, каким образом ты сообщаешь своей системе: "вот это поле редактировать нужно вот так".
...
Рейтинг: 0 / 0
28.07.2017, 16:14
    #39496799
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
defecator..."адрес"...
А в лукап - списке ты отображаешь сразу все атрибуты (поля) сущности?
...
Рейтинг: 0 / 0
28.07.2017, 16:16
    #39496801
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите, как вы организуете редактирование связанных табличек (в гриде, например)
чччДвот это поле редактировать нужно вот так
расшифруй :)
...
Рейтинг: 0 / 0
28.07.2017, 16:24
    #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
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Расскажите, как вы организуете редактирование связанных табличек (в гриде, например) / 25 сообщений из 73, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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