Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190
iCentar » Racunari i oprema » Programirannje i baze podataka » Access » Redni brojevi, kako izbjeći greÅ¡ku?
pmiroslav 16.04.2014 11:33
Predmet:Redni brojevi, kako izbjeći greÅ¡ku?

Pozdrav.

U funkciji imama dio kojim određujem broj gotovinskog računa:
PreuzmiIzvorni kôd (vbnet):
  1. Dim I As Integer
  2. I = DMax("[FiskalniBroj]", "tblProdaja") + 1
  3. Me.FiskalniBroj = I

Brojevi idu u nizu 1,2,3,4 itd.
U par navrata dogodilo se iz meni nepoznatog razloga da se jedan broj preskoči, a kako brojevi računa moraju imati jedinstveni slijed, to se ne smije događati.
Ima li prijedlog kako da spriječim preskakanje broja.

nevsad 16.04.2014 12:57
Predmet:Re: Redni brojevi, kako izbjeći greÅ¡ku?

I =nz(DMax("[FiskalniBroj]", "tblProdaja")) + 1

ja koristim jos nz

pokusaj
pozdrav

zxz 16.04.2014 13:05
Predmet:Re: Redni brojevi, kako izbjeći greÅ¡ku?

Do preskakanja bi moglo doci zbog jednovremenosti u mrezi tj. da se desi da dvoje zajedno sa dva razlicita compa rade.
Jos se moze desiti i ako neko udje pa otvori novi rekord te ga pobrise i onda ne izlazi nego nastavi.
Najbolji i najsigurniji nacin je da nema brisanja.

Dobro bi bilo kada bi dokucio kada se to desava pa bi se mozda moglo vise uciniti.
Ovako mozes jos napraviti provjeru tj. da provjris koliko imas rekorda u tabeli jer broj rekorda +1 bi bio tvoj novi broj.

Gjoreski 16.04.2014 15:34
Predmet:Re: Redni brojevi, kako izbjeći greÅ¡ku?

Kaj mene nema preskoknuvajne bidejki kako sto rece ZXZ nema brisejne na racunite , odnosno ima samo korekcija na nekoi polijna dokolku e potrebno, inaku jas kaj mene zemam vo obzir poveke parametri za redniot broj kako sto e Magacinot,Tip na dokument i slicni raboti.

pmiroslav 16.04.2014 17:16
Predmet:Re: Redni brojevi, kako izbjeći greÅ¡ku?

Citiraj zxz:
Do preskakanja bi moglo doci zbog jednovremenosti u mrezi tj. da se desi da dvoje zajedno sa dva razlicita compa rade.
Jos se moze desiti i ako neko udje pa otvori novi rekord te ga pobrise i onda ne izlazi nego nastavi.
Najbolji i najsigurniji nacin je da nema brisanja.

Dobro bi bilo kada bi dokucio kada se to desava pa bi se mozda moglo vise uciniti.
Ovako mozes jos napraviti provjeru tj. da provjris koliko imas rekorda u tabeli jer broj rekorda +1 bi bio tvoj novi broj.
U ovom slučaju je samo jedan korisnik tako da mogu isključiti uzrok zbog jednovremenosti. Pitao sam korisnika dali se desilo neÅ¡to nepredviđeno a on mi kaže da nije
A Å¡to se tiče provjer koliko ima rekorda i to sam imao:

I = DCount("[FiskalniBroj]", "tblProdaja") + 1

I tu su zapravo počeli problemi

imam recimo : 1,2,3,4,6. Znači zadni broj je 6, a imam pet rekorda pa se ponovo generira broj 6 i dobijem duli broj u primarnom ključu

zxz 16.04.2014 17:57
Predmet:Re: Redni brojevi, kako izbjeći greÅ¡ku?

Uf to mijenja stvar ako ima samo jedan korisnik.
Njabolje bi bilo kada bi imao neki laksi primjer ako ne probaj ovako:
Na on current stavi sledeci kod.
I = DCount("[FiskalniBroj]", "tblProdaja") + 1
me.fiskalniBroj.defaultValue=I

Naravno polje FiskalniBroj mora biti zakljucano.

Gjoreski 16.04.2014 19:19
Predmet:Re: Redni brojevi, kako izbjeći greÅ¡ku?

Jas kaj mene go imam vaka reseno

Smetka_Broj.DefaultValue = SlijedenBroj()

Private Function SlijedenBroj()
Dim Broj As String
Broj = DMax("Smetka_Broj", "tblSmetki", "Magacin=" & Forms![frmLogon]![cboMagacin]) + 1
If IsNull(Broj) Or Broj = "" Then Broj = 1
SlijedenBroj = Broj
End Function

pmiroslav 16.04.2014 21:24
Predmet:Re: Redni brojevi, kako izbjeći greÅ¡ku?

Stavit ću skraćeni primjer u kojem se javlja problem. Namjerno sam prekočio jedan broj da se vidi Å¡to se deÅ¡ava.
Prilozi:
probaMp.rar (Velicina datoteke:23.63 KB)

Gjoreski 16.04.2014 21:51
Predmet:Re: Redni brojevi, kako izbjeći greÅ¡ku?

eve probaj vaka
Prilozi:
probaMp.rar (Velicina datoteke:31.10 KB)

zxz 16.04.2014 22:13
Predmet:Re: Redni brojevi, kako izbjeći greÅ¡ku?

Razlog preskakanja je to sto ako pogrijesis nacin placanja pa se vratis nazad da promijenis sada ce ponovo upisati broj koji je veci ne za 1 od trenutnog.
Najbolje bi bilo staviti sve na dfault value kao sto je Gjoreski predlozio medjutim kod tebe to nemoze koliko sam mogao zakljuciti jer ti ides redno za svaki nacin placanja zasebno pa se nemoze generisati broj prije odabira nacina placanja.
Preostaje ti da ovo svoje pokrpas:
PreuzmiIzvorni kôd (Visual Basic):
  1. Private Sub NacinPlacanjaID_AfterUpdate()
  2. Dim I As Integer
  3. Dim criterij As String
  4.  
  5. criterij = "NacinPlacanjaID=" & Me.Fiskal    ' Number
  6. I = DCount("[OrderID]", "tblProdaja", criterij) + 1
  7. Select Case Me.Fiskal
  8. Case 1      'Gotovina, fiskalni ra
  9. un
  10.  
  11. If Me.FiskalniBroj = 0 Then
  12.     Me.FiskalniBroj = I
  13. End If
  14.  
  15.     'Me.FiskalFormat = I & "/" & DLookup("OznakaPP", "Q_Firma") & "/1"
  16.  
  17.  
  18. Case Else   'Ostali na
  19. ini plaanja
  20.    
  21. End Select
  22. End Sub