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

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 » Write conflict
pmiroslav 09.02.2013 19:11
Predmet:Write conflict

Imam potrebu da iz forme dopunim več popunjen rekord u tablici sa par podataka pa sam napisao slijedeći dio koda:
PreuzmiIzvorni kôd (vbnet):
  1. Dim db As Database
  2. Dim rs As DAO.Recordset
  3. Dim SQL As String
  4. Set db = CurrentDb
  5. SQL = "SELECT * FROM tblProdaja WHERE OrderID='" & OrderID & "'"
  6. Set rs = db.OpenRecordset(SQL, dbOpenDynaset)
  7.  
  8. ' neki kod i onda
  9.  
  10. With rs
  11. .Edit
  12. rs!ZKI = ZKI
  13. rs!JIR = JIR
  14. .Update
  15. End With

međutim kada zatvorim formu iskoči poruka 'Write Conflict'. kako da to rijeÅ¡im

Hvala
Prilozi:
Conflict.jpg (Velicina datoteke:29.10 KB)

zxz 09.02.2013 20:34
Predmet:Re: Write conflict

Zakaci primjer.

pmiroslav 09.02.2013 20:39
Predmet:Re: Write conflict

Jako je velika baza pa neznam dali ću moći.

pmiroslav 09.02.2013 21:17
Predmet:Re: Write conflict

Evo kompletan kod i tablica u koju se upisuje.
PreuzmiIzvorni kôd (vbnet):
  1. rivate Sub C_Racun_Click()
  2. On Error GoTo Err_C_Racun_Click
  3.  
  4. Dim db As Database
  5. Dim rs1 As DAO.Recordset
  6. Dim rs2 As DAO.Recordset
  7. Dim rs3 As DAO.Recordset
  8. Dim SQL As String
  9. Dim o
  10. Set db = CurrentDb
  11. Set o = CreateObject("Raverus.FiskalizacijaDEV.COM.CentralniInformacijskiSustav")
  12. SQL = "SELECT * FROM tblProdaja WHERE OrderID='" & OrderID & "'"
  13. Set rs1 = db.OpenRecordset("Q_Firma")
  14. Set rs2 = db.OpenRecordset("tblCis")
  15. Set rs3 = db.OpenRecordset(SQL, dbOpenDynaset)
  16.  
  17. Select Case Me.Fiskal
  18. Case 0
  19. MsgBox "Ovo nije fiskalni racun"
  20.  
  21. Exit Sub
  22.  
  23. Case 1
  24.  
  25. Dim ZKI
  26.  
  27. ZKI = IzracunajZki(rs1!OIB, Now, Me.Fiskal, rs1!OznakaPP, "1", Me.Suma)
  28.  
  29. Dim JIR As String
  30. Dim datumVrijemeIzdavanja As Date
  31.  
  32. datumVrijemeIzdavanja = Now
  33.  
  34. JIR = PosaljiRacun(rs1!OIB, datumVrijemeIzdavanja, "P", Me.Fiskal, rs1!OznakaPP, "1", 25, Me.iznos, Me.iznosPDV, Me.Suma, "G", OperatorOIB(), "0")
  35. Me.ZKI = ZKI
  36. Me.JIR = JIR
  37.  
  38. With rs3
  39. .Edit
  40. rs3!ZKI = ZKI
  41. rs3!JIR = JIR
  42. .Update
  43. End With
  44.  
  45. rs2.AddNew
  46.        rs2!OrderID = Me.OrderID
  47.         rs2!FiskalniBroj = Me.FiskalniBroj
  48.         rs2!OIB = OperatorOIB()
  49.         rs2!ZKI_1 = ZKI
  50.         rs2!JIR_1 = JIR
  51.         rs2!UUID = o.generirajuuid()
  52. rs2.Update
  53.  
  54. End Select
  55. Exit_C_Racun_Click:
  56.     Exit Sub
  57.  
  58. Err_C_Racun_Click:
  59.     MsgBox err.Description
  60.     Resume Exit_C_Racun_Click
  61.    
  62. End Sub
Prilozi:
PrimjerM.rar (Velicina datoteke:16.03 KB)

zxz 10.02.2013 11:35
Predmet:Re: Write conflict

