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

Вниз

Delphi 5.0 InterBase 6.0   Найти похожие ветки 

 
mad0max   (2002-05-14 04:49) [0]

Народ!!! Help please!!
Тупой вопрос.
Имеется база - в базе табличка и три процедуры: на добавление, изменение, удаление записи.
В Delphi беру компонент TIBQuery заполняю пропертя как надо + ложу IBUpdateSQL. Прописываю в в скриптах на добавление, обновление, удаление - вызов процедур. Схема до тупого проста.

Запускаю приложение, независимо от того какие действия произвожу(изменение, добавление, удаление) - делаю сохрание а прога мне дает обшибку Update Failed, хотя все изменение в таблице сохраняются

Что за маразм? Мож кто знает?
Если использовать Delphi ADO MS SQL Server - все проходит на ура и никаких проблем


 
fnatali   (2002-05-14 06:04) [1]

Эта ошибка, скорее всего, возникает из-за попытки изменения более,чем одной записи. Проверь - update должен делаться для одной записи. Если я ничего не путаю.


 
mad0max   (2002-05-14 06:11) [2]

to fnatali

Да нет конечно же :0)

Тут все правильно! Я говорю, что если использовать Delphi ADO MS SQL Server, все работает, тут видимо или в движке проблема(Interbase), или в компонентах


 
Johnmen   (2002-05-14 09:18) [3]

>...Схема до тупого проста...

А есть еще проще - TIBDataSet - и никаких проблем !



 
mad0max   (2002-05-14 12:00) [4]

to Johnmen

Базара нет - есть такой компонент!!! Но почти те же траблы а именно:
Прописываю InsertSQL, DeleteSQL, ModifySQL те же процедуры что и опи сывал выше. Говорю сохранить, а он мне говорит, что-то параметры процедур у тебя не заданы. Смотрю через монитор, а там действительно все параметры NULL!!

Могет подскажешь как быть?



 
Johnmen   (2002-05-14 12:14) [5]

Что-то не догоняю...
Если InsertSQL, DeleteSQL, ModifySQL прописаны идеологически верно, то проблем быть не должно...
Если все-таки есть - приведи подробности....


 
mad0max   (2002-05-14 12:57) [6]

to Johnmen

Ну как пишу например IBDataSet.InsertSQL

EXECUTE PROCEDURE Element_Insert(:Name, :Number)

Конечно же Name и Number - поля НД который возвращается в IBDataSet


 
Johnmen   (2002-05-14 13:10) [7]

IBDataSet.InsertSQL :

INSERT INTO ... (Name,Number) VALUES(:Name,:Number)



 
mad0max   (2002-05-14 13:22) [8]


Да не хочу я через insert! Я через процедуры хочу
В этом -то и прикол! Через обычные INSERT, UPDATE, DELETE все получается но мне надо не это, а изменение через хранимые процедуры


 
Johnmen   (2002-05-14 13:29) [9]

А можно поинтересоваться, зачем именно так ?


 
mad0max   (2002-05-14 13:41) [10]

to Johnmen

Потому что запись добавляется сразу в несколько таблиц.
Триггера вешать не хочется.

Работал по такой схеме с SQL ыукмук, все ок а тут вот не получается


 
Johnmen   (2002-05-14 14:04) [11]

Придется тебе подрихтовать идеологию...
Используй IBStoredProc...

Не думаю, что схема с SQL ыукмук была такой же :))


 
mad0max   (2002-05-14 14:10) [12]

to Johnmen

>>схема с SQL ыукмук да схема как надо :)))

На самом деле действительно там все работает.

А вот IBStoredProc я использовать не хочу!
А если у меня штук 10 объектов? 30 IBStoredProc!! БРРРР
Можно динамически менять имя процедуры, но енто я думаю маразм!
Придется свой iBUpdateSQL писать


 
Fareader   (2002-05-14 14:45) [13]

