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

Zabrana preskakanja brojeva novih faktura

[es] :: MS SQL :: Zabrana preskakanja brojeva novih faktura

[ Pregleda: 1417 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vlade_k6
Vlade Rajević
Žegapo

Član broj: 101958
Poruke: 53
*.astra-net.com.



Profil

icon Zabrana preskakanja brojeva novih faktura17.07.2008. u 11:48

Sql baza 2000, tabela fakture. Ne umem da odradim mehanizam za zaštitu preskakanja brojeva faktura, tj često se događa da ako je zadnji broj bio npr 2340, komercijalisti previde i nastave 2431, 2432, 2433... i onda nastaje problem. Da li neko zna da napravi okidač koji će onemogućiti preskakanje brojeva? Kolone koje su bitne su
racunbr - broj računa
racungod - godina računa (07, 08...)
magacin - broj magacina (1,2,3)

Znači bilo bi mi potrebno da okidač proveri prvo koji je magacin u pitanju, pa koja je godina i tek onda da vidi da li je preskočen neki broj. Napominjem da se brojevi u magacinima posebno vode i da od početka godine svi kreću ponovo od 1, 2, 3....
17.07.2008. u 11:48 

priki
Srđan Šurlan

Član broj: 24732
Poruke: 522
*.link.t-2.net.

ICQ: 174153511


Profil

icon Re: Zabrana preskakanja brojeva novih faktura17.07.2008. u 13:48

de pojani malo bolje, ja ovde ne vidim preskakanje

Citat:
vlade_k6:  zadnji broj bio npr 2340, komercijalisti previde i nastave 2431, 2432, 2433... i onda nastaje problem

Znači bilo bi mi potrebno da okidač proveri prvo koji je magacin u pitanju, pa koja je godina i tek onda da vidi da li je preskočen neki broj. Napominjem da se brojevi u magacinima posebno vode i da od početka godine svi kreću ponovo od 1, 2, 3....


inace, imas jednostavan upit koji ti to sredi
°´˙˛`˛°˘^˛ˇ~°°
17.07.2008. u 13:48 

vlade_k6
Vlade Rajević
Žegapo

Član broj: 101958
Poruke: 53
*.astra-net.com.



Profil

icon Re: Zabrana preskakanja brojeva novih faktura17.07.2008. u 18:20
Laptopovi

Pa naveo sam da posle 2340 upišu 2431...
Slažem se da postoji jednostavan upit za ovo, samo mi daj ideju kako da to rešim. :)
17.07.2008. u 18:20 

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1731
79.101.255.*

Sajt: www.clickersoftware.com


Profil

icon Re: Zabrana preskakanja brojeva novih faktura17.07.2008. u 19:02
Pa proveris da li ima prethodni (u tvom slucaju 2430) i ako nema ponistis izmenu, generises error ...
Mozes koristiti insteadofupdate trigger (bilo vec ovde).
vidi GoranVucicevic #28045

www.clickersoftware.com
17.07.2008. u 19:02 

sallle
Sasa Ninkovic
Beograd

Član broj: 146
Poruke: 462
*.adsl.beotel.net.

ICQ: 20785904


Profil

icon Re: Zabrana preskakanja brojeva novih faktura18.07.2008. u 01:01
men se cini da ti je onda koncept los.

ne treba komercijalista da dodeljuje broj racuna posto gresi. umesto da handlujes njegovu gresku, napravi da program dodeljuje broj fakture. a komercijalisti to samo nek se prikaze na ekranu.

prilikom otvaranja forme za fakturu, u polje za broj fakture upisi rezultat upita: select max(isnull(broj_fakture,0))+1 from tabela where magacin = @magacinId and godina=@godinaId.
a ako imas konkurentni rad( vise klijenatA), onda nemoj nista prikazivati, nego prilikom upisa fakture, izvrsi ovaj upit (oboje u istoj transakciji)

ukoliko imas opciju brisanja faktura, imaces opet preskakanje...
18.07.2008. u 01:01 

Koce
Serbia, Belgrade

Član broj: 59217
Poruke: 139
*.vektor.net.



Profil

icon Re: Zabrana preskakanja brojeva novih faktura18.07.2008. u 10:44
I ja se slazem za Sallle-om da ti je koncept los tj da ne treba korisnik da vodi racuna o rednim brojevima. Ako ipak nisi u mogucnosti da mijenjas aplikaciju, mozes to pokusati izvesti sa trigerom, nesto kao:

Create trigger tr_Faktura on fakture
INSTEAD OF insert -- ne treba ti update?
as
declare @br1 as int, @br2 as int
select @br1 = min(broj_fakture) from inserted
select @br2 = max(isnull(broj_fakture, 0)) from fakture --where god...
if @br1 <> @br2 + 1
BEGIN
RAISERROR ('preskocio si broj', 16, 1)
ROLLBACK TRANSACTION
END
else
insert into fakture select * from inserted


napomena da ovo ti radi za red po red, ako nekad upisujes vise redova odjednom (mada kako si objasnio mislim da ne), moraces malo promijeniti ....

ili mozes umjesto ROLLBACK TRANSACTION
staviti
if @@trancount > 0 ROLLBACK TRANSACTION
18.07.2008. u 10:44 

vlade_k6
Vlade Rajević
Žegapo

Član broj: 101958
Poruke: 53
*.astra-net.com.



Profil

icon Re: Zabrana preskakanja brojeva novih faktura18.07.2008. u 14:14
Odlično, ovo šljaka. Za sada nisu dozvolili da se automaski numerišu fakture (da ne pričam što) tako da ću se ovako snaći.

Hvala puno.
18.07.2008. u 14:14 

[es] :: MS SQL :: Zabrana preskakanja brojeva novih faktura

[ Pregleda: 1417 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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