Da si bar jos formu zakacio.
Poruka ti se javlja zbog ovog koda:
Me.ZKI = ZKI
Me.JIR = JIR
Znaci na rs forme unosis podatke a vjerovatno ih mijenjas i sa gore navedenim kodom te posto su jednom vec uneseni pita te sta da radi.

Malo sam ti prepravio i proceduru ali ne zbog toga da bi otklonio gresku nego eto da malo bude urednija.
PreuzmiIzvorni kôd (Visual Basic):
  1. Private Sub C_Racun_Click()
  2. On Error GoTo Err_C_Racun_Click
  3.  
  4. Dim db As Database
  5. Dim rs1 As DAO.Recordset
  6. Dim rs2 As DAO.Recordset
  7. Dim rs3 As DAO.Recordset
  8. Dim SQL As String
  9. Dim o, OIB, OznakaPP, Operator, Fiskal, ZKI
  10. Dim JIR As String
  11. Dim datumVrijemeIzdavanja As Date
  12.  
  13. Fiskal = Me.Fiskal
  14. If Fiskal = 0 Then
  15. MsgBox "Ovo nije fiskalni racun"
  16. Exit Sub
  17. ElseIf Fiskal = 1 Then
  18. Set db = CurrentDb
  19. Set o = CreateObject("Raverus.FiskalizacijaDEV.COM.CentralniInformacijskiSustav")
  20. SQL = "SELECT * FROM tblProdaja WHERE OrderID='" & OrderID & "'"
  21. Set rs1 = db.OpenRecordset("Q_Firma")
  22. Set rs2 = db.OpenRecordset("tblCis")
  23. Set rs3 = db.OpenRecordset(SQL, dbOpenDynaset)
  24.  
  25. OIB = rs1!OIB
  26. datumVrijemeIzdavanja = Now
  27. OznakaPP = rs!OznakaPP
  28. rs1.Close
  29. Operator = OperatorOIB()
  30. ZKI = IzracunajZki(OIB, datumVrijemeIzdavanja, Me.Fiskal, OznakaPP, "1", Me.Suma)
  31. JIR = PosaljiRacun(OIB, datumVrijemeIzdavanja, "P", Me.Fiskal, OznakaPP, "1", 25, Me.iznos, Me.iznosPDV, Me.Suma, "G", Operator, "0")
  32. 'Upis u rs clone forme
  33. Me.ZKI = ZKI
  34. Me.JIR = JIR
  35. '-------------------
  36. rs3.Edit
  37. rs3!ZKI = ZKI
  38. rs3!JIR = JIR
  39. rs3.Update
  40. '----------------
  41.  
  42. rs2.AddNew
  43. rs2!OrderID = Me.OrderID
  44. rs2!FiskalniBroj = Me.FiskalniBroj
  45. rs2!OIB = Operator
  46. rs2!ZKI_1 = ZKI
  47. rs2!JIR_1 = JIR
  48. rs2!UUID = o.generirajuuid()
  49. rs2.Update
  50.  
  51. rs2.slose
  52. rs3.Close
  53. Else
  54. MsgBox "Nije ništa odabrano ili mozda neki drugi tekst"
  55. End If
  56.  
  57. Exit_C_Racun_Click:
  58.     Exit Sub
  59.  
  60. Err_C_Racun_Click:
  61.     MsgBox Err.Description
  62.     Resume Exit_C_Racun_Click
  63.    
  64. End Sub

Variable:
OIB, OznakaPP, Operator, Fiskal, ZKI treba dimenzionisati onako kako su dimenzionisane u tabelama.
Ja to nisam znao pa sam ostavio kao variant.

pmiroslav 10.02.2013 18:38
Predmet:Re: Write conflict

Evo ga primjer sa formom. Kod mene i sa ovim javlja isti pogrešku.
Prilozi:
PrimjerM2.rar (Velicina datoteke:838.97 KB)

zxz 10.02.2013 21:11
Predmet:Re: Write conflict

