Centar za edukaciju-BiH


Stranice (5):1,2,3,4,5

#21 05.05.2012 11:48
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Radni nalog na osnovu dnevnog prometa
OK napravit cu proceduru da ubacuje podatke tamo.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#22 05.05.2012 15:36
Amelasar Van mreze
Clan
Registrovan od:07.04.2011
Postovi:263


Predmet:Re: Radni nalog na osnovu dnevnog prometa
Hvala zxz.
Pozdrav, Amela
↑  ↓

#23 06.05.2012 11:28
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Radni nalog na osnovu dnevnog prometa
Evo Procedura.
Opet napominjem da je ovo ludost sto radis.
Ovo je ono kada od kobasice hoces napraviti bika.
Procedura ce raditi dobro ukoliko su procenti priblizno tacni i iznos tacan na osnovu kolicina.
Raskini vezu tblRadniNalog i TblradniNalogStavke te pobrisi podatkke iz njih i onda napravi RdniNalogID autonuber.
Poslije ponovo napravi relaciju i to sa kaskadnim brisanjem.
PreuzmiIzvorni kôd (Visual Basic):
  1. Function RadniNalog(Datum As Date)
  2. Dim Db As Database
  3. Dim Rs1 As Recordset, Rs2 As Recordset
  4. Dim SQL As String, DatumS As String
  5. Dim Suma As Currency, K As Currency, Ostatak As Currency
  6. Dim ID As Integer
  7. Dim Iznos As Single, Procenat As Single, Cijena As Single
  8. Dim BrKomada As Integer
  9.  
  10.  
  11. DoCmd.SetWarnings False
  12. DatumS = Format(Datum, "mm-dd-yyyy")
  13. SQL = "SELECT Sum( Razduzenje) AS Suma FROM tblPromet " _
  14.       & "WHERE DatumK=#" & DatumS & "#"
  15. Set Db = CurrentDb
  16. Set Rs1 = Db.OpenRecordset(SQL)
  17. Suma = Rs1!Suma
  18. Rs1.Close
  19. SQL = "SELECT * FROM TblRadniNalog WHERE Datum=#" & DatumS & "#"
  20. Set Rs1 = Db.OpenRecordset(SQL)
  21.  
  22. If Rs1.RecordCount > 0 Then
  23. Dim R As String
  24. R = MsgBox("Za datum:" & Datum & vbCrLf & "Nalog vec postoji." & vbCrLf _
  25. & "Hoete eli da uradite ponovo?  ", _
  26. vbYesNo + vbExclamation + vbApplicationModal + vbDefaultButton1, "NAPOMENA")
  27.  If R = vbYes Then
  28. SQL = "DELETE  * FROM TblRadniNalog " _
  29.  & "WHERE Datum=#" & DatumS & "#"
  30.  DoCmd.RunSQL (SQL)
  31.  ElseIf vbNo Then
  32.  Rs1.Close
  33.  GoTo Izlaz:
  34.  End If
  35. End If
  36. Rs1.AddNew
  37. Rs1!Datum = Datum
  38. ID = Rs1!RadniNalogID
  39. Rs1.Update
  40. Rs1.Close
  41. SQL = "SELECT * FROM tblArtikli ORDER BY MPC DESC"
  42. Set Rs1 = Db.OpenRecordset(SQL)
  43. Set Rs2 = Db.OpenRecordset("TblRadniNalogStavke")
  44. Do While Not Rs1.EOF
  45. Procenat = Rs1!ProcenatIsk
  46. Cijena = Rs1!MPC
  47. Iznos = Suma * Procenat + Ostatak
  48. K = Iznos / Cijena
  49. BrKomada = K
  50. Ostatak = K - BrKomada
  51. Unos:
  52. Rs2.AddNew
  53. Rs2!RadniNalogID = ID
  54. Rs2!PC = Rs1!PC
  55. Rs2!ArtikalID = Rs1!ArtikliID
  56. Rs2!NazivArtikla = Rs1!NazivArtikla
  57. Rs2!JedMjere = Rs1!JedMjere
  58. Rs2!Kolicina = BrKomada
  59. Rs2!VrstaPekProizv = Rs1!VrstaPekProizv
  60. Rs2!PodvrstapekProizv = Rs1!PodvrstapekProizv
  61. Rs2!TezinaGotProizvoda = Rs1!TezinaGotProizvoda
  62. Rs2!VrstaUtrBrasna = Rs1!VrstaUtrBrasna
  63. Rs2!KolicinaUtrBrasna = Rs1!KolicinaUtrBrasna * BrKomada
  64. Rs2.Update
  65. Rs1.MoveNext
  66. Loop
  67. Izlaz:
  68. DoCmd.SetWarnings True
  69. Exit Function
  70. Kraj:
  71. End Function
U tabeli tblRadniNalogStavke ne trebaju ti sva ona silna polja jer ih imas u TblArtilli.
Potrebno je samo:
RsdniNalogID
ArtikalID
Klicina
KolicinaUtrosenogBrasna
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#24 06.05.2012 18:24
Amelasar Van mreze
Clan
Registrovan od:07.04.2011
Postovi:263


Predmet:Re: Radni nalog na osnovu dnevnog prometa
Probala sam. Ovo je super uradjeno ali i dalje ne dobivam konacno rjesenje. Uvijek postoji razlika <1. Nekad 0.45, 0.55, 0.05, itd.

Mozda trebam na neki poseban nacin postaviti procente?

Hvala puno zxz.
Pozdrav, Amela
↑  ↓

#25 06.05.2012 18:32
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Radni nalog na osnovu dnevnog prometa
Hehe nije to do procenata samo.
Kao sto sam napomenuo nemoguce je to matematicki rijesiti ali eto moze se od prilike nabosti.
Prva stvar je to bar sto si ti napisala u bazi je potpuno netacno.
Ako pogledas cijene same:
napr. imas cijenu 1.30 i cijenu 0.25 a ukupan iznos 200.
Nemoguce je dobiti iznos sa bilo kojim brojem komada ova 2 artikla.
Naveo sam. Sto su procenti pricizniji i iznos tacniji tacnije ce izbacivati, mada je ovo potpuna ludost.
Ja neznam cijelu pricu sta hoces da napravis ali sam siguran da ces sve vise zapadati u probleme.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#26 06.05.2012 18:41
Amelasar Van mreze
Clan
Registrovan od:07.04.2011
Postovi:263


Predmet:Re: Radni nalog na osnovu dnevnog prometa
Znam da je ludost ali mi je takvo nesto potrebno jer se trebaju za 2 godine unazad uraditi radni nalozi. To je 730 radnih naloga po 30-50 artikala. Za svaki dan vec postoji promet iz fiskalne kase koji se ne moze mijenjati.

Hvala ti na pomoci zxz.
Pozdrav, Amela
↑  ↓

#27 06.05.2012 19:36
Amelasar Van mreze
Clan
Registrovan od:07.04.2011
Postovi:263


Predmet:Re: Radni nalog na osnovu dnevnog prometa
Uradila sam funkciju koja cita promet iz tblPrometMP i kreira radne naloge za dane za koje nisu napravljeni:

PreuzmiIzvorni kôd (Text):
  1. Function UradiRN()
  2.  
  3. Dim strSQL As String
  4. Dim rst As DAO.Recordset
  5.  
  6. strSQL = "SELECT * FROM QPrometMPzaRadniNalog"
  7. Set rst = CurrentDb.OpenRecordset(strSQL)
  8.  
  9. rst.MoveFirst
  10. Do Until rst.EOF
  11. RadniNalog (rst!DatumK)
  12.  
  13. rst.Edit
  14. rst!Knjizen = -1 ' Knjizi sa yes
  15. rst.Update
  16.  
  17. rst.MoveNext
  18. Loop
  19. rst.Close
  20. End Function

Pozdrav, Amela
Ovaj post je ureden 1 puta. Posljednja izmjena 06.05.2012 19:37 od strane Amelasar. ↑  ↓

#28 06.05.2012 21:51
Amelasar Van mreze
Clan
Registrovan od:07.04.2011
Postovi:263


Predmet:Re: Radni nalog na osnovu dnevnog prometa
Dodala sam i ovaj dio tako da mi RadniNalogID ne mora biti autonumber:

Rs1!RadninalogID = DMax("RadninalogID", "tblRadniNalog") + 1
Jedino mi je problem sto u tabeli moram otvoriti RN broj nula.
Pozdrav, Amela
↑  ↓

#29 06.05.2012 22:12
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Radni nalog na osnovu dnevnog prometa
Eh ja sam u proceduri napravio kao da je autonuber.
Bitno je da su povezane kako sam rekao ako hoces da brise i detalje.
Taj kod mozes dodati i u onu moju proceduru ili ako hoces da ti napravim novu proceduru za dodavanje novog naloga.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#30 06.05.2012 22:27
Amelasar Van mreze
Clan
Registrovan od:07.04.2011
Postovi:263


Predmet:Re: Radni nalog na osnovu dnevnog prometa
To sad ovako izgleda:

