Problem s Delphi i Interbase !?!

9 отговора 155 прегледа
#1

Problem s Delphi i Interbase !?!

Imam sledniqt problem:
Imam database na Interbase 5.5 koiato sudurja tablica xxx. Definiral sum trigger za neia - trig_xxx - zadeistva se "before insert". Izpolzvam go s generator, no tova ne e vajno. Problema e che Delphi 5 klientyt ne iska da go zadejstva po nikakuv nachin. Ot konzolata na samia Interbase server vsichko e nared, no ot Delphi ne stava. Interesno che triggerite za "update" i "delete" srabotvat.
Vprochem Delphi programata mi izpolzva standartni dataware controls, za da insert-ne nov red.
Ste sum blagodaren ako niakoj mi pomogne.

Отговор
в отговор на creator #2

Re: Problem s Delphi i Interbase !?!

По какво считате, че не се задейства тригера? Че не се попълват данните? Не вярвам!
Може ли малко по-подробноописание на проблема? Защото ако Ви дава key violation (или както там се казваше в Interbase - отдавна не съм работил с него), можеби проблема е че подавате null стойност на поле, което е част от PK. В този случай независимо от тригера в базата опрерацията не успява!

Nihil tam munitum quod non expugnari pecuna possit
Отговор
в отговор на creator #3

Re: Problem s Delphi i Interbase !?!

Кажи какво си написал в тригера пък ще видим...

Отговор
в отговор на creator #4

Re: Problem s Delphi i Interbase !?!

Ami da ne bi da se opitwash da ustanowish stojnosti w niakoi poleta - a pak w twoiata programa kato dadesh AppendRecord ili InsertRecord da ne wizdash tezi stojnosti ???? - towa li e problema

Ako e towa polzwaj stojnosti po podrazbirane - ina4e ima reshenie na gornoto ama e mnogo losho (ili pone az se sestam za takowa)

---
Е т'ва е живот!
Отговор
в отговор на creator #5

Re: Problem s Delphi i Interbase !?!

Tialoto na trigera e slednoto(citiram po pamet):
new.x_id:=Gen_id(gen_x,1);
gen_x e generator;
x_id e purvoto primary key pole na tablicata. Iskam da go populvam avtomatichno (kato autoincrement poleta, koito gi niama w Interbase, a gi ima v Paradox naprimer).
Iskam pri appendvane(insertvane) na nov red vuv dadenata tablica(v Delphi), tova pole da se populne avtomaticno ot tialoto na trigera i to pri append chrez DB controla (primerno DBGrid), a ne
chrez izvikvane na metodi i prochie...
Standartna tehnika no ne srabotva...

Отговор
в отговор на creator #6

Re: Problem s Delphi i Interbase !?!

CREATE TRIGGER SET_LOG_ID FOR LOG ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.LogID = GEN_ID(LOG_ID_GEN, 1);
NEW.Vreme = 'NOW';
END

Ей това е от работеща програма.

Да не си забравил да напишеш ACTIVE ?

POSITION е ако има няколко тригера за BEFORE INSERT в какъв ред да се изпълняват

Отговор
в отговор на creator #7

Re: Problem s Delphi i Interbase !?!

Ooo, извинявай не обърнах внимание, че ти каза, че тригера е работел през конзолата.

Има някъде нещо скапано в библиотеките, които ползваш....

Ако държиш да ползваш IB 5 поне си вземи IB 5.6, че в 5.5 казват,че имало сериозен бъг.
Иначе ти препоръчвам InterBase FireBird ([линк])
И си дръпни последна версия на IBX компонентите (ако тях позлваш) за това виж на ib.demo.ru - downloads

Отговор
в отговор на creator #8

Re: Problem s Delphi i Interbase !?!

Добре, а какъв е резултата?
Имате запис, но без стойност в това поле?
Или въобще Delphi-то хвърля Exception и не се вмъква запис?

Nihil tam munitum quod non expugnari pecuna possit
Отговор
в отговор на Draco #9

Re: Problem s Delphi i Interbase !?!

Казах: работеща програма.

Всичко е OK.
Имам актуален уникален номер в полето.

Отговор
в отговор на Draco #10

Re: Problem s Delphi i Interbase !?!

Ne se podava ochakvanata stojnost i kato rezultat ne moga da post-na zapisa.
A inache zapisa se vmukva korektno. Wprochem problema ne e nito w "position", nito w "active"

Отговор