PreuzmiIzvorni kôd (Visual Basic):
  1. Private Sub C_Racun_Click()
  2. On Error GoTo Err_C_Racun_Click
  3.  
  4. Dim db As Database
  5. Dim rs1 As DAO.Recordset
  6. Dim rs2 As DAO.Recordset
  7. 'Dim rs3 As DAO.Recordset
  8. Dim SQL As String
  9. Dim o, OIB As String, OznakaPP As String, Operator As String, Fiskal As String, ZKI As String
  10. Dim JIR As String
  11. Dim datumVrijemeIzdavanja As Date
  12.  
  13. Fiskal = Me.Fiskal
  14. If Fiskal = 0 Then
  15. MsgBox "Ovo nije fiskalni racun"
  16. Exit Sub
  17. ElseIf Fiskal = 1 Then
  18. Set db = CurrentDb
  19. Set o = CreateObject("Raverus.FiskalizacijaDEV.COM.CentralniInformacijskiSustav")
  20. 'SQL = "SELECT * FROM tblProdaja WHERE OrderID='" & OrderID & "'"
  21. Set rs1 = db.OpenRecordset("Q_Firma")
  22. Set rs2 = db.OpenRecordset("tblCis")
  23. 'Set rs3 = db.OpenRecordset(SQL, dbOpenDynaset)
  24.  
  25. OIB = rs1!OIB
  26. datumVrijemeIzdavanja = Now
  27. OznakaPP = rs1!OznakaPP
  28. rs1.Close
  29. Operator = "1234567890"
  30. ZKI = IzracunajZki(OIB, datumVrijemeIzdavanja, Me.Fiskal, OznakaPP, "1", Me.Suma)
  31. JIR = PosaljiRacun(OIB, datumVrijemeIzdavanja, "P", Me.Fiskal, OznakaPP, "1", 25, Me.iznos, Me.iznosPDV, Me.Suma, "G", Operator, "0")
  32. 'Upis u rs clone forme
  33. Me.ZKI = ZKI
  34. Me.JIR = JIR
  35. '-------------------
  36. 'rs3.Edit
  37. 'rs3!ZKI = ZKI
  38. 'rs3!JIR = JIR
  39. 'rs3.Update
  40. '----------------
  41.  
  42. rs2.AddNew
  43. rs2!OrderID = Me.OrderID
  44. rs2!FiskalniBroj = Me.FiskalniBroj
  45. rs2!OIB = Operator
  46. rs2!ZKI_1 = ZKI
  47. rs2!JIR_1 = JIR
  48. rs2!UUID = o.generirajuuid()
  49. rs2.Update
  50.  
  51. rs2.Close
  52. 'rs3.Close
  53. Else
  54. MsgBox "Nije ništa odabrano ili mozda neki drugi tekst"
  55. End If
  56.  
  57. Exit_C_Racun_Click:
  58.     Exit Sub
  59.  
  60. Err_C_Racun_Click:
  61.     MsgBox err.Description
  62.     Resume Exit_C_Racun_Click
  63.    
  64. End Sub

Evo probaj sa ovim kodom.

pmiroslav 11.02.2013 08:20
Predmet:Re: Write conflict

Ovo sa
Me.ZKI = ZKI
Me.JIR = JIR
sam prvo probao, ali ni to mi nije u redu jer nakon ovog kod otvaram Report kojem je recordsource 'tblProdaja' u kojem bi trebala biti ta dva podatka oni ne budu upisani.
Tek ako zatvorim formu pa je ponovno otvorim onda se to upiše. Probao sam i sa DoCmd.Requery ali to mi opet ne radi kako treba.

zxz 11.02.2013 10:42
Predmet:Re: Write conflict

E vidis to nisi rekao.
Odnosno nisi rekao da podizes izvjestaj od ovog rekorda koji naravno nije zapisan.
Zbog toga si vjerovatno ova 2 podatka 2 puta zapisivao i sa rekordsetom a i upisom u rs clone odnosno na formu.
da bi zapisao postojeci rekord sa forme dovoljno je samo dodati:
Me.Dirty = False

Tada ces vidjeti na izvjestaju podatke odnosno oni ce biti upisani.

Interesantno je to da is ovo mogao rijesiti i tako da is ova 2 polja na formi ostavio nevezana odnosno da u control source ne upises nista a da koristis onaj tvoj stari kod.
Vidio bi podatke na formi a u tabelu si ih svakako upisivao sa rs3.

pmiroslav 11.02.2013 11:20
Predmet:Re: Write conflict

Na kojem mjestu u proceduri trebam upisati
Me.Dirty = False