PreuzmiIzvorni kôd (Text):
  1. Function RadniNalog(Datum As Date)
  2. Dim Db As Database
  3. Dim Rs1 As Recordset, Rs2 As Recordset
  4. Dim SQL As String, DatumS As String
  5. Dim Suma As Currency, K As Currency, Ostatak As Currency
  6. Dim ID As Integer
  7. Dim Iznos As Single, Procenat As Single, Cijena As Single
  8. Dim BrKomada As Integer
  9.  
  10.  
  11. DoCmd.SetWarnings False
  12. DatumS = Format(Datum, "mm-dd-yyyy")
  13. SQL = "SELECT Sum( Razduzenje) AS Suma FROM tblPrometMP " _
  14.       & "WHERE DatumK=#" & DatumS & "#"
  15. Set Db = CurrentDb
  16. Set Rs1 = Db.OpenRecordset(SQL)
  17. Suma = Rs1!Suma
  18. Rs1.Close
  19. SQL = "SELECT * FROM TblRadniNalog WHERE Datum=#" & DatumS & "#"
  20. Set Rs1 = Db.OpenRecordset(SQL)
  21.  
  22. If Rs1.RecordCount > 0 Then
  23. Dim R As String
  24. R = MsgBox("Za datum:" & Datum & vbCrLf & "Nalog vec postoji." & vbCrLf _
  25. & "Hoete eli da uradite ponovo?  ", _
  26. vbYesNo + vbExclamation + vbApplicationModal + vbDefaultButton1, "NAPOMENA")
  27.  If R = vbYes Then
  28. SQL = "DELETE  * FROM TblRadniNalog " _
  29.  & "WHERE Datum=#" & DatumS & "#"
  30.  DoCmd.RunSQL (SQL)
  31.  ElseIf vbNo Then
  32.  Rs1.Close
  33.  GoTo Izlaz:
  34.  End If
  35. End If
  36.  
  37.  
  38. Rs1.AddNew
  39. Rs1!RadninalogID = DMax("RadninalogID", "tblRadniNalog") + 1
  40. Rs1!Datum = Datum
  41. ID = Rs1!RadninalogID
  42. Rs1.Update
  43. Rs1.Close
  44.  
  45. SQL = "SELECT * FROM tblArtikli ORDER BY MPC DESC"
  46. Set Rs1 = Db.OpenRecordset(SQL)
  47. Set Rs2 = Db.OpenRecordset("TblRadniNalogStavke")
  48. Do While Not Rs1.EOF
  49. Procenat = Rs1!ProcenatIsk
  50. Cijena = Rs1!MPC
  51. Iznos = Suma * Procenat + Ostatak
  52. K = Iznos / Cijena
  53. BrKomada = K
  54. Ostatak = K - BrKomada
  55. Unos:
  56. Rs2.AddNew
  57. Rs2!RadninalogID = ID
  58. Rs2!PC = Rs1!PC
  59. Rs2!ArtikalID = Rs1!ArtikliID
  60. Rs2!NazivArtikla = Rs1!NazivArtikla
  61. Rs2!JedMjere = Rs1!JedMjere
  62. Rs2!Kolicina = BrKomada
  63. Rs2!VrstaPekProizv = Rs1!VrstaPekProizv
  64. Rs2!PodvrstapekProizv = Rs1!PodvrstapekProizv
  65. Rs2!TezinaGotProizvoda = Rs1!TezinaGotProizvoda
  66. Rs2!VrstaUtrBrasna = Rs1!VrstaUtrBrasna
  67. Rs2!KolicinaUtrBrasna = Rs1!KolicinaUtrBrasna * BrKomada
  68. Rs2.Update
  69. Rs1.MoveNext
  70. Loop
  71. Izlaz:
  72. DoCmd.SetWarnings True
  73. Exit Function
  74. Kraj:
  75. End Function

A pozivam ovako:

PreuzmiIzvorni kôd (Text):
  1. Function UradiRN()
  2. Dim strSQL As String
  3. Dim rst As DAO.Recordset
  4.  
  5. strSQL = "SELECT * FROM QPrometMPzaRadniNalog ORDER BY DatumK ASC" 'DESC
  6. Set rst = CurrentDb.OpenRecordset(strSQL)
  7.  
  8. If rst.RecordCount > 0 Then
  9. rst.MoveFirst
  10. Do Until rst.EOF
  11. RadniNalog (rst!DatumK)
  12.  
  13. rst.Edit
  14. rst!Knjizen = True
  15. rst.Update
  16.  
  17. rst.MoveNext
  18.  
  19. Loop
  20. MsgBox "Podaci uspjesno obradjeni!", vbInformation
  21.  
  22. rst.Close
  23. Else
  24. MsgBox "Nema podataka za obradu!", vbInformation
  25. End If
  26. End Function

Voljela bih i to rjesiti. Mislim na taj pocetni record. Imam problema s tim i kad kreiram fakturu broj 1 = vise otpremnica pa kreiram jednu fakturu = posljednja +1.
Pozdrav, Amela
↑  ↓

Stranice (5):1,2,3,4,5


Sva vremena su GMT +02:00. Trenutno vrijeme: 11: 14 am.