Warning: filesize(): stat failed for uploads/topics/Slika1_2.jpg in /home2/icentarb/public_html/icentar/print.php on line 203

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: filesize(): stat failed for uploads/topics/PrimjerMp.rar in /home2/icentarb/public_html/icentar/print.php on line 203

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 » Spajanje arhiviranih baza
zxz 15.07.2013 09:15
Predmet:Re: Spajanje arhiviranih baza

Citat:
Unrecognized database format 'S:\Prodaja_2013_be.ldb'
Ili je ostecena ili je neka novija verzija od od ove kojom radis.

pmiroslav 15.07.2013 11:11
Predmet:Re: Spajanje arhiviranih baza

Neznam dali si me razumio. Kada otvorim front aplikaciju koja je linkovana sa serverom u direktoriju na serveru se napravi lock file 'Prodaja_2013_be.ldb' Ovo nije fail sa podacima, a funkcija želi iz njega kopirati podatke u 'temp.mdb?
U funkciji KreirajTemp() varijabla 'ImeFaila' u jednom trenutku dobije ime "Prodaja_2013_be.ldb" i tu se javlja greška. Trebalo bi nekako napraviti da se uzimaju u obzir samo *.mdb datoteke.
Ja sam probao sa If ImeFajla = " *.ldb " Then GoTo Kraj , ali to me ne sluša
Prilozi:
Slika1.jpg (Velicina datoteke: Bajt)
Slika2.jpg (Velicina datoteke:21.63 KB)

zxz 15.07.2013 12:32
Predmet:Re: Spajanje arhiviranih baza

Da u pravu si nisam te razumio:
Evo procedura ispravljena.
PreuzmiIzvorni kôd (Visual Basic):
  1. Function KreirajTemp()
  2. Dim wrk As Workspace
  3. Dim Db As Database, tmpBaza As Database
  4. Dim Rs As Recordset, tmpRs As Recordset
  5. Dim OrgTabela As TableDef, TmpTabela As TableDef
  6. Dim ImeBaze As String, ImeTmpBaze As String
  7. Dim ImeFajla As String, SQL As String
  8. Dim Prefiks As Integer
  9.  
  10.  
  11.  
  12. DoCmd.SetWarnings False
  13. ImeTmpBaze = Db_Putanja & "tmp.mdb"
  14. If Dir(ImeTmpBaze) <> "" Then Kill ImeTmpBaze
  15. Set Db = CurrentDb()
  16. Set wrk = DBEngine.Workspaces(0)
  17. 'Tabela transakcije
  18. Set tmpBaza = wrk.CreateDatabase(ImeTmpBaze, dbLangGeneral)
  19. Set OrgTabela = Db.TableDefs("tblTransakcije")
  20. Set TmpTabela = tmpBaza.CreateTableDef("tblTransakcije")
  21. For Each fld In OrgTabela.Fields
  22.     With TmpTabela
  23.     .Fields.Append .CreateField(fld.Name, fld.Type, fld.Size)
  24.     End With
  25. Next fld
  26. tmpBaza.TableDefs.Append TmpTabela
  27.            
  28. ImeFajla = Dir(DirPutanja, vbDirectory)
  29.         Do While Len(ImeFajla) > 0
  30.             ImeFajla = Dir
  31.              If Right(ImeFajla, 3) = "Mdb" Then
  32.              ImeBaze = DirPutanja & ImeFajla
  33.              Prefiks = Mid(ImeBaze, (Len(ImeBaze) - 8), 2)
  34.                 SQL = "INSERT INTO tblTransakcije (IDTransakcije, Datum, Skladiste, IDdokumenta, BrDokumenta, " _
  35.                & "PartnerID, RadniNalog, OperID, StatusTR, DatumU, Brisanje )IN '" & ImeTmpBaze _
  36.                & "' SELECT " & Prefiks & "& [IDTransakcije] AS ID, Datum, Skladiste,IDdokumenta, " _
  37.                & "BrDokumenta,PartnerID, RadniNalog, OperID, StatusTR,DatumU, Brisanje " _
  38.                & "FROM tblTransakcije IN '" & ImeBaze & "';"
  39.                DoCmd.RunSQL (SQL)
  40.              End If
  41.         Loop
  42. Set OrgTabela = Nothing
  43. Set TmpTabela = Nothing
  44. 'tabela ulazizlaz
  45. Set OrgTabela = Db.TableDefs("tblUlazIzlaz")
  46. Set TmpTabela = tmpBaza.CreateTableDef("tblUlazIzlaz")
  47. For Each fld In OrgTabela.Fields
  48.     With TmpTabela
  49.     .Fields.Append .CreateField(fld.Name, fld.Type, fld.Size)
  50.     End With
  51. Next fld
  52. tmpBaza.TableDefs.Append TmpTabela
  53. ImeFajla = Dir(DirPutanja, vbDirectory)
  54.         Do While Len(ImeFajla) > 0
  55.             ImeFajla = Dir
  56.              If Right(ImeFajla, 3) = "Mdb" Then
  57.              ImeBaze = DirPutanja & ImeFajla
  58.              Prefiks = Mid(ImeBaze, (Len(ImeBaze) - 8), 2)
  59.                 SQL = "INSERT INTO tblUlazIzlaz ( IDTransakcije, Sifra, Ulaz, Izlaz, Status, DatumU )IN '" & ImeTmpBaze _
  60.                    & "' SELECT " & Prefiks & " & [IDTransakcije] AS ID, Sifra, Ulaz, Izlaz, Status, DatumU " _
  61.                    & "FROM tblUlazIzlaz IN '" & ImeBaze & "';"
  62.                DoCmd.RunSQL (SQL)
  63.              End If
  64.         Loop
  65. Set OrgTabela = Nothing
  66. Set TmpTabela = Nothing
  67. Set tmpBaza = Nothing
  68. Set Db = Nothing
  69. DoCmd.SetWarnings True
  70. End Function

pmiroslav 15.07.2013 12:59
Predmet:Re: Spajanje arhiviranih baza

Sada to radi kako treba. Moram to dotjerati u svojoj bazi pa ako još bude kakovih problema...

Za sada puno hvala.

pmiroslav 15.07.2013 19:44
Predmet:Re: Spajanje arhiviranih baza

Å to se tiče kopiranja podataka u temp bazu to sve radi OK. Međutim vraćam se na problem zbog kojeg sam i otvorio ovu temu. Naime u sve tri baze iz kojih kopram u temp.mdb u tnlTransakcije počinje se sa Inventurom tj prvi ulaz je prenos zavrÅ¡nog stanja iz proÅ¡le godine. Kod kopiranja bi trebalo izbječi kopirati to stanje znači IDTransakcije = 1 (ali ne za prvu godinu o ovo slučaju iz baze Prodaja_2011_be treba se prepisati IdTransakcije = 1, a iz svih ostali godina ne)
Dali ima riješenja za ovako nešto?

zxz 15.07.2013 21:39
Predmet:Re: Spajanje arhiviranih baza

Kazes ne ovu prvu.
Hoce li uvijek ova prva biti 2011 ili je mozda najniza po broju odnosno godini.

pmiroslav 16.07.2013 07:11
Predmet:Re: Spajanje arhiviranih baza

Kod mene je slučaj da je to 2011 jer onda je zapoćet rad sa konkretnom bazom ali možda bi bolje bilo kada bi se mogla odabrati najniža godina ako se aÅ¡likacija u nekom drugom skladiÅ¡tu počne kristiti ispočetka.

zxz 16.07.2013 10:18
Predmet:Re: Spajanje arhiviranih baza

