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 » Spajanje arhiviranih baza
pmiroslav 11.07.2013 09:12
Predmet:Re: Funkcija SUM uz uvijet

Ja sam to napravio ovako.
Baze se zovu Prodaja_2011_be.mdb , Prodaja_2012_be.mdb i Prodaja_2013_be.mdb
Na kompjuteru korisnika sam mapirao particiju sa servera i ona ima putanju
S:\
originalna putanja je
\\Rd-prodaja\ServerRD~Prodaja_2013_be.mdb
Prilozi:
Image1.jpg (Velicina datoteke:96.69 KB)
Image2.jpg (Velicina datoteke:68.84 KB)
Image3.jpg (Velicina datoteke:55.64 KB)

pmiroslav 11.07.2013 10:11
Predmet:Re: Spajanje arhiviranih baza

Promjenio sam naslov teme jer se viÅ¡e ne radi o onome o čemu smo poćeli.

zxz 11.07.2013 18:21
Predmet:Re: Spajanje arhiviranih baza

Evo samo na pocetku u konstanti promijeni putanu da tvojih baza:
PreuzmiIzvorni kôd (Visual Basic):
  1. Const DirPutanja = "D:\Internet\obrada\_TempBaza\Baze\"
  2. Function KreirajTemp()
  3. Dim wrk As Workspace
  4. Dim Db As Database, tmpBaza As Database
  5. Dim Rs As Recordset, tmpRs As Recordset
  6. Dim OrgTabela As TableDef, TmpTabela As TableDef
  7. Dim ImeBaze As String, ImeTmpBaze As String
  8. Dim ImeFajla As String, SQL As String
  9. Dim Prefiks As Integer
  10.  
  11.  
  12.  
  13. DoCmd.SetWarnings False
  14. ImeTmpBaze = Db_Putanja & "tmp.mdb"
  15. If Dir(ImeTmpBaze) <> "" Then Kill ImeTmpBaze
  16. Set Db = CurrentDb()
  17. Set wrk = DBEngine.Workspaces(0)
  18. 'Tabela transakcije
  19. Set tmpBaza = wrk.CreateDatabase(ImeTmpBaze, dbLangGeneral)
  20. Set OrgTabela = Db.TableDefs("tblTransakcije")
  21. Set TmpTabela = tmpBaza.CreateTableDef("tblTransakcije")
  22. For Each fld In OrgTabela.Fields
  23.     With TmpTabela
  24.     .Fields.Append .CreateField(fld.Name, fld.Type, fld.Size)
  25.     End With
  26. Next fld
  27. tmpBaza.TableDefs.Append TmpTabela
  28.            
  29. ImeFajla = Dir(DirPutanja, vbDirectory)
  30.         Do While Len(ImeFajla) > 0
  31.             ImeFajla = Dir
  32.              If Len(ImeFajla) > 2 Then
  33.              ImeBaze = DirPutanja & ImeFajla
  34.              Prefiks = Mid(ImeBaze, (Len(ImeBaze) - 8), 2)
  35.                 SQL = "INSERT INTO tblTransakcije (IDTransakcije, Datum, Skladiste, IDdokumenta, BrDokumenta, " _
  36.                & "PartnerID, RadniNalog, OperID, StatusTR, DatumU, Brisanje )IN '" & ImeTmpBaze _
  37.                & "' SELECT " & Prefiks & "& [IDTransakcije] AS ID, Datum, Skladiste,IDdokumenta, " _
  38.                & "BrDokumenta,PartnerID, RadniNalog, OperID, StatusTR,DatumU, Brisanje " _
  39.                & "FROM tblTransakcije IN '" & ImeBaze & "';"
  40.                DoCmd.RunSQL (SQL)
  41.              End If
  42.         Loop
  43. Set OrgTabela = Nothing
  44. Set TmpTabela = Nothing
  45. 'tabela ulazizlaz
  46. Set OrgTabela = Db.TableDefs("tblUlazIzlaz")
  47. Set TmpTabela = tmpBaza.CreateTableDef("tblUlazIzlaz")
  48. For Each fld In OrgTabela.Fields
  49.     With TmpTabela
  50.     .Fields.Append .CreateField(fld.Name, fld.Type, fld.Size)
  51.     End With
  52. Next fld
  53. tmpBaza.TableDefs.Append TmpTabela
  54. ImeFajla = Dir(DirPutanja, vbDirectory)
  55.         Do While Len(ImeFajla) > 0
  56.             ImeFajla = Dir
  57.              If Len(ImeFajla) > 2 Then
  58.              ImeBaze = DirPutanja & ImeFajla
  59.              Prefiks = Mid(ImeBaze, (Len(ImeBaze) - 8), 2)
  60.                 SQL = "INSERT INTO tblUlazIzlaz ( IDTransakcije, Sifra, Ulaz, Izlaz, Status, DatumU )IN '" & ImeTmpBaze _
  61.                    & "' SELECT " & Prefiks & " & [IDTransakcije] AS ID, Sifra, Ulaz, Izlaz, Status, DatumU " _
  62.                    & "FROM tblUlazIzlaz IN '" & ImeBaze & "';"
  63.                DoCmd.RunSQL (SQL)
  64.              End If
  65.         Loop
  66. Set OrgTabela = Nothing
  67. Set TmpTabela = Nothing
  68. Set tmpBaza = Nothing
  69. Set Db = Nothing
  70. DoCmd.SetWarnings True
  71. End Function
  72. Function Db_Putanja() As String
  73.  '------------------------------------------------
  74. 'Ova funkcija pronalazi putanju postojee baze
  75. 'Autor funkcije ZXZ
  76. '-------------------------------------------------
  77.    Dim Db As Database, Putanja As String
  78.    
  79.     On Error Resume Next
  80.     Set Db = DBEngine(0)(0)
  81.     Putanja = Db.Name
  82.     Do Until Right$(Putanja, 1) = "\"
  83.         Putanja = Left$(Putanja, Len(Putanja) - 1)
  84.     Loop
  85.  
  86.     Db_Putanja = Putanja
  87. End Function