Можно было конечно написать и одну ХП (для вставки, удаления, изменения), описать нужные запросы, а потом передав определенный флаг - выполнить нужные действия


 
mad0max   (2002-05-14 14:52) [14]

to Fareader

Можно но ядумаю это не есть гут


 
Fareader   (2002-05-14 15:14) [15]

Это почему? тогда не будет вот этого:
>>А если у меня штук 10 объектов? 30 IBStoredProc!! БРРРР


 
mad0max   (2002-05-14 15:24) [16]

Бардак в базе!!
Уж лучше компонент написать, в котором 3 IBStoredProc и все проблемы, прописать каждой процедуре свое дейсвие и все.

Но блин как геморойно!!! Я понимаю MS - must die но тут ребята постарались как надо, работать просто класс, но где взять столько денег на движок?


 
Johnmen   (2002-05-14 15:35) [17]

Все описанные геморрои - надуманны....


 
Fareader   (2002-05-14 15:43) [18]

2Johnmen - полностью согласен.


 
mad0max   (2002-05-14 15:52) [19]

to Johnmen Fareader

Не скажите друзья мои!!! Конечно несложно но

1. Писать лишний раз компонент - трата времени
2. Триггера - увеличивается время обработки данных
3. Куча одинаковых компонентов на форме(Датамодуле) - рябит в глазах, пока найдешь, что надо

Вот так-то! Из всех зол надо выбрать меньшее и однако меньшее это написать свой компонент.

Спасибо что откликнулись, не буду занимать вашего времени


 
Fareader   (2002-05-14 15:52) [20]

А тебе нужно одну и туже запись в разных таблицах и править и вставлять и удалять? Может БД спроектирована неверно? А программа более развернутое сообщение не дает кроме Update failed?


 
Johnmen   (2002-05-14 15:55) [21]

>mad0max (14.05.02 15:52)
>1.
это верно...
>2.
это неверно...
>3.
это верно...


 
mad0max   (2002-05-14 16:05) [22]

to Fareader

База реализована в виде объектов. Есть начальный объект от которого наследуются потомки. Так вот надо сохранять и родителя и потомка

to Johnmen

Почему ты думаешь, что на скорость не повлияет количесво триггегов? А если их 4-5 на одну операцию?


 
Fareader   (2002-05-14 16:12) [23]

А зачем тебе 4-5 тригеров на одну операцию?


 
Johnmen   (2002-05-14 16:12) [24]

1.Объекты и потомки в IB ??? Ты не путаешь ее с Oracle8 ?
2.А ты почему думаешь, что множественные вызовы ХП работают быстрее триггеров ? :)))


 
mad0max   (2002-05-16 07:03) [25]

to Johnmen Fareader

Вы будете смеяться (зато как я поматерился)

Помните я писал
>>Ну как пишу например IBDataSet.InsertSQL
>>EXECUTE PROCEDURE Element_Insert(:Name, :Number)

Ну кто же мог подумать, что названия полей надо писать большими буквами!!!

EXECUTE PROCEDURE Element_Insert(:NAME, :NUMBER)


Короче полез в сырцы IBUpdateSQL, IBDataSet, IBQuery - там багов немеряно!!! Я даже не захотел ничего делать - опустились руки.

Решил поработать IBDataSet, пишу название полей большими буквами :( , блин, вот так




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

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

Наверх





Память: 0.5 MB
Время: 0.007 c
6-18089
Quasi
2002-03-27 02:06
2002.06.06
Динамическое получение порта


7-18176
XOY
2002-03-08 17:54
2002.06.06
Как набреть номер


3-17763
Gor001
2002-05-15 12:20
2002.06.06
Как выгрузить отработавший запрос в DBF


3-17790
RDA
2002-05-15 21:43
2002.06.06
Запрос в связанных таблицах


1-17945
Explorer
2002-05-28 09:56
2002.06.06
QReport





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский