Centar za edukaciju-BiH



#1 21.12.2011 14:43
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Funkcija za ID
Za generiranje broja računa koristim slijedeću funkciju koju je napravio ZXZ:
PreuzmiIzvorni kôd (vbnet):
  1. Function SifraN()
  2. Dim DB As Database
  3. Dim SQL As String
  4. Dim Rs As Recordset
  5. Dim I As String
  6.  
  7. Set DB = CurrentDb
  8. SQL = "SELECT Max(OrderID) AS BrojN " & "FROM tblProdaja"
  9. Set Rs = DB.OpenRecordset(SQL)
  10. If Format$(Rs.Fields(0)) <> "" Then
  11. I = Val(Rs.Fields(0))
  12. End If
  13. I = I + 1
  14. SifraN = Format(I, "000000")
  15. Rs.Close
  16. Set DB = Nothing
  17. End Function

sa njom dobivam brojeve u obliku 050001; 050002 itd.
Molio bih pomoć kako da dobijem broj računa u obliku:
2012-0001; 2012-0002 itd, gdje bi na početku bila godina pa onda dalje redni broj.
Pozdrav
↑  ↓

#2 21.12.2011 16:26
Kiro Van mreze
Clan
Registrovan od:04.02.2009
Postovi:119


Predmet:Re: Funkcija za ID
SifraN = DatePart("yyyy", Now()) & "-" & Format(I, "0000")

Ili izvuci datum negdje sa forme umjesto Now()
↑  ↓

#3 21.12.2011 20:47
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Funkcija za ID
Nažalost ovi ne radi kako treba. I ja sam pokuÅ¡avao neÅ¡to slično pa mi nije iÅ¡lo.
Prvi problem kod ovoga je Å¡to ID kod prvog zapisa moram upisati ručno. Upisao sam 2012-0001 i kada pređem na drugi zapis funkcija mi upiÅ¡e 2011-2013

Prilozi:
Informacije o tipu datoteke za:rar  PrimjerID.rar
Preuzimanja:368
Velicina datoteke:11.91 KB


Pozdrav
↑  ↓

#4 22.12.2011 08:08
miro35 Van mreze
Clan
Registrovan od:05.01.2009
Postovi:608


Predmet:Re: Funkcija za ID
Ja mislim da trebaš ovo u funkciji:
SQL = "SELECT Max(OrderID) AS BrojN " & "FROM tblProdaja"
promjenit u ovo:
SQL = "SELECT Format$((DMax("(right$(OrderID,6)) AS BrojN " & "FROM tblProdaja"
Miro
↑  ↓

#5 22.12.2011 09:09
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Funkcija za ID
Evo napravio sam ovako i mislim da je sada uredu
PreuzmiIzvorni kôd (vbnet):
  1. Function SifraN()
  2. Dim DB As Database
  3. Dim SQL As String
  4. Dim Rs As Recordset
  5. Dim I As String
  6. If IsNull(DLookup("[OrderID]", "[tblProdaja]")) Then
  7. SifraN = DatePart("yyyy", Now()) & "-" & "0001"
  8. GoTo Kraj
  9. End If
  10. Set DB = CurrentDb
  11. SQL = "SELECT Max(Right(OrderID,4)) AS BrojN " & "FROM tblProdaja"
  12. Set Rs = DB.OpenRecordset(SQL)
  13. If Format$(Rs.Fields(0)) <> "" Then
  14. I = Val(Rs.Fields(0))
  15. End If
  16. I = I + 1
  17. SifraN = DatePart("yyyy", Now()) & "-" & Format(I, "0000")
  18. Rs.Close
  19. Set DB = Nothing
  20. Kraj:
  21. End Function

Pozdrav
↑  ↓

#6 22.12.2011 09:18
roko Van mreze
Clan
Registrovan od:02.02.2009
Postovi:236


Predmet:Re: Funkcija za ID
1. SQL = "SELECT Max(OrderID) AS BrojN FROM tblProdaja"
2. recimo I = Mid(Rs.Fields(0), 6, 10) - Val() vrača broj do crte

To je to
↑  ↓

#7 22.12.2011 11:04
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: Funkcija za ID
Polje OrderID Stavi 8 karaktera mislim da je toliko i bilo.
U input masku Ovog polja napisi: 0000-0000

Procedura:
PreuzmiIzvorni kôd (Visual Basic):
  1. Function SifraN()
  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. SQL = "SELECT Max(Right(OrderID,4)) FROM tblProdaja"
  9. Set Rs = DB.OpenRecordset(SQL)
  10. If Format$(Rs.Fields(0)) <> "" Then
  11. I = Val(Rs.Fields(0))
  12. End If
  13. I = I + 1
  14. SifraN = Year(Date) & Format(I, "0000")
  15. Rs.Close
  16. Set DB = Nothing
  17. Kraj:
  18. End Function

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#8 22.12.2011 14:33
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Funkcija za ID
Ovo je u redu.
Ali muči me joÅ¡ jedna stvar. Dali je moguće da Criterij u Queryu pozivam sa dvije različite forme, ovisno o tome koja je forma otvorena. Ja sam pokuÅ¡ao neÅ¡to kao u primjeru ali kada otvaram Query traži mi da budu otvoeene obje forme:

SELECT tblProdaja.*
FROM tblProdaja
WHERE (((tblProdaja.OrderID)=[Forms]![frmOtpremnicaSub]![OrderID])) OR (((tblProdaja.OrderID)=[Forms]![TraziRacun]![txtOrderID]));
Pozdrav
↑  ↓

#9 22.12.2011 20:06
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: Funkcija za ID
Evo ovako:
SQL:
PreuzmiIzvorni kôd (SQL):
  1. SELECT tblProdaja.*
  2. FROM tblProdaja
  3. WHERE OrderID=UslovQuery();

Ove procedure kopiraj u neki modul:
PreuzmiIzvorni kôd (Visual Basic):
  1. Function UslovQuery()
  2. Dim Forma As Boolean
  3.  
  4. UslovQuery = "0000"
  5. Forma = Otvorena("frmOtpremnicaSub")
  6. If Forma = True Then
  7. UslovQuery = Forms![frmOtpremnicaSub]![OrderID]
  8. End If
  9. Forma = Otvorena("TraziRacun")
  10. If Forma = True Then
  11. UslovQuery = Forms![TraziRacun]![txtOrderID]
  12. End If
  13. End Function
  14.  
  15. Function Otvorena(ImeForme)
  16.     '----------------------------------------
  17.    ' DA LI JE ODREENA FORMA OTVORENA
  18.    ' poziva se otvorena(Imeforme)
  19.    'Ako jeste vraca True
  20.    '----------------------------------------
  21.    Const FORM_DESIGN = 0
  22.     Dim I As Integer
  23.    
  24.     Otvorena = False
  25.     For I = 0 To Forms.Count - 1
  26.         If Forms(I).FormName = ImeForme Then
  27.             If Forms(I).CurrentView <> FORM_DESIGN Then
  28.                 Otvorena = True
  29.                 Exit Function  ' Izlaz iz funkcije
  30.            End If
  31.         End If
  32.     Next
  33.  
  34. End Function

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#10 23.12.2011 07:54
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Funkcija za ID
Ovo radi odlično. Svaka čast!
Trebalo mi je zato Å¡to otvaram jedan Report sa različitih formi.

Hvala
Pozdrav
↑  ↓

Stranice (1):1


Sva vremena su GMT +01:00. Trenutno vrijeme: 11: 46 pm.