Bosna i Hercegovina



#16 10.12.2015-19:31
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,501


Subject: 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.
Pozdrav
↑  ↓

#17 12.12.2015-21:03
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,501


Subject: 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.
DownloadIzvorni kod (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

Pozdrav
↑  ↓

#18 14.12.2015-13:43
kenan Offline
Clan
Registrovan/a od: 10.02.2011-15:24
Komentari: 182


Subject: Re: Kako uvesti podatke iz XML-a
hvala sinoć sam isprobavao kod i radi perfektno i brzo ali ima jedan mali problem

kad ga snimim u svoj program ne radi ali kad ga stavim u novu bazu odradi bez problema

pitam se što

zapne odmah na početku Dim Db As Database i kad mu skinem As Database onda zapne kod Dim tdf As TableDef i kad skinem dodatno As TableDef onda stane u dijelu koda kad kreira tabele
↑  ↓

#19 14.12.2015-16:27
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,501


Subject: Re: Kako uvesti podatke iz XML-a
Vidi u referencama dali imas i ado i dao.
Vjerovatno imas .
Ako nisi koristio ado onda ga iskljuci a ako jesi onda ces morati pri dimenzionisanju u ovoj proceduri napisati sledece:
dim Db as dao.database
dim Rs ad dao.recordset
Di tdf ad dao.tabledef
Pozdrav
↑  ↓

#20 14.12.2015-18:01
kenan Offline
Clan
Registrovan/a od: 10.02.2011-15:24
Komentari: 182


Subject: Re: Kako uvesti podatke iz XML-a
Probao sam al mi nikako neide opet isto

Option Compare Database
'Option Explicit
Const Putanja = "C:\Users\KENAN\Desktop\eBilans\firma xxx.xml" ' putanja do fajla
Dim Db 'As Database
Dim Rs As Recordset
Dim tdf 'As TableDef
Dim fld As Field

kad postavim ovako

onda mi zapne Set fld = tdf.CreateField("ID", dbLong) i izbaci error 3421

u preferencama sam iskljucio ADO
Probao sam dodati DAO al jednostavno nikako da prođe imali još kakva ideja
↑  ↓

#21 14.12.2015-18:12
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,501


Subject: Re: Kako uvesti podatke iz XML-a
Nema to je to.
Poskidaj sto mozes pa zakaci primjer.
Pozdrav
↑  ↓

#22 20.12.2015-01:24
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,501


Subject: Re: Kako uvesti podatke iz XML-a
Sta bi sa ovim.
Dali proradi?
Pozdrav
↑  ↓

#23 20.12.2015-14:16
kenan Offline
Clan
Registrovan/a od: 10.02.2011-15:24
Komentari: 182


Subject: Re: Kako uvesti podatke iz XML-a
ma još se patim da proradi al nikako
↑  ↓

#24 20.12.2015-14:30
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,501


Subject: Re: Kako uvesti podatke iz XML-a
Pa daj zakaci primjer, bez onoga sto netreba znaci samo minimum.
Pozdrav
↑  ↓

#25 20.12.2015-14:49
kenan Offline
Clan
Registrovan/a od: 10.02.2011-15:24
Komentari: 182


Subject: Re: Kako uvesti podatke iz XML-a
evo sam vam poslao
↑  ↓

#26 20.12.2015-14:51
kenan Offline
Clan
Registrovan/a od: 10.02.2011-15:24
Komentari: 182


Subject: Re: Kako uvesti podatke iz XML-a
u modulu 3 je vaš kod
↑  ↓

#27 20.12.2015-16:07
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,501


Subject: Re: Kako uvesti podatke iz XML-a
Evo ovo promijeni.
Dim Db As DAO.Database
Dim rs As DAO.Recordset
Dim tdf As DAO.TableDef
Dim fld As DAO.Field

Onda odi u meni vb-a Tools--->Reference
Pogledaj ako ispred neke reference pise MISING onda je iskljuci jer ona ti ne radi.

Uf imas mnogo referenci.
Ako iskljucis onu adox onda i ne moras nista mijenjati u kodu ali neznam dali si je negdje koristio do sad jer ima mnogo koda a ja ga nemogu kompajlirati jer nemogu skupiti ove tvoje reference treba mi dan citav.
Pozdrav
↑  ↓

#28 20.12.2015-16:41
kenan Offline
Clan
Registrovan/a od: 10.02.2011-15:24
Komentari: 182


Subject: Re: Kako uvesti podatke iz XML-a
neznam kako samo isključih onaj adox i proradi odmah

hvala
↑  ↓

#29 20.12.2015-20:10
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,501


Subject: Re: Kako uvesti podatke iz XML-a
Pa rekao sam da ce raditi ali bojim se da ga negdje nisi koristio.
Probaj sad kompajlirati kod ako prodje onda ga nisi nigdje ni koristio ali ako ne prodje onda kod treba prepraviti na dao naredbe ili pak dimenzionisati rs , db i ostalo kako sam naveo.
Pozdrav
↑  ↓

#30 20.12.2015-20:16
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,501


Subject: Re: Kako uvesti podatke iz XML-a
Mnogo puta sam piso o ovome ali cini mi se da vecina ovo zanemaruje.
Postoji vise drajvera za konekciju na bazu:
dao i to nekoliko verzija
ado isrto tako nekoliko verzija
rdo nekoliko verzija itd..

E sad i ado i dao i rdo koriste naredbu rekordset za jednu skupinu podataka (redova i kolona)
Nije dobro na jednoj bazi koristiti vise drajvera jer je jedan sasvim dovoljno.
Medjutim trazeci rjesenja po forumima najcesce nadje neko rjesenje sa ado a neko drugo sa dao konekcijom i onda ako su ukjluceni i jedan i drugi dodje do konflikta jer potoje iste naredbe za neke objekte.

Tada se ispred objekta treba pisati i njgovo porijeklo odnosno kojem drajveru pripada.
Primjer:
dim Db as ado.Database
Dim Db as dao.Database

Eto toliko za sad.
Ako hocete mozemo otvoriti temu o ovome pa detaljno raspraviti.
Pozdrav
↑  ↓

Stranice (3): 1, 2, 3


All times are GMT +01:00. Current time: 12.12.2017-07:35.