Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.06;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.011 c
1-17997
antonyo
2002-05-23 12:19
2002.06.06
Вопрос по Teidt???


1-17917
stupid
2002-05-27 16:58
2002.06.06
Как получить цвет в шестнадцатиричном виде в компонент Edit1?


4-18196
SPeller
2002-04-05 13:43
2002.06.06
GetLastError


1-17924
stupid
2002-05-23 17:51
2002.06.06
Как проиграть wav файл, который находится в DLL?


14-18139
LP
2002-05-03 10:08
2002.06.06
Компонент TChart