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 » Kako uvesti podatke iz XML-a
kenan 10.12.2015 15:55
Predmet:Re: Kako uvesti podatke iz XML-a

Hvala na angazmanu, to bi bilo to

zxz 10.12.2015 17:59
Predmet:Re: Kako uvesti podatke iz XML-a

E sad jos jedno pitanje.
Hocemo li praviti kod samo za uvoz podataka u gotove tabele ili da se kodom kreiraju i tabele.
Postoji problem kreiranja gotovim kodom jer se nemoze tip polja uzeti iz xsd fajla, bar ne za sva polja jer nema.
Morao bi znaci fiksno napraviti kod za svaku tabelu pojedinacno.
Prvo da cujem kako cemo praviti.
jel samo import podataka u postojece tabele ili kreiranje tabela pa import podataka u njih?

kenan 10.12.2015 19:31
Predmet:Re: Kako uvesti podatke iz XML-a

mislim da bi bilo praktičnije da ide u neke pomočne tabele pa onda ja mogu kopirati dalje i grati se sa podatcima u suprotnom bi vas morao gnjaviti sa veznim podatcima u pravim tabelama.

zxz 10.12.2015 20:31
Predmet:Re: Kako uvesti podatke iz XML-a

Dobro ja cu napraviti tabele rucno i kod koji prebacuje podatke u te tabele a ti ih poslije prebacuj gdje hoces.
Neznam hocul veceras naci vremena ako ne onda tek preksutra jer sutra znam da nemogu.

zxz 12.12.2015 22:03
Predmet:Re: Kako uvesti podatke iz XML-a

Evo ti .
Nisam testirao pa ti malo istestiraj.
Ne zaboravi na pocetku upisati putanju do fajla u kontsantu ili pak tu napravi kod za ucitavanje fajla a mozda do i imas.
Ako hoces da ucitavas imam jakod ako nemas.
PreuzmiIzvorni kôd (Visual Basic):
  1. Option Compare Database
  2. Option Explicit
  3. Const Putanja = "c:\_Forum\Obrada\bbb.txt" ' putanja do fajla
  4. Dim Db As Database
  5. Dim Rs As Recordset
  6. Dim tdf As TableDef
  7. Dim fld As Field
  8. Function ImportXML()
  9. Dim ImeTabele As String, temp As String
  10. Dim Poz As Integer, I As Integer
  11.  
  12. ImeTabele = "program"
  13. I = 1
  14. Set Db = CurrentDb
  15. Close #1
  16. Open Putanja For Input As 1
  17. While Not EOF(1)
  18. Line Input #1, temp
  19. Poz = InStr(1, temp, ImeTabele)
  20.  If Poz > 0 Then
  21.   If ImeTabele = "<tabela" Or ImeTabele = "podaci godina" Then
  22.   ImeTabele = temp
  23.   End If
  24.   Call PripremiTabelu(ImeTabele)
  25.   If I < 4 Then
  26.   I = I + 1
  27.   End If
  28.   ImeTabele = Choose(I, "program", "subjekt", "podaci godina", "<tabela")
  29.  End If
  30. Wend
  31. Close #1
  32. End Function
  33.  
  34. Private Sub PripremiTabelu(ImeT)
  35. Dim Podatak As String, Tabela As String
  36. Dim I As Integer, Poz(2) As Integer
  37.  
  38. Poz(0) = InStr(1, ImeT, "tabela")
  39. Poz(1) = InStr(1, ImeT, "podaci godina")
  40.     If Poz(0) > 0 Then
  41.         Poz(1) = InStr(1, ImeT, "=") + 2
  42.         Poz(2) = InStr(1, ImeT, ">") - 1
  43.         Tabela = Mid(ImeT, Poz(1), Poz(2) - Poz(1))
  44.         ImeT = "tabela"
  45.         Set tdf = Db.CreateTableDef(Tabela)
  46.         Set fld = tdf.CreateField("ID", dbText, 6)
  47.         tdf.Fields.Append fld
  48.     ElseIf Poz(1) > 0 Then
  49.         Dim Podatak2 As String
  50.         Poz(0) = InStr(1, ImeT, "godina=") + 8
  51.         Poz(1) = InStr(1, ImeT, "period=") - 2
  52.         Poz(2) = InStr(1, ImeT, ">") - 11
  53.         Podatak = Mid(ImeT, Poz(0), Poz(1) - Poz(0))
  54.         Podatak2 = Mid(ImeT, Poz(1) + 10, Poz(2) - Poz(1))
  55.         ImeT = "podaci godina"
  56.         Set tdf = Db.CreateTableDef(ImeT)
  57.         Set fld = tdf.CreateField("ID", dbText, 6)
  58.         tdf.Fields.Append fld
  59.     Else
  60.         Set tdf = Db.CreateTableDef(ImeT)
  61.         Set fld = tdf.CreateField("ID", dbLong)
  62.         fld.Attributes = dbAutoIncrField
  63.         tdf.Fields.Append fld
  64.     End If
  65.     On Error Resume Next
  66.     Db.TableDefs.Append tdf
  67.     If Err.Number = 3010 Then
  68.     Err.Clear
  69.     On Error GoTo 0
  70.     DoCmd.DeleteObject acTable, tdf.Name
  71.     Db.TableDefs.Append tdf
  72.     ElseIf Err.Number > 0 Then
  73.     MsgBox "DoÅ¡lo je do greÅ¡ke"
  74.     End
  75.     End If
  76.  
  77. Select Case ImeT
  78.  
  79. Case "Program"
  80. tdf.Fields.Append tdf.CreateField("Verzija", dbText, 50)
  81. Podatak = UcitajP
  82. Set Rs = Db.OpenRecordset(ImeT)
  83. Rs.AddNew
  84. Rs.Fields(1) = Podatak
  85. Rs.Update
  86. Rs.Close
  87. Set tdf = Nothing
  88. Case "Subjekt"
  89. tdf.Fields.Append tdf.CreateField("id_broj", dbText, 13)
  90. tdf.Fields.Append tdf.CreateField("cert_racunovodja", dbText, 20)
  91. tdf.Fields.Append tdf.CreateField("cert_rac_lic", dbText, 15)
  92. tdf.Fields.Append tdf.CreateField("email", dbText, 50)
  93. tdf.Fields.Append tdf.CreateField("pvelicina", dbText, 15)
  94. tdf.Fields.Append tdf.CreateField("velicina", dbText, 15)
  95. Set Rs = Db.OpenRecordset(ImeT)
  96. Rs.AddNew
  97. For I = 1 To 6
  98. Podatak = UcitajP
  99. If Trim(Podatak) <> "" Then
  100. Rs.Fields(I) = Podatak
  101. End If
  102. Next I
  103. Rs.Update
  104. Rs.Close
  105. Case "podaci godina"
  106. tdf.Fields.Append tdf.CreateField("godina", dbText, 4)
  107. tdf.Fields.Append tdf.CreateField("period", dbText, 20)
  108. Set Rs = Db.OpenRecordset(ImeT)
  109. Rs.AddNew
  110. Rs.Fields(1) = Podatak
  111. Rs.Fields(2) = Podatak2
  112. Rs.Update
  113. Rs.Close
  114. Case "Tabela"
  115. Dim Naziv As String, Podatak1 As String, temp As String
  116. Dim Nazivi As String
  117. If Tabela = "promjene_u_kapitalu" Then
  118. tdf.Fields.Append tdf.CreateField("DK", dbSingle)
  119. tdf.Fields.Append tdf.CreateField("RR", dbSingle)
  120. tdf.Fields.Append tdf.CreateField("ND", dbSingle)
  121. tdf.Fields.Append tdf.CreateField("OR", dbSingle)
  122. tdf.Fields.Append tdf.CreateField("AND", dbSingle)
  123. tdf.Fields.Append tdf.CreateField("U", dbSingle)
  124. tdf.Fields.Append tdf.CreateField("MI", dbSingle)
  125. tdf.Fields.Append tdf.CreateField("UK", dbSingle)
  126. Else
  127. tdf.Fields.Append tdf.CreateField("bruto", dbSingle)
  128. tdf.Fields.Append tdf.CreateField("ispravka", dbSingle)
  129. tdf.Fields.Append tdf.CreateField("tekuca_godina", dbSingle)
  130. tdf.Fields.Append tdf.CreateField("prosla_godina", dbSingle)
  131. End If
  132. Set Rs = Db.OpenRecordset(Tabela)
  133. Line Input #1, temp
  134. Nazivi = ""
  135. Rs.AddNew
  136. Do While InStr(1, temp, "</tabela") = 0
  137. Nazivi = Nazivi & Naziv
  138. UpisPod temp, Naziv, Podatak, Podatak1
  139. If InStr(1, Nazivi, Naziv) > 0 Then
  140. Rs.Update
  141. Rs.AddNew
  142. Nazivi = ""
  143. End If
  144. Rs.Fields(0) = Val(Podatak)
  145. Rs(Naziv) = Val(Podatak1)
  146. Line Input #1, temp
  147. Loop
  148. Rs.Close
  149. End Select
  150.  
  151. End Sub
  152.  
  153. Private Sub UpisPod(temp, Naziv, Podatak, Podatak1)
  154. Dim Poz(4) As Integer
  155. Poz(0) = InStr(1, temp, "aop id=") + 8
  156. Poz(1) = InStr(1, temp, "kolona=") - 2
  157. Poz(2) = InStr(1, temp, "kolona=") + 8
  158. Poz(3) = InStr(1, temp, ">") - 1
  159. Poz(4) = InStr(1, temp, "</")
  160. Podatak = Mid(temp, Poz(0), Poz(1) - Poz(0))
  161. Naziv = Mid(temp, Poz(2), Poz(3) - Poz(2))
  162. Podatak1 = Mid(temp, Poz(3) + 2, Poz(4) - Poz(3) - 2)
  163. End Sub
  164. Function UcitajP() As String
  165. Dim temp As String
  166. Dim Poz(1) As Integer
  167.  
  168. Line Input #1, temp
  169. Poz(0) = InStr(1, temp, ">") + 1
  170. Poz(1) = InStr(1, temp, "</")
  171. UcitajP = Mid(temp, Poz(0), Poz(1) - Poz(0))
  172. End Function

