[ mplex @ 25.06.2008. 22:42 ] @
Evo ovako imam problem sa brisanjem primarnog ključa u relaciji sa nekom tabelom di je strani ključ.

Radim neki program u VB.net 2005 i baza SQL Server 2005. Napravio sam forme za unos itd...
Radi se o tome da NPR. imam tabelu ADRESE I TIP_ADRESE u tabeli tip_adrese upisan je jedan red npr. ID:1 Tip: Privatna
SADA napravim formu za UNOS još tipova Adresa ako korisnik oče . To sve ok radi Update, save,edit.
Međutim ako oču obrisat neki tip_adrese iz tablice pojavi se greška. OK normalno taj ID- tipa adrese je strani ključ u tablici adrese.
AlI automacki mi sve vrati i NIŠTA NE OBRIŠE tj. OSTANU I ONI TIPOVi ADRESA KOJI SE KORISTE i KOJI SE NE KORISTE....ok RejectChanges()- radi integriteta


Kako da zabranim brisanje Tipova adresa koji se več negdje koriste a dozvolim BRISANJE onih koji se još nigdni ne koriste?????????????????????????????????

HVALA svima koji mi pomognu ILI daju LINK na takav sličan problem
[ 01011011 @ 26.06.2008. 06:57 ] @
Prvo obrises strani kljuc, pa onda primarni.

Napisi Stored Procedure, i nju zovi iz koda i posalji joj ID, I onda u stored procedure...

Delete from tip_adrese where id= taj id

delete from adresa where id = tvoj id

TO ti je stored procedura, it o je to...

Naravno, mozes takodje ako neces da brises nista u bazi podataka da napravis polje koje ces nazvati isActive, ili nesto tako i onda ga stavis da bude true ili false. Kada je aktivno nek je 1, a kad ga izbrises samo uradis update tog polja na 0, i poslije samo promjenes malo logiku koja ce ti prikazivati rezultate, i da ne prikazuje one sa isActive = 0. OVO NIJE dobro ukoliko je u pitanju dosta podataka koji se non stop brisu, jer dolazi do pregommilavanja baze.

Poz
[ mplex @ 26.06.2008. 09:09 ] @
OK, to mi je jasno da prvo moram obrist primrni pa strani kljuš. Međutim neželim da korisniku dozvolim brisanje TIPA ADRESE ako se taj tip adrese koristi u tabeli adese...
NPR.
Tabela TIP adrese ima:
ID TIP
1 Privatna - ovaj tip se koristi u aresama
2 Osobna - a ovaj još ne
3 Skladište - ni ova se još ne korisi

I sad korisnik pokrene progam ode do Forme sa tipovima adrese i OČE da obriše TIP adrese Privatna i Osobna, pritisne Delete i dogodi se greška(Privatna se koriti) koju sam prije toga uhvatio u Try.... Pošto je došlo do greške RejectChanges() i program vrati nazat tip PRIVATNA i OSOBNA. A treba SAMO da napravi RejectChanges() na PRIVATNA pošto se na NJOJ DOGODILA GREŠKA...

Eto ako neko razumje problem nek pomaga, HVALA
[ 01011011 @ 26.06.2008. 14:57 ] @
Ti si ustvari sam sebi odgovorio na pitanje a da nisi toga svjestan :) Barem ja tako mislim, ajde da protumacimo sta si htio da uradis.

Evo da kopiram tvoj tekst pa da probam da razjasnim.

Citat:

OK, to mi je jasno da prvo moram obrist primrni pa strani kljuš. Međutim neželim da korisniku dozvolim brisanje TIPA ADRESE ako se taj tip adrese koristi u tabeli adese...

NPR.
Tabela TIP adrese ima:
ID TIP
1 Privatna - ovaj tip se koristi u aresama
2 Osobna - a ovaj još ne
3 Skladište - ni ova se još ne korisi

I sad korisnik pokrene progam ode do Forme sa tipovima adrese i OČE da obriše TIP adrese Privatna i Osobna, pritisne Delete i dogodi se greška(Privatna se koriti) koju sam prije toga uhvatio u Try.... Pošto je došlo do greške RejectChanges() i program vrati nazat tip PRIVATNA i OSOBNA. A treba SAMO da napravi RejectChanges() na PRIVATNA pošto se na NJOJ DOGODILA GREŠKA...

Eto ako neko razumje problem nek pomaga, HVALA


Da bi ovo uradio znaci da zelis da radis "error Handling" i da posaljes pravu poruku korisniku sta se dogodilo. Razmisli sta treba da uradis? Kako ti code izgleda sad trenutno? Kako vracas nazad korisniku da ne moze da obrise. Ne znam koji mehanizam koristis... Uglavnom PREPORUCIO bih ti da pogledas Exception Handlind in SQL ili vec koju bazu koristis.

Tamo uhvatis error i posaljes ga nazad, a onda u SQL Stored Procedure mozes da napises jednostavno

If (NESTO)
BEGIN

END
ELSE IF NESTO DRUGO I TAKO DALJE...

Tako da imas detaljno sta se desava, i onda posaljes samo sta nije radilo...

Nadam se da razumijes... ako ne, posalji code da vidimo.

[ mplex @ 26.06.2008. 17:27 ] @
Vo da ne kopliciram, trebam samo zabranit brisanje Tipa_adrese ako se negdje koristi


Znači treba korisniku reč EJ nemožeš to obrisat zato što taj tip koristiš u adresama....

A ako oče obrisat neki drugi tip koji se ne koristi SVE OK...

Kako to kontrolirat? Treba mi konkretan primjer...



[ 01011011 @ 30.06.2008. 02:11 ] @
kad odem sutra na posao, probacu da ti ispisem nesto, neki pseudocode il nesto pa radi po tome... Ne znam kakva ti je cijela applikacija, ovo sto trazis nije tesko, treba da samo razmislis kako da uradis.
[ mplex @ 30.06.2008. 06:44 ] @
OK, Hvala (samo nek je u VB.net 2005)
[ perolozac123 @ 30.06.2008. 08:28 ] @
jos sam nov u ovome ali koliko sam ja shvatio probaj sa on error resume next i ono sto se koristi jednostavno ce preskociti
[ mplex @ 02.07.2008. 21:40 ] @
Evo problem je riješen, hvala svima na sugestijama....

Običan SQl upit sa prebrojavanjem ID-a...