Centar za edukaciju-BiH



#1 21.12.2011-14:43
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,437


Subject: Funkcija za ID
Za generiranje broja računa koristim slijedeću funkciju koju je napravio ZXZ:
DownloadIzvorni kod (vb.net):
  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 Offline
Clan
Registrovan/a od: 04.02.2009-09:14
Komentari: 119


Subject: 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 Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,437


Subject: 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 fajlu: rar  PrimjerID.rar
Preuzimanja: 314
Veličina: 11.91 KB


Pozdrav
↑  ↓

#4 22.12.2011-08:08
miro35 Offline
Clan
Registrovan/a od: 05.01.2009-15:56
Komentari: 609


Subject: 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 Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,437


Subject: Re: Funkcija za ID
Evo napravio sam ovako i mislim da je sada uredu
DownloadIzvorni kod (vb.net):
  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 Offline
Clan
Registrovan/a od: 02.02.2009-00:23
Komentari: 236


Subject: 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 Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 10,331


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

Procedura:
DownloadIzvorni kod (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

Pozdrav
↑  ↓

#8 22.12.2011-14:33
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,437


Subject: 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 Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 10,331


Subject: Re: Funkcija za ID
Evo ovako:
SQL:
DownloadIzvorni kod (SQL):
  1. SELECT tblProdaja.*
  2. FROM tblProdaja
  3. WHERE OrderID=UslovQuery();

Ove procedure kopiraj u neki modul:
DownloadIzvorni kod (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

Pozdrav
↑  ↓

#10 23.12.2011-07:54
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,437


Subject: 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


All times are GMT +01:00. Current time: 15.04.2021-19:16.