kenan 05.12.2015 19:41
Predmet:Re: Kako uvesti podatke iz XML-a

možda ranije nisam bio najprecizniji ali ja bih htio da u svoju bazu uvezem xml file ovaj

ps namjerno snimljen u txt formatu zeza me zip
Prilozi:
firma xxx.txt (Velicina datoteke:55.98 KB)

zxz 05.12.2015 20:53
Predmet:Re: Kako uvesti podatke iz XML-a

Da mozda ne mislis da uvezes ovako kako jeste u neko polje neke tabele.
Gore sam dao kod za uvoz u postojecu bazu.

Bosanec 05.12.2015 21:02
Predmet:Re: Kako uvesti podatke iz XML-a

sumnjam da se može uvesti ovaj xml file koliko vidim da je to od godiÅ¡njeg obračuna
previÅ¡e je komplikovan morao bi imati odgovarajuću tabele
za svaki obrazac
BS
BU
Gotovinski tok
Promjene na kapitalu
Posebni podaci
aneks

možda neko ima neko rješenje

Pozdrav

kenan 03.12.2015 22:07
Predmet:Kako uvesti podatke iz XML-a

Zdravo svima

ima li neko gotov neki primjer kako uvesti podatke iz XML-a u Access putem petlje

Gotov neki jednostavni primjer bi bio najbolji ako nije problem

Unaprijed zahvalan

zxz 04.12.2015 01:02
Predmet:Re: Kako uvesti podatke iz XML-a

Uvoz u drugu mdb

PreuzmiIzvorni kôd (Visual Basic):
  1. Function ExportXML()
  2. Dim ApAces
  3. Set ApAces = CreateObject("Access.Application")
  4. ApAces.OpenCurrentDatabase "D:\Baza.mdb"
  5. ApAces.ImportXML "D:\Fajlxml.xml", acAppendData
  6. End Function
Uvoz xml u postojecu bazu
PreuzmiIzvorni kôd (Visual Basic):
  1. Function ExportXMLUIstu()
  2. Access.ImportXML "D:\Fajlxml.xml", acAppendData
  3. End Function