|
|
|
Помогите связать 2 таблицы!
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть две таблицы с отношением один ко многим. Стандарное отображение Master->Detail. Таблица_1 Таблица_2 ФИО Ед_изм Колво_1 Колво_2 Колво_3 Иванов штуки 1 2 3 1.Мне необходимо отобразить их в ОДНОЙ СТРОКЕ: Использую хранимую процедуру: формированию Select с полями из основного файла + цепляю поля из дочерней таблицы. Выводит. 2. Теперь этот гибрит надо КОРРЕКТИРОВАТЬ: а. Добавление и удаление производится в хранимой процедуре. Это решается. б. а вот РЕДАКТИРОВАТЬ??? Поля основной таблицы модифицируются, а вот как добраться к полям дочерней таблицы??? Если корректировать напрямую, то посылается запрос типа "UPDATE dbo.RelateUser SET [Колво]=50 WHERE [Код_связи]=1 AND [Колво]=40 AND [Код связи]=3" - т.е. в качестве условия передаются значения всех ключевых полей, учавствующих в записи. Может использовать предстваления с триггером Instead OF - но он не выдает таблиц inserted и deleted - не находит записи??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2002, 13:10:50 |
|
||
|
Помогите связать 2 таблицы!
|
|||
|---|---|---|---|
|
#18+
Я подобное решал ХП(написанны на каждый чих юзера). Береться запись на редактирование,редактируетьяс,обновляеться - перечитывается представление ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2002, 14:22:18 |
|
||
|
Помогите связать 2 таблицы!
|
|||
|---|---|---|---|
|
#18+
Спасибо за надежду! Только можно ли поподробнее : где подцепить эту ХП. Может найдется и пример. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2002, 18:43:06 |
|
||
|
Помогите связать 2 таблицы!
|
|||
|---|---|---|---|
|
#18+
Может использовать предстваления с триггером Instead OF - но он не выдает таблиц inserted и deleted - не находит записи??? В Instead OF триггерах "старые" значения хранятся в самой таблице, а не в таблице deleted. На то они и Instead OF триггера. А таблица inserted по-прежнему содержит "новые" значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2002, 00:41:58 |
|
||
|
Помогите связать 2 таблицы!
|
|||
|---|---|---|---|
|
#18+
Спасибо за замечание про триггер Insted OF (не встречал в книгах). Только проблему это не решает. Попытался сделать view - на половину помогает: можно написать запрос, в котром явно указать поле (точнее его алиас, под которым его создали в view) - позволяет корректировать. Однако, если корректировать (например, из enterprise), то выдается запрос типа { UPDATE dbo.RelateUser SET [Наименование связи]='Код 1' WHERE [Код польз]=24 AND [Код связи]=1 AND [Наименование связи]='Код1' AND [Код польз]=24 AND [Код связи]=3 AND [Наименование связи]='Код3' AND [Код польз]=24 AND [Код связи]=4 AND [Наименование связи]='Код 4' } но я хочу КОРРЕКТИРОВАТЬ только поле [Наименование связи] c значением ключевых полей [Код польз]=24 AND [Код связи]=1 КАК БЫТЬ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2002, 13:40:20 |
|
||
|
Помогите связать 2 таблицы!
|
|||
|---|---|---|---|
|
#18+
View становится обновляемым, если у него есть instead-триггеры. Если нет, то - увы... Для того, чтобы instead-триггер отрабатывал, необходимо создать VIEW с опцией WITH (VIEW_METADATA). В некоторых случаях во VIEW необходимо явно сделать поле "вычисляемым", чтобы совместно с instead-триггером оно корректно работало. Я обычно это делаю как-то так: CAST(SomeField as varchar(100)) as AliasName. А есть еще другие способы, реализация которых зависит от клиента. Если клиент ADP (Access), то там у формы есть свойства для превращения необновляемого Recordset-а в обновляемый (с помощью UniqueTable и Resinc Command). В Delphi можно вообще создать свои события и их обработчики. В общем, возможностей - море. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2002, 13:57:02 |
|
||
|
Помогите связать 2 таблицы!
|
|||
|---|---|---|---|
|
#18+
Добрый день! >КАК БЫТЬ??? Посмотреть внимательно на оператор UPDATE. На самом деле Вы пытаетесь обновить некоторое подмножество записей в дочерней таблице, которые не совпадают ни по какому признаку. Это в лоб не просто. Вы шифруете отношение один ко многим одной строкой (Я так поняла, что не запись, а именно строка?). Значит должна быть процедура дешифрования, где из одной строки получается много записей на стороне "многие". В INSTEAD OF триггере и придется это делать. Есть еще решение в лоб. У Вас, как Вы сказали, есть процедуры добавления и удаления - вот и удаляйте и добавляйте:-))))) Кстати, как работает у вас добавление? Корректирование м.б. аналогичным. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2002, 15:34:29 |
|
||
|
Помогите связать 2 таблицы!
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за ответы!!! Буду пробовать: A.instead триггеры на view B.или писать процедуру корректировки, хотя не хотел делать, да придется - клиента пишу на Дельфи, а он "сам" формирует запрос на обновление (причем не всей записи, а только измененных полей) - а так придется делать подмену обновлять всю запись! PS: У Вас форум живой - задавал ответы на relib.com, в Королевстве Дельфи, мастера дельфи - ответов 0.5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2002, 12:15:06 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32063523&tid=1819188]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
31ms |
get topic data: |
8ms |
get forum data: |
11ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 312ms |

| 0 / 0 |
