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

Numaracija u formatu int\year

[es] :: Pascal / Delphi / Kylix :: Numaracija u formatu int\year

[ Pregleda: 1813 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

popmilan76

Član broj: 295089
Poruke: 1337
*.dynamic.isp.telekom.rs.



+5 Profil

icon Numaracija u formatu int\year14.10.2019. u 14:01 - pre 54 meseci
Kada hocu da numerisem neki,recimo radni nalog,do sada sam obicno koristio brojeve,pa count +1 za svaki sledeci.Medjutim,sada iz odredjenog razloga,mi treba da bude u formatu 3-2019.Dakle redni broj \ godina,i da sledeci bude 4-2019, da kada bude nova godina krene od 1-2020.Kako to izvesti?
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Numaracija u formatu intyear14.10.2019. u 14:30 - pre 54 meseci
Par resenja:
- cuvaj samo redni broj (4 umesto 4/2019) a godinu uzmi iz datuma dokumenta.
- procitas poslednji dodeljeni (4/2019), razdvojis na delove i dodas 1 na prvi deo.
 
Odgovor na temu

popmilan76

Član broj: 295089
Poruke: 1337
*.dynamic.isp.telekom.rs.



+5 Profil

icon Re: Numaracija u formatu intyear14.10.2019. u 14:46 - pre 54 meseci
I mislio sam tako...a kako cu da krece od 1 ako nova godina?
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Numaracija u formatu intyear14.10.2019. u 15:30 - pre 54 meseci
> I mislio sam tako...a kako cu da krece od 1 ako nova godina?

Ako nema drugih dokumenata u tekucoj godini onda stavi 1.
BTW mislim da je bolje da ti samo ponudis broj, a da korisnik sam moze to da promeni u sta zeli.
 
Odgovor na temu

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
93.140.85.*



+4 Profil

icon Re: Numaracija u formatu intyear14.10.2019. u 16:21 - pre 54 meseci
> BTW mislim da je bolje da ti samo ponudis broj, a da korisnik sam moze to da promeni u sta zeli.

Mislim da je ovo jaaako loša ideja. Imat češ istih brojeva koliko hočeš.

Ja sam dodao field "godina" u koji upisujem godinu računa (izdvojena iz datuma), pa je select jednostavan. Suvišan podatak, može i iz datuma, ali mi je ovako zgodnije, a i kasnije je preglednije.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Numaracija u formatu intyear14.10.2019. u 17:06 - pre 54 meseci
> Mislim da je ovo jaaako loša ideja. Imat češ istih brojeva koliko hočeš.

Broj dokumenta mora biti jedinstven, ako pricamo o fakturama, profakturama (cak i delovodniku), korisnici zahtevaju izbor broja dokumenta, na softveru je da to isprati.
 
Odgovor na temu

popmilan76

Član broj: 295089
Poruke: 1337
*.dynamic.isp.telekom.rs.



+5 Profil

icon Re: Numaracija u formatu intyear14.10.2019. u 17:33 - pre 54 meseci
Ja sam mislio ovako ,da ovaj broj ide redom,da napravim kolonu gde je samo godina,i da kao broj radnog naloga ili dokumenta bude string 2-2019,dvojku vuce iz rednog broja,godinu iz godine a novu da napravim kveri da krece od 1 ,posto je curernt year <> godina...
 
Odgovor na temu

bokinet

Član broj: 29844
Poruke: 574



+50 Profil

icon Re: Numaracija u formatu intyear15.10.2019. u 11:22 - pre 54 meseci
Verovatno koristite bazu gde cuvate info. oko izdatih dokumenata (fakutre, profakture i sl.).

Predlog resenja:

- U bazi gde se cuvaju dokumenta za svaki dokument dodeliti jedinstveni broj (recimo DokumentID) koji nema veze sa brojem dokumenta koji se pojavljuje na samome dokumentu tj. 1...n/yyyy gde je n broj dokumenta a yyyy godina u kojoj je isti izdat;

- U delu gde se cuvaju osnovne informacije o dokumentu u bazi dodati polje broj dokumenta staviti da je recimo numerickog tipa ili kako vec je potrebno - mozda text/string;

- U programu napraviti f-ju koja vraca prvi sledeci broj za NOVI dokument gde je ulazna vrednost godina za koju se kreira broj dokumenta (ovo je na nivou aplikacije ali moze i na nivou same baze);

Primer tabele za osnovne info. o dokumentu koji se cuva u bazi (bez statvki dokumenta - posebna tabela):

[Dokumenta]
DokumentID
TipDokumentaID (faktura, profaktura, fiskalni racun...)
BrojDokumenta
DatumIzdavanja
MestoIzdavanjaID
...


Tako da pozivanjem f-je u app se vrsi generisanje novog broja dokumenta gde je ulazna vrednost datum/godina, f-ja potom vraca odgovarajuci format broja dokumenta kako je potrebno.

Isto ovo moze da se odradi i pomocu vec predefinisanih procedura (stored procedure) na DBMS nivou i onda istu proceduru pozvati po potrebi kako bi se izbeglo mesanje BI i DBMS dela a sto opet zavisi od koncepta i logike koja se koristi prilikom izrade samog projekta. Ovim nacinom bi se onda generisanje brojeva mozda cak i ubrzalo ali i bilo sutra prakticnije za odrazavanje ako je potrebno menjati nesto i u samom formatu (onda nemate potrebu da menjate aplikaciju).

Sto se tice setovanja brojaca da krene od 1 za svaku godinu, vi kada pozivate f-ju mozete da stavite da je podrazumevani parametar uvek tekuca godina koja se iscitava iz trenutnog datuma;

Nadam se da ce ova nabacana pisanija pomoc.

p.s.
- nema potrebe dodavati posebno godinu kao polje iz razloga sto vec imate datum izdavanja dokumenta i na osnovu te vrednosti uvek mozete dobiti godinu cak i kao izvedeno polje preko f-ja i na samom DBMS nivou tj. upita;

- deo oko genersianja novog broja se vrsi recimo kreiranjem SELECT upita nad dokumentima gde se uzima najveci broj dokumenta za vremenski period od godinu dana gde je godina i period napravljen i dobijen od ulazne vrednosti (godina-yyyy) tj. 01/01/yyyy - 31/12/yyyy ili ako je datum onda mogu i varijacije gde bi se f-ja prosirila za neke dodatne potrebe oko generisanja vrednosti - recimo do tog datuma od pocetka godine ili samo za taj datum i sl. - stvar slucajeva i potreba. Pomocu SELECT upita takodje kada se kreira izvestaj ili vrsi stampanje od datuma izdavanja uvek moze da se izvuce godina i da se ista u odgovarajucem obliku 'doda i zalepi' pored broj dokumenta kada se vrsi stampanje kao i da se naprave gotovi upiti za ove potrebe.


 
Odgovor na temu

Milan Milosevic

Član broj: 67
Poruke: 932
*.dynamic.isp.telekom.rs.



+31 Profil

icon Re: Numaracija u formatu intyear15.10.2019. u 14:35 - pre 54 meseci
Čuvaj odvojeno redni broj i godinu.

Code:

uses DateUtils;

var
  Godina,redniBroj:Word;

...
očitaš Godina,redniBroj

begin
  if YearOf(ToDay) <> Godina then
  begin
     Godina:= YearOf(ToDay);
    redniBroj:=0;
  end;
   inc(redniBroj);
      Rezutat:=Format('%d'-%d',[redniBroj,Godina])
end;
...
snimiš Godina,redniBroj
 
Odgovor na temu

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
*.adsl.net.t-com.hr.



+4 Profil

icon Re: Numaracija u formatu intyear15.10.2019. u 16:32 - pre 54 meseci
- nije dobra verzija za redni broj računa staviti char polje, treba integer, razlog? select max(redn_broj) neće vratiti ispravnu vrijednost kao što niti sort ne radi ispravno ako se integer upisuje kao text.
Code:

select max(broj_fakture) as broj from fakture where extract(year from datum_fakture) = 2018

ili

select max(broj_fakture) as broj from fakture where godina_fakture = 2018


u prvom primjeru godina se isčitava iz datuma fakture, a u drugom se koristi posebni field za godinu. Meni osobno je pogodniji prvi jer nemam nepotrebne godine i upisa...

U Delphi-u učitaš Qry.FieldByName('broj').asInteger + 1 što ti daje sljedeći redni broj.
Ako je prva faktura u godini, select će vratiti NULL, ali će ti ga Delphi "asInteger" vratiti kao "0".

Godinu šalješ kao parametar tako da ne mijenjaš qry.
Normalno, u where možeš ubaciti i tip dokumenta ako su ti u istoj tablici npr:
where godina = :godina and tip_dok = :tip_dok
 
Odgovor na temu

popmilan76

Član broj: 295089
Poruke: 1337
*.dynamic.isp.telekom.rs.



+5 Profil

icon Re: Numaracija u formatu intyear17.10.2019. u 10:40 - pre 54 meseci
Da,hvala svima na pomocu,ali cu videti ako budem mogao bez toga vraćanja i da samo ispisuje na preview jer tu i treba,a da vraća i ne mora,jer bih morao da menjam i bazu,a to mi je posao,kada nisam u startu predvideo to.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Numaracija u formatu int\year

[ Pregleda: 1813 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

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