Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];

Вниз

CashedUpdates на результат SP   Найти похожие ветки 

 
koks   (2003-04-01 14:08) [0]

Уважаемые мастера !

Подскажите, как грамотно наложить на результат SELECT-а из Suspend-процедуры кэшированные изменения...
SUSPEND - процедура производит объединение 5-ти таблиц. Че-то я совсем запутался - что надо обновлять - то ли пять таблиц через IBUdateSQL для каждой, то ли через вызовы отдельных SP (для обновления, удаления, вставки), которые уже будут разносить данные по таблицам.


 
koks   (2003-04-01 15:45) [1]

ПАМАГИТЕ !!!


 
zacho   (2003-04-01 16:46) [2]

Кэшированные или нет, здесь роли не играет.
И вообще, для подобных целей советую использовать TIBDataSet.
Теперь конкретнее :)
1. А ты уверен, что тебе надо вносить изменения во все 5 таблиц ? Просто наиболее типичная ситуация, когда объединение нескольких таблиц делается для того, чтобы вытащить данные из "справочников" на которые ссылается "основная" таблица. В этом случае, как правило, редактировать "справочники" не надо, достаточно вносить изменения в "основную" таблицу. Т.е. в SelectSQL пусть будет что-то типа SELECT ID,FILED_1,FIELD_2,..,FIELD_N FROM MY_SP(:PARAM_1,..), в ModifySQL - UPDATE MY_TABLE SET FIELD_1=:FIELD1, ... WHERE ID=:ID и т.п.
2. Действительно, надо вносить изменения во все связанные таблицы. Сделать это можно несколькими способами, один из самых простых - создать SP для вставки и модификации данных. Тогда в ModifySQL - EXECUTE PROCEDURE MY_UPDATE_PROC(:ID,FIELD_1,...) и т.д.
3. Если в SP у тебя только простой SELECT с объединением таблиц без каких-либо вычислений и т.п. то можно сделать аналогичный VIEW с триггерами BEFORE UPDATE, BEFORE INSERT, BEFORE DELETE и из приложения работать с ним как с обычной таблицей.


 
koks   (2003-04-02 09:35) [3]

2 zacho . Во-первых, большое спасибо за подробный ответ.
Во-вторых - по порядку:

1. 5 таблиц менять - уверен. Там у меня справочников нет вообще. Все справочники я использую только через lookup-поля ... принципиально.

2. Я так и сделал - создал 3 SP: SP_MODIFY, SP_DELETE, SP_INSERT
(c рефрешем понятно). с соответствующими параметрами. Только в Firebird EXECUTE PROCEDURE MY_SP :param <- запускается без скобок. Так вот в IBUpdateSQL в соответствующем ******SQL вызывал соответствующую SP. - Delphi ругался... В ран-тайме при вызове ApplyUpdates вылетало исключение Update failed. Мне показалось (чисто интуитивно :)) что ошибка идеологическая - т.е. типа свойства IBUpdateSQL.*****SQL не понимают вызов EXECUTE PROCEDURE

3. Интересный вариант кроме одного - читаю этот форум регулярно - многие не советуют использовать Veiews, тем более обновляемые.


 
zacho   (2003-04-02 09:44) [4]


> при вызове ApplyUpdates вылетало исключение Update failed.

Так происходит потому, что ожидается RowsAffected=1, а при вызове SP RowsAffected возвращает 0. Т.ч. тебе просто надо обработать эту ошибку.

> 3. Интересный вариант кроме одного - читаю этот форум регулярно
> - многие не советуют использовать Veiews, тем более обновляемые.

С чего бы это ? Я проблем не замечал.


 
koks   (2003-04-02 11:05) [5]

Zacho - так-так, уже теплее... Можно маленькое уточнение - в каком событии мне надо анализировать этот RowsAffected..

Заранее большое спасибо...


 
Johnmen   (2003-04-02 11:27) [6]

Не надо тебе ничего анализировать !
см.
>zacho © (01.04.03 16:46)
>>И вообще, для подобных целей советую использовать TIBDataSet.



 
zacho   (2003-04-02 11:27) [7]

Проще всего плюнуть на IBQuery и использовать IBDataSet - в нем все нормально работает.


 
koks   (2003-04-02 11:55) [8]

Хорошо - если я ВАС правильно понял, то в IBDataSet в свойствах ******SQL можно свободно использовать, например:

EXECUTE PROCEDURE Modify_SP
:param1
:param2
:param3

или как...


 
zacho   (2003-04-02 12:00) [9]


> koks © (02.04.03 11:55)

Можно, можно ...
А не быстрее ли попробовать, чем ждать ответа ?



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.017 c
14-67439
Agent[007]
2003-04-03 13:16
2003.04.21
Вот ка бывает...


1-67360
veb
2003-04-09 17:03
2003.04.21
Как компонентам присвоить иконки


4-67647
Eug201
2003-02-11 08:48
2003.04.21
SetWindowsHookEx(WH_MOUSE,@MouseHook,HInstance,0)


7-67589
romychk
2003-03-04 11:16
2003.04.21
Запуск приложения на перле из Д под FreeBSD


1-67345
DeMoN-777
2003-04-09 16:42
2003.04.21
Есть ли стандарная ф-ия





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский