Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zabrana brisanja rekorda/zapisa

[es] :: .NET :: .NET Desktop razvoj :: Zabrana brisanja rekorda/zapisa

[ Pregleda: 1492 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

KizaBG
programer

Član broj: 169491
Poruke: 247
*.adsl-4.sezampro.yu.



+1 Profil

icon Zabrana brisanja rekorda/zapisa20.07.2008. u 11:17 - pre 192 meseci
Zanima me kako vi resavate sledeci problem: Zabraniti brisanje rekorda/zapisa iz Sifarnik tabele, ako se taj rekord vec nalazi u nekoj drugoj tabeli.

U pitanju je Windows aplikacija radjena u VS .NET 2005, C#.

Evo kako to u praksi izgleda:

Postoji tabela Mesto, i MestoID polje se nalazi u gomili drugih tabela : Korisnik, Firma, Kandidat itd. ..

e sada, kako spreciti na formi na kojoj se obradjuje Mesto (ta forma ima kontrole , dodaj, snimi, obrisi itd) , da kada se klikne na Obrisi, ukoliko se to mesto vec pojavljuje u nekoj tabeli, da na ekran korisnika ne izadje poruka sa 50 linija koda, koja uplasi korisnika, a koja kaze da se to Mesto ne moze brisati jer se vec nalazi u tabeli (na primer) Firma ?

Ja sam to ranije u Visual Basicu radio tako, sto sam hvatao broj greske, pa tako, kad hocu da obrisem neko mesto, i ukoliko se ono vec nalazi u nekoj tabeli, stavljao sam kode

if (Err.Number = 654) then
messageBox ("Nije dozvoljeno brisanje, jer se ovo Mesto vec nalazi u nekoj tabeli").

Za ovu .NET aplikaciju ,sam napravio rutinu, mada dugo traje, gde pre brisanja mesta, okine se procedura, koja protrci kroz tabele koje sadrze mesto, i ukoliko se ID Mesta koje hocu da brisem nalazi u nekoj od tabela, dobije se poruka o zabrani brisanja.

LM, kazem, traje dugo, jer mi ta procedura trenutno 'trci' kroz 6-7 tabela.

Ima li neko elegantnije resenje ?

pozdrav i hvala za odgovor.
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-4.sezampro.yu.



+395 Profil

icon Re: Zabrana brisanja rekorda/zapisa20.07.2008. u 12:23 - pre 192 meseci
Referential Integrity and Cascading Actions
http://msdn.microsoft.com/en-us/library/aa933117(SQL.80).aspx
http://msdn.microsoft.com/en-u.../library/aa933119(SQL.80).aspx

Zastita brisanja rekorda ciji primarni kljucevi pripadaju drugim tabelama obavlja sam SQL server ...
Tako da ti je dovoljno u stored proceduri :
Code:

create proc ObrisiMesto @mestoID int 
as
delete from Mesto where MestoID = @mestoID 
if @@error != 0 
begin 
raiserror('nemoguce brisanje mesta bla bla ',16,1) //baca exception iz pozivajeceg .net koda .. 
end 


Isto ovo mozes da uradis i preko ADO.NET-a pa sve to da stavis u try-catch blok ....

Viva lollapalooza
 
Odgovor na temu

KizaBG
programer

Član broj: 169491
Poruke: 247
*.adsl-4.sezampro.yu.



+1 Profil

icon Re: Zabrana brisanja rekorda/zapisa20.07.2008. u 15:29 - pre 192 meseci
Hvala za ideju,
resio ga preko try-catch ali u SQL-u

pozdrav
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Zabrana brisanja rekorda/zapisa

[ Pregleda: 1492 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.