Evo pa istestiraj.
PreuzmiIzvorni kôd (Visual Basic):
  1. Function KreirajTemp()
  2. Dim wrk As Workspace
  3. Dim Db As Database, tmpBaza As Database
  4. Dim Rs As Recordset, tmpRs As Recordset
  5. Dim Fld As Field
  6. Dim OrgTabela As TableDef, TmpTabela As TableDef
  7. Dim ImeBaze As String, ImeTmpBaze As String
  8. Dim ImeFajla As String, SQL(2) As String
  9. Dim Prefiks As Integer, God As Integer
  10. Dim PrefiksS As String
  11.  
  12.  
  13.  
  14. DoCmd.SetWarnings False
  15. ImeTmpBaze = Db_Putanja & "tmp.mdb"
  16. If Dir(ImeTmpBaze) <> "" Then Kill ImeTmpBaze
  17. Set Db = CurrentDb()
  18. Set wrk = DBEngine.Workspaces(0)
  19. 'Provjera:
  20. God = Format(Date, "yy")
  21. ImeFajla = Dir(DirPutanja, vbDirectory)
  22.     Do While Len(ImeFajla) > 0
  23.         ImeFajla = Dir
  24.         If Right(ImeFajla, 3) = "Mdb" Then
  25.             Prefiks = Mid(ImeFajla, (Len(ImeFajla) - 8), 2)
  26.             If Prefiks < God Then: God = Prefiks
  27.         End If
  28.     Loop
  29. 'Tabela transakcije
  30. Set tmpBaza = wrk.CreateDatabase(ImeTmpBaze, dbLangGeneral)
  31. Set OrgTabela = Db.TableDefs("tblTransakcije")
  32. Set TmpTabela = tmpBaza.CreateTableDef("tblTransakcije")
  33. For Each Fld In OrgTabela.Fields
  34.     With TmpTabela
  35.     .Fields.Append .CreateField(Fld.Name, Fld.Type, Fld.Size)
  36.     End With
  37. Next Fld
  38. tmpBaza.TableDefs.Append TmpTabela
  39. Set OrgTabela = Nothing
  40. Set TmpTabela = Nothing
  41. 'tabela ulazizlaz
  42. Set OrgTabela = Db.TableDefs("tblUlazIzlaz")
  43. Set TmpTabela = tmpBaza.CreateTableDef("tblUlazIzlaz")
  44. For Each Fld In OrgTabela.Fields
  45.     With TmpTabela
  46.     .Fields.Append .CreateField(Fld.Name, Fld.Type, Fld.Size)
  47.     End With
  48. Next Fld
  49. tmpBaza.TableDefs.Append TmpTabela
  50. Set OrgTabela = Nothing
  51. Set TmpTabela = Nothing
  52. 'Prenos podataka
  53. ImeFajla = Dir(DirPutanja, vbDirectory)
  54.         Do While Len(ImeFajla) > 0
  55.             ImeFajla = Dir
  56.              If Right(ImeFajla, 3) = "Mdb" Then
  57.                 ImeBaze = DirPutanja & ImeFajla
  58.                 Prefiks = Mid(ImeBaze, (Len(ImeBaze) - 8), 2)
  59.                 PrefiksS = Format(Prefiks, "00")
  60.                 If Prefiks = God Then
  61.                 SQL(0) = "WHERE IDTransakcije<>1"
  62.                 Else
  63.                 SQL(0) = ""
  64.                 End If
  65.                      SQL(1) = "INSERT INTO tblTransakcije (IDTransakcije, Datum, Skladiste, IDdokumenta, BrDokumenta, " _
  66.                     & "PartnerID, RadniNalog, OperID, StatusTR, DatumU, Brisanje )IN '" & ImeTmpBaze _
  67.                     & "' SELECT " & PrefiksS & "& [IDTransakcije] AS ID, Datum, Skladiste,IDdokumenta, " _
  68.                     & "BrDokumenta,PartnerID, RadniNalog, OperID, StatusTR,DatumU, Brisanje " _
  69.                     & "FROM tblTransakcije IN '" & ImeBaze & "' " & SQL(0)
  70.                     DoCmd.RunSQL (SQL(1))
  71.                     SQL(2) = "INSERT INTO tblUlazIzlaz ( IDTransakcije, Sifra, Ulaz, Izlaz, Status, DatumU )IN '" & ImeTmpBaze _
  72.                         & "' SELECT " & PrefiksS & " & [IDTransakcije] AS ID, Sifra, Ulaz, Izlaz, Status, DatumU " _
  73.                         & "FROM tblUlazIzlaz IN '" & ImeBaze & "' " & SQL(0)
  74.                     DoCmd.RunSQL (SQL(2))
  75.                      
  76.              End If
  77.         Loop
  78. Set tmpBaza = Nothing
  79. Set Db = Nothing
  80. DoCmd.SetWarnings True
  81. End Function

pmiroslav 17.07.2013 09:05
Predmet:Re: Spajanje arhiviranih baza

Jučer sam testirao ovaj tvoj novi kod i vidim da nije dobro. Zapravo ja sam se zapleo i nisam dobro objasnio. U mom slučaju u prvoj bazi 2011 godine imam 2822 artikla čije stanje je upisano kao ulaz na inventuri pa se inventurno stanje tih artikala se u narednim godinama viÅ¡e nebi trebalo prikazivati. Ali u 2012 imam 132 novo upisana artikla (Query_2012 Without Matching Query_2011) i to bi trebalo upisati. I onda opet u 2013 imam 124 nova artikla kojih nije bilo u predhodnim godinama itd.
E sad ako se ovo može riješiti dobro, a ako ne može opet dobro.
Prilozi:
PrimjerMp.rar (Velicina datoteke: Bajt)

zxz 17.07.2013 09:56
Predmet:Re: Spajanje arhiviranih baza

Tebi u stvari trebaju oni koji imaju u koloni IdDokumenta <>1.
Jesam li u pravu?