Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как организовать мастер детайл с компонентами ADO [MSSQL]


Term ©   (2004-09-27 15:23:00) 

Как правильно использовать TADOQuery
не матюкайте
дайте пример для таблиц такой структуры

Master
id bigint identity
name varchar 30

Detail
id bigint identity
id_master bigint
det_name


sniknik   (2004-09-27 16:59:00) [1]

сам смотри что тебе больше подходит
в BOL загляни, IDENT_CURRENT пойдет для > 1, 3 - 4, либо сохрани значение в своей переменной и его используй.


Term   (2004-09-27 16:24:00) [2]


> INSERT INTO Master (NAME) VALUES ('Фирма')
> INSERT INTO Detail (id_master, DET_NAME) VALUES (@@IDENTITY,
> 'Detal')

а если привязанно будет не одна таблица а скажем 3 или 4 то
@@IDENTITY бутем для третьей таблицы от мастеровской таблицы или уже от предыдушего запроса в детальную


sniknik   (2004-09-27 16:21:00) [3]

тогда уж
INSERT INTO Master (NAME) VALUES ('Фирма')
INSERT INTO Detail (id_master, DET_NAME) VALUES (@@IDENTITY, 'Detal')
и все


Term   (2004-09-27 16:15:00) [4]

т.е.

INSERT INTO Master(NAME) VALUES('Фирма');
SELECT @@IDENTITY AS id;
INSERT INTO Detail(id_master, DET_NAME) VALUES(id,'Detal');


Term   (2004-09-27 16:10:00) [5]

т.е. так если что поправьте

INSERT INTO Master(NAME) VALUES('Фирма')
SELECT @@IDENTITY AS id


msguns   (2004-09-27 15:49:00) [6]

Если связь через св-во DataSource, то ничего никуда помещать не надо - оно типа само "разберется", перестроив запрос к деталу автоматически. Но для "осознанного" апдэйта данных ЛИЧНО Я делаю запрос на определение нового астер ID (и не Мастер тоже) отдельно, после чего уже рисую запросы на вставку. При таком подходе я уверен, что никаких эксцессов не возникнет НЕЗАВИСИМО ОТ КОМПОНЕНТОВ, которые я использую для доступа к БД


Johnmen   (2004-09-27 15:39:00) [7]

>Term   (27.09.04 15:36) [2]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1095759267&n=1


Term   (2004-09-27 15:36:00) [8]

да насчёт датасорсурса я в курсе
я вот что имел ввиду
скажем в ADOQuery1  я поместил такой запрос на вставку

insert into master
(name)
VALUES
(:name)


какой запрос надо поместить во второй зависимый компонент чтобы получить значение Master.Id которое выдаст сервер


msguns   (2004-09-27 15:30:00) [9]

Мастер читаешь как обычно, а вот детал..
Стандартный способ указать в его DataSource ссылку на Мастер и связать их через мастер-ключ(в данном случае id). При таком подходе не надо сушить башку для синхронизированного обновление курсора детала. Однако с обновление записей детала (да и мастера) надо быть осторожным, чтоб не порушить эту самую "связь"


Наверх

Титульная страница Поиск, карта сайта Написать письмо