pmiroslav 11.07.2013 18:51
Predmet:Re: Spajanje arhiviranih baza

Kopirao sam ovo u modul i isprobao u Immediate prozoru sa
? KreirajTemp()

funkcija je napravila novu bazu tmp.mdb sa tablicama tblTransakcije i tblUlazIzlaz

Još pitanje dali ovo treba staviti u bazu na serveru ili na Front end

zxz 11.07.2013 21:29
Predmet:Re: Spajanje arhiviranih baza

To ide na tvoju api, i konstantu pises putanju do baza na serveru.
Sad mozes drzati linkane tabele iz api i napraviti Query od njih bez obzira sto se stalno baza temp brise i pravi.
Ona ce pokupiti sve podatke iz svih godina koje se nalaze na pisanoj putanji.

zxz 13.07.2013 21:07
Predmet:Re: Spajanje arhiviranih baza

Sta bi za ovo.
Jel treba jos pojasnjenja.

pmiroslav 13.07.2013 22:14
Predmet:Re: Spajanje arhiviranih baza

Sve je OK. Isprobao sam na malom primjeru i sve radi svrÅ¡eno. Ali viked je, a prava baza mi je na poslu pa ću u ponedeljek probati na originalu, Jedino joÅ¡ ostaje da pomjenim IdTransakcije kao Å¡to sam rekao u postu #9.
MožeÅ¡ li mi i tu pomoći da se nekim kodom da se to brže odradi.

zxz 13.07.2013 22:30
Predmet:Re: Spajanje arhiviranih baza

Rijesio sam ti ja to.
Mozda nisi dobro pogledao.
Na svaki idTransakcije dodao sam i 2 cifre godine te sam tako rijesio duplikate.
Znaci nema duplikata i sve je relacijski ispravno.
Nisam htio relacije kodom praviti jer to mozes napraviti u Query-u i njega nemoras brisati on uvijek moze ostati isti bez obzira sto se baza temp svaki puta brise kada pokrenes proceduru.

pmiroslav 14.07.2013 10:42
Predmet:Re: Spajanje arhiviranih baza

Nisam dobro gledao pa to nisam odmah uočio. To je genijalno.
Hvala na trudu i možda će joÅ¡ biti pitanja sutra kada probam na pravoj bazi.

pmiroslav 15.07.2013 07:33
Predmet:Re: Spajanje arhiviranih baza

Evo upravo isprobavam kod i problem mi pravi *.ldb fail koji se napravi na serveru. Pri pokretanju funkcije KreirajTemp() javlja se greška

Unrecognized database format 'S:\Prodaja_2013_be.ldb'