Centar za edukaciju-BiH



#11 06.12.2015 22:06
kenan Van mreze
Clan
Registrovan od:10.02.2011
Postovi:191


Predmet:Re: Kako uvesti podatke iz XML-a
e to bi bilo to još kad bi ja to znao pokupiti bilo bi ekstra
↑  ↓

#12 07.12.2015 20:08
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Kako uvesti podatke iz XML-a
Evo ovako.
Ova tvoja struktura nije dobra prema xsd fajlu a i bez toga struktura nije dobra.
Mozes probati u nekom validatoru xml.
Ima ih puno.
No svejedno pretpostavljam da je to ispitano i da taklo prolazi sto znaci da nemozemo nista tumijenjati.
Ja hocu da postavim kako bi tabele izgledale pa ti vidi dali ti to pase pa cu ti onda napraviti kod kad stignem.

-Prva tabela Sumjekt
Polja:
ID_Broj
Cert_Racunovodja
Cert_Rac_Lic
Email
Pvelicina
Velicina        

_Druga tabela Period
samo jedno polje ZaPeriod

-Treca tabela bilans_stanja
Polja:
Id
Bruto
Ispravka
tekuca_godina
prosla_godina

-Cetvrta tabela bilans_uspjeha
Id
tekuca_godina
prosla_godina

itd..

Jel ti to bas ovako treba da bude ili si nekako drugacije zamislio.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#13 10.12.2015 14:55
kenan Van mreze
Clan
Registrovan od:10.02.2011
Postovi:191


Predmet:Re: Kako uvesti podatke iz XML-a
Hvala na angazmanu, to bi bilo to
↑  ↓

#14 10.12.2015 16:59
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


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?
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#15 10.12.2015 18:31
kenan Van mreze
Clan
Registrovan od:10.02.2011
Postovi:191


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.
↑  ↓

#16 10.12.2015 19:31
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


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.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#17 12.12.2015 21:03
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


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

Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#18 14.12.2015 13:43
kenan Van mreze
Clan
Registrovan od:10.02.2011
Postovi:191


Predmet: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 Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet: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
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#20 14.12.2015 18:01
kenan Van mreze
Clan
Registrovan od:10.02.2011
Postovi:191


Predmet: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
↑  ↓

Stranice (5):1,2,3,4,5


Sva vremena su GMT +01:00. Trenutno vrijeme: 1: 14 pm.