Bosna i Hercegovina



#1 11.05.2012-07:53
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,407


Subject: Generiranje broja dokumenta
Imam 'tblDokumenti' u koju upisujem zajedno više vrsta skladišnih dokumenata:
Predatnica gotovih proizvoda
Međuskladišna otpremnica
Povratnica
Primka

Ovisno o vrsti dokumenta koje određuje izbor sa Combom 'idDokumenta' broj dokumenta (text box 'BrojDok') bi trebao ispred broja imati različiti prefiks

Predatnica gotovih proizvoda > GP*0001
Međuskladišna otpremnica > MO*0001
Povratnica > PO*0001
Primka > PR*0001

Problemi je što mi se bez obzira na prefiks uvijek generira slijedeći veći broj, a želi bi da mi brojevi idu redom ovisno o prefiksu.

GP*0001; GP*0002; GP*0003
MO*0001; MO*0002

itd

Kod na formi:
DownloadIzvorni kod (vb.net):
  1. Private Sub IDdokumenta_AfterUpdate()
  2. Dim Prefix As String
  3.  
  4. Select Case Me.IDdokumenta
  5.  
  6. Case 2 ' Primka PR
  7. Me.Skladiste_Label.Caption = "KONTO"
  8. Prefix = "PR*"
  9. Me.BrojDok = BrojDokumenta(Prefix)
  10.  
  11. Case 3 'Predatnica GP
  12. Me.Skladiste_Label.Caption = "KONTO"
  13. Prefix = "GP*"
  14. Me.BrojDok = BrojDokumenta(Prefix)
  15.  
  16. Case 4 'Povratnica
  17. Me.Skladiste_Label.Caption = "KONTO"
  18. Prefix = "PO*"
  19. Me.BrojDok = BrojDokumenta(Prefix)
  20.  
  21. Case 10 'Meuskladišna otpremnica
  22. Me.Skladiste_Label.Caption = "SKLADIŠTE"
  23. Prefix = "MO*"
  24. Me.BrojDok = BrojDokumenta(Prefix)
  25.  
  26. End Select
  27. End Sub

Modul:
DownloadIzvorni kod (vb.net):
  1. Function BrojDokumenta(Pref As String)
  2. Dim Db As Database
  3. Dim SQL As String
  4. Dim Rs As Recordset
  5. Dim i As Integer
  6.  
  7. Set Db = CurrentDb
  8.  
  9. SQL = "SELECT Max(Right(BrojDok,4)) FROM tblDokumenti"
  10. Set Rs = Db.OpenRecordset(SQL)
  11. If Format$(Rs.Fields(0)) <> "" Then
  12. i = Val(Rs.Fields(0))
  13. End If
  14. i = i + 1
  15. BrojDokumenta = Pref & Format(i, "0000")
  16. Rs.Close
  17. Set Db = Nothing
  18. End Function


Prilozi:
Informacije o fajlu: rar  PrimjerBrDoc.rar
Preuzimanja: 139
Veličina: 18.38 KB


Pozdrav
↑  ↓

#2 11.05.2012-10:07
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,407


Subject: Re: Generiranje broja dokumenta
Ipak sam nakon dosta muke našao rješenje. U modulu asm ispravio SQL

SQL = "SELECT Max(Right(BrojDok,4)) FROM tblDokumenti WHERE Left(BrojDok,3)= '" & Pref & "'"
Pozdrav
↑  ↓

#3 12.05.2012-19:29
dex Offline
Super Moderator
Registrovan/a od: 23.02.2012-19:59
Komentari: 611


Subject: Re: Generiranje broja dokumenta
Evo ovako je jednostavnije. Obrati paznju da sam u tabelu tblDokumenti dodao polje BrDok kao integer, jer je mnogo komotnije traziti max nedju brojevima. U tabelu tblTransakcijeVrsta dodao sam polje prefix jer mi se tako ucinilo da je najlakse izvuci prefix za odredjenu vrstu dokumenta. Za izvor forme sam postavio QryDokumenti, tako mi je bilo najlakse da izvucem prefix. Pogledaj dogadjaj after update za IDdokumenta na formi. Pozdrav
↑  ↓

#4 12.05.2012-19:37
dex Offline
Super Moderator
Registrovan/a od: 23.02.2012-19:59
Komentari: 611


Ocjena: Ocjena:100 Subject: Re: Generiranje broja dokumenta
Uf! Dok provalim kako se upladuje

Prilozi:
Informacije o fajlu: rar  PrimjerBrDocDex.rar
Preuzimanja: 143
Veličina: 22.37 KB

↑  ↓

#5 14.05.2012-22:50
dex Offline
Super Moderator
Registrovan/a od: 23.02.2012-19:59
Komentari: 611


Subject: Re: Generiranje broja dokumenta
Sad je moj red da se zahvalim ZXZ-u jer mi je dao ideju kako da eliminisem polje BrDok i jos uprostim funkciju

Prilozi:
Informacije o fajlu: rar  PrimjerBrDocDex2.rar
Preuzimanja: 153
Veličina: 21.00 KB

↑  ↓

#6 14.05.2012-23:36
dex Offline
Super Moderator
Registrovan/a od: 23.02.2012-19:59
Komentari: 611


Subject: Re: Generiranje broja dokumenta
Mozda je ipak ispravnije ovo raditi sa max.
Sta ako se neki dokument izbrise?
↑  ↓

#7 15.05.2012-10:20
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,952


Subject: Re: Generiranje broja dokumenta
Jeste u pravu si.
Ako ostoji dozvola brisanja onda treba zadnji last umjesto recordcount.
Ja licno ne dozvoljavam brisaje unesenih skoro nikad.
Pozdrav
↑  ↓

#8 21.11.2012-23:47
denoza Offline
Clan
Registrovan/a od: 03.08.2011-11:01
Komentari: 12


Subject: Re: Generiranje broja dokumenta
Može li se ovaj primjer od dexxxl malo prilagoditi višekorisničkom sučelju?
↑  ↓

#9 22.11.2012-12:02
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,407


Subject: Re: Generiranje broja dokumenta
Nije mi jasno što misliš pod 'Prilagoditi višekorisničkom sučelju'
Ovo kako je, treba dobo raditi u takvom sučelju, jedino što tablice trebaju biti na serveru i linkovane, a kod koji generira broj dokumenta je na formi kod svakog korisnika.
Pozdrav
↑  ↓

#10 23.11.2012-21:34
denoza Offline
Clan
Registrovan/a od: 03.08.2011-11:01
Komentari: 12


Subject: Re: Generiranje broja dokumenta
Mislio sam na onu mogućnost da pretpostavimo da 2 korisnika u isto vrijeme odaberu isti dokument.
↑  ↓

#11 24.11.2012-21:19
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,952


Subject: Re: Generiranje broja dokumenta
Treba u jednu tabelu popisati imena komjutera.
Tabela neka se zove tblKomjuteri
Znaci tabela bi isla ovako:
Id autonumber
ImeKompa tekst

Procedura na polju iddokumenta na after update:
DownloadIzvorni kod (Visual Basic):
  1. Private Sub IDdokumenta_AfterUpdate()
  2. Dim Br As Integer
  3. Dim ImeKompa As String
  4. Dim ID As Integer, Poz As Integer
  5.  
  6. ImeKompa = Environ(6)
  7. Poz = InStr(1, ImeKompa, "=") + 1
  8. ImeKompa = Mid(ImeKompa, Poz)
  9. Br = DCount("[BrojDok]", "tblDokumenti", "[IDdokumenta]=Forms!frmDokumenti.IDdokumenta") + 1
  10. ID = DLookup("ID", "tblKomjuteri", "ImeKompa='" & ImeKompa & "'")
  11. Me.BrojDok = Me.Prefix & "-" & ID & "_" & Format(Br, "0000")
  12. End Sub

Pozdrav
↑  ↓

#12 24.11.2012-23:38
denoza Offline
Clan
Registrovan/a od: 03.08.2011-11:01
Komentari: 12


Subject: Re: Generiranje broja dokumenta
Hvala na brzom odgovoru, probat ću implementirati.
↑  ↓

Stranice (1): 1


All times are GMT +01:00. Current time: 19.09.2019-07:42.