kristina_ksk Zagreb
Član broj: 184917 Poruke: 2 *.adsl.net.t-com.hr.
|
Radim diplomski na Oraclu 9.i developer suite, forms bilder
Program je za knjižnice.
Na formi za povrat, postavljen je gumb koji nakon unosa id-a (barcod) vrača ime, prezime, datum posudbe.
Isti gumb upisuje datum vračanja, računa zakasninu i upisuje ju u tablicu POSUDBA
Sve radi OK osim dijela koji mora zapisati povrat u tablicu.
dio trigera:
UPDATE POSUDBA
SET DATUM_VRACANJA = datum_vracanja, ZAKASNINA = zakasnina
WHERE POSUDBA.ID_DOKUMENTA = dokument_id AND POSUDBA.DATUM_VRACANJA IS NULL;
commit;
Ako je upisan "commit" pri izvršenju dobijem grešku: FRM-40508: ORACLE error: unable to INSERT record.
Ako se ne upiše u trigeru "commit", poruka o grešci se ne generira, ali niti upis u bazu.
Napominjem: u treigeru ne postoji INSERT.
Molim pomoć ako ikako može i to što prije. Ovo je posljednje što mi je još ostalo za napraviti, a rok za predaju je utorak...
|
|
| |
|
alfa00 Belgrade
Član broj: 173850 Poruke: 12 93.86.61.*
|
Pretpostavljam da je u pitanju "when button pressed" trigger
Za pocetak proveri koliko redova vraca tvoj upit
select datum_vracanja, zakasnina
from posudba
where POSUDBA.ID_DOKUMENTA = dokument_id AND POSUDBA.DATUM_VRACANJA IS NULL;
proveri da li tu nije problem ako hoces da uradis update jednog sloga a upit vraca malo vise redova. Uzgered commit bi trebao da stoji.
Pozz!
|
|
| |
|
aldabic Serbia
Član broj: 18240 Poruke: 98 *.premiumsoft.co.yu.
|
kada uradis commit, u bazu se upisuje ne samo taj update koji pominjes, nego i sadrzaj popunjenog bloka (ako je bazni blok).
Kada uradis commit, i kada ti pokaze gresku, stisni kombinaciju CTRL + SHIFT +E, dobices gresku. Verovatno si zaboravila da na formu postavis neko obavezno bazno polje.
|
|
| |
|
franjo_tahi Franjo Tahi Zagreb
Član broj: 34712 Poruke: 399 *.adsl.net.t-com.hr.
|
Pomažem pri radu, ona je sada na fax-u.
u trigeru "when button pressed" selekitraju se određeni podaci. Na formi su samo text edit box-ovi (mislim da se tako zovu, ja radim u drugom jeziku, s drugim alatima), nema niti jednog povezanog s bazom.
Po koracima:
1. Unese se id knjige koja se vraća
2. Prisitkom na button:
3. Selektiraju se podaci o članu i knjizi te upisuju u text box-ove
4. Selektira se datum posudbe, od njega se oduzima current_date te ako je veći od 30, razlika se množi s 0.5 i upisuje u text box kao zakasnina
5. Radi se update sloga u POSUDBA, upisuje se datum povrata i iznos zakasnine
select datum_vracanja, zakasnina
from posudba
where POSUDBA.ID_DOKUMENTA = dokument_id AND POSUDBA.DATUM_VRACANJA IS NULL;
vraća jedan slog.
Bem... ti alat... bem... ti bazu...
|
|
| |
|
djoka_l Beograd
Član broj: 56075 Poruke: 3570
Jabber: djoka_l
|
Iz tvog opisa se ne vidi gde se generiše greška (koji triger je generiše).
Prvo što bih ja uradio je da na nivou cele forme napravim triger ON-INSERT koji ima samo komandu null;
Tako ćeš biti sigurna da se neće desiti slučajan insert.
|
|
| |
|
franjo_tahi Franjo Tahi Zagreb
Član broj: 34712 Poruke: 399 *.adsl.net.t-com.hr.
|
Na formu je postavljen samo taj triger.
greška se javi kada se nakun
UPDATE POSUDBA SET ....
doda
COMMIT
ako se COMMIT izostavi, greška se ne javlja.
|
|
| |
|
alfa00 Belgrade
Član broj: 173850 Poruke: 12 93.86.61.*
|
Pogledaj kad pustis formu u run time-u meniju pod help -> display error , mozda dodjemo do greske
Pozz
|
|
| |
|
kristina_ksk Zagreb
Član broj: 184917 Poruke: 2 *.adsl.net.t-com.hr.
|
Problem riješen
Koliko sam sada shvatio: forma, nakon upisa u bilo koji txt field na sebi može biti samo u insert ili qry modu...
Prije sam pokušavao, bez izvršenja qry-a koji bi vratio aktivni podatak napraviti update. Do podataka sam dolazio u trigeru.
Cijelu stvar smo malo okrenuli, najprije vrtimo qry s id_clana i id_knjige, a onda radimo update i commit u WHEN-BUTTON-PRESS treigreu i sve radi ok.
U svako slučaju, hvala na pomoći, a od Oracla se držim što dalje, bar s ovakvim alatima...
|
|
| |
|