Avatar billede yuksel Nybegynder
18. april 2005 - 11:16 Der er 32 kommentarer og
1 løsning

hentning fra xml ?

Hej til alle.

jeg har en knap på en af mine forme, og når jeg trykker på den, så skal den hente nogle ting fra forskellige xml, filer.

jeg har en main xml som hedder main.xml eks.
jeg skal bruge alle dem der hedder bilnr.

i den er der 3 noder jeg skal bruge
<bilnr> 1874 </bilnr>
.............
..............
<bilnr> 1685 </bilnr>
osv.

i den samme mappe er der flere xml filer, disse hedder
det samme som bilnr (1874.xml), (1685.xml)

jeg skal så læse alle noder fra disse og gemme dem i min database. via sql insert.

men ved ikke rigtigt hvordan man læser og fra xml og alt det der.
er der nogen der har en god ide til noget kode  ?
Avatar billede yuksel Nybegynder
18. april 2005 - 11:16 #1
1874 og 1685 er nøgeler i min tabel
Avatar billede terry Ekspert
18. april 2005 - 12:07 #2
Hi yuksel
XML documents arent usually what Access developers get involved with.
I would suggets that you look at the import wizard, this should be able to import XML documents into a table.
Then you should be able to loop through each of the records in the table and import the other XML documents into another tables
Avatar billede terry Ekspert
18. april 2005 - 12:21 #3
You can also read XML documents if you have a reference to Microsoft XML.
Here is a VERY SIMPLE example.

Function ReadXMLDoc()
Dim doc As MSXML2.DOMDocument
Dim nodes As IXMLDOMNodeList
Dim i As Integer


On Error GoTo Proc_ERR

    Set doc = CreateObject("msxml2.DOMDocument")
    doc.async = False
   
    doc.Load "C:\scanplanTest.xml"
   
    Set nodes = doc.selectNodes("//invoice")
   
    Debug.Print nodes.length 'Number of nodes, with base = 0
   
    For i = 0 To nodes.length - 1
   
        Debug.Print nodes(i).Attributes.getNamedItem("date").Text
        Debug.Print nodes(i).childNodes(0).Text
        Debug.Print nodes(i).childNodes(1).Text
        Debug.Print nodes(i).childNodes(2).Text
        Debug.Print nodes(i).childNodes(3).Text
        Debug.Print nodes(i).childNodes(4).Text
       
    Next i
   
    Exit Function
   
End Function
Avatar billede terry Ekspert
19. april 2005 - 10:20 #4
hi yuksel, can you give some feedaback, its easier to help!
Avatar billede yuksel Nybegynder
19. april 2005 - 10:22 #5
jeg kan ikke finde import wizard i access ?
Avatar billede yuksel Nybegynder
19. april 2005 - 10:30 #6
ved du hvor den er ?
Avatar billede yuksel Nybegynder
19. april 2005 - 10:32 #7
faktisk har tingene ændret sig lidt, nu skal jeg søge efter 2 forskellige main.xml filer samtidiget,og der skal komme en pop-up og jeg skal derfra vælge en af dem, også skal den indlæse 3 felter fra den, og de felter skal tildeles nogle variabler, disse variabler skal munde ud i navne på 3 nye xml filer, og der er så disse 3 ny xml filer som skal gemmes i en tabel eller flere.
Avatar billede terry Ekspert
19. april 2005 - 11:13 #8
file+get external data+import menu!
Avatar billede yuksel Nybegynder
19. april 2005 - 11:20 #9
jamen der, får jeg ikke noget knap eller vb kode hvor brugeren altid kan trykke og importere. den smider det bare ind i en tabel. også stopper den vist der
Avatar billede terry Ekspert
19. april 2005 - 11:32 #10
I think the reason why the XMl is automatically put into one or more tables is because XML files can be so complex that they can in fact contain data to more than one table.

I think your best method is to use something like the XMl example I gae to import it yourself
Avatar billede yuksel Nybegynder
19. april 2005 - 12:31 #11
terry denne melder fejl.


Private Sub Kommandoknap0_Click()
Dim doc As MSXML2.DOMDocument
Dim nodes As IXMLDOMNodeList
Dim i As Integer
Dim a

    Set doc = CreateObject("msxml2.DOMDocument")
    doc.async = False
   
    doc.Load "E:\test\main.xml"
   
    Set nodes = doc.selectNodes("//order")
   
    Debug.Print nodes.length 'Number of nodes, with base = 0
   
    For i = 0 To nodes.length - 1
   

      a = list(i).bilnr(0).Text
      MsgBox a
    Next i
   
    Exit Function
   
End Function



kan du se hvad jeg har gjort galt !
Avatar billede yuksel Nybegynder
19. april 2005 - 12:32 #12
min xml ser sådan ud:
<ordre>
<list>
<bilnr>1<\bilnr>
<\list>
<list>
<bilnr>2<\bilnr>
<\list>
<\order>
Avatar billede terry Ekspert
19. april 2005 - 14:19 #13
what error do you get?

You need a reference to Microsoft XML
(tools+references menu in code view)
Avatar billede yuksel Nybegynder
19. april 2005 - 15:02 #14
den melder at den ikke kender sub og funct... list(i)

a = list(i).bilnr(0).Text
Avatar billede terry Ekspert
19. april 2005 - 15:10 #15
take a CLOSE at your XML document

<ordre>
.
</order>
Avatar billede yuksel Nybegynder
19. april 2005 - 15:11 #16
this is just example it not the real, the real is working fine in internetexplore
Avatar billede terry Ekspert
19. april 2005 - 15:13 #17
I'll put something together and get back to you
Avatar billede yuksel Nybegynder
19. april 2005 - 15:31 #18
ok :)
Avatar billede terry Ekspert
19. april 2005 - 15:50 #19
Function ReadXMLDoc()
Dim doc As MSXML2.DOMDocument
Dim nodes As IXMLDOMNodeList
Dim i As Integer


On Error GoTo Proc_ERR

    Set doc = CreateObject("msxml2.DOMDocument")
    doc.async = False
   
 
    doc.Load "E:\test\main.xml"

   
    Set nodes = doc.selectNodes("//list")
   
    Debug.Print nodes.length 'Number of nodes, with base = 0
   
    For i = 0 To nodes.length - 1

      MsgBox nodes(i).childNodes(0).Text

    Next i
   
     
    Exit Function
   

Proc_ERR:

    MsgBox "Error " & Err.Number & " - " & Err.Description
   
    Resume Next
   
   

End Function
Avatar billede yuksel Nybegynder
19. april 2005 - 15:58 #20
jeg prøver den lige
Avatar billede yuksel Nybegynder
19. april 2005 - 16:05 #21
skal jeg ændre childNodes til noget andet


MsgBox nodes(i).childNodes(0).Text


min xml ser sådan ud ca.:

- <order>
- <person>
- <ide>
  <id>15855</id>
  </ide>
- </person>
- <person>
- <ide>
  <id>1185</id>
  </ide>
- </person>

- </order>
Avatar billede yuksel Nybegynder
19. april 2005 - 16:06 #22
Set nodes = doc.selectNodes("//list")
den skal da også ændres
Avatar billede yuksel Nybegynder
19. april 2005 - 16:07 #23
jeg har prøvet sådan her men det virker bare ikke ?

Set nodes = doc.selectNodes("//order/person/ide")
MsgBox nodes(i).id(0).Text
Avatar billede terry Ekspert
19. april 2005 - 16:21 #24
Set nodes = doc.selectNodes("//person")
MsgBox nodes(i).childNodes(0).Text
Avatar billede yuksel Nybegynder
19. april 2005 - 16:33 #25
Den hopper over denne linje selvom xml filen har ting der inde
MsgBox nodes(i).id(0).Text
Avatar billede yuksel Nybegynder
19. april 2005 - 16:34 #26
den hopper over denne linje
MsgBox nodes(i).childNodes(0).Text
Avatar billede terry Ekspert
19. april 2005 - 16:40 #27
Use MY CODE not your own!

MsgBox nodes(i).childNodes(0).Text
Avatar billede terry Ekspert
19. april 2005 - 16:41 #28
if you cant get it to work can you send your dB and XML file to
eksperten@NOSPAMsanthell.dk
remove NOSPAM

I will look later!
Avatar billede yuksel Nybegynder
19. april 2005 - 16:42 #29
ok
Avatar billede terry Ekspert
19. april 2005 - 18:05 #30
have you sent your dB?
Avatar billede terry Ekspert
20. april 2005 - 10:29 #31
.
Avatar billede yuksel Nybegynder
20. april 2005 - 10:45 #32
jeg har lavet det med et andet metode, men tak for hjælpen
Avatar billede terry Ekspert
20. april 2005 - 10:48 #33
selv tak
can we hear how you have done it?

mvh
Terry
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester