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

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

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

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 » Funkcija za ID
pmiroslav 21.12.2011 15:43
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.

Kiro 21.12.2011 17:26
Predmet:Re: Funkcija za ID

SifraN = DatePart("yyyy", Now()) & "-" & Format(I, "0000")

Ili izvuci datum negdje sa forme umjesto Now()

pmiroslav 21.12.2011 21:47
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:
PrimjerID.rar (Velicina datoteke:11.91 KB)

miro35 22.12.2011 09:08
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"

pmiroslav 22.12.2011 10:09
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

roko 22.12.2011 10:18
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

zxz 22.12.2011 12:04
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

pmiroslav 22.12.2011 15:33
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]));

zxz 22.12.2011 21:06
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

pmiroslav 23.12.2011 08:54
Predmet:Re: Funkcija za ID

Ovo radi odlično. Svaka čast!
Trebalo mi je zato Å¡to otvaram jedan Report sa različitih formi.

Hvala