Een "probleempje" dat denk ik wel interresant is voor de bezoekers van dit forum:
Ik laad xml en een xsd document in een dataset.
Deze is mooi gevuld en de relaties tussen de datatables binnen die dataset is goed aangegeven.
Een stukje uit de XML (vereenvoudigd):
.net is zelf zo slim om hier 2 tabellen van te maken:
"data" en "item" waarbij .net zelf ook id's genereert om de tabellen goed aan elkaar te koppelen.
Nu wil ik de tabellen joinen. Dat doe ik als volgt:
Het resultaat van deze merge is echter slechts 2 records:
(ongeveer)
Ik krijg dus slechts 2 records, terwijl ik graag 8 gezien zou hebben.
Voer ik de join op de juiste manier uit? Of moet dit anders?
Ik heb nog geprobeerd om data en item om te draaien maar dat levert een foutmelding op.
Iemand enig idee in welke richting ik een oplossing kan vinden?
De oplossingen die ik op internet heb gezien zijn meestal niet echt netjes. Men lost dit meestal op door door de twee tabellen te loopen en zelf op die manier een 3e tabel te genereren.
Mij lijkt dat dit gewoon via de dataset/datatables kan aangezien er relaties tussen de tabellen zijn en .net ook alle tabellen op de juiste manier aan elkaar koppelt door zelf keys/id's/kolommen te genereren waarop gekoppeld kan worden.
Ik laad xml en een xsd document in een dataset.
Deze is mooi gevuld en de relaties tussen de datatables binnen die dataset is goed aangegeven.
Een stukje uit de XML (vereenvoudigd):
XML:
1
2
3
4
5
6
7
8
9
10
11
12
| <data attr1="x" attr2="y"> <item>1</item> <item>2</item> <item>3</item> <item>4</item> </data> <data attr1="a" attr2="b"> <item>5</item> <item>6</item> <item>7</item> <item>8/item> </data> |
.net is zelf zo slim om hier 2 tabellen van te maken:
"data" en "item" waarbij .net zelf ook id's genereert om de tabellen goed aan elkaar te koppelen.
Nu wil ik de tabellen joinen. Dat doe ik als volgt:
Visual Basic:
1
2
3
4
5
6
7
| dim ds as dataset dim dt as datatable ds.ReadXmlSchema(...) ds.ReadXml(...) dt = ds.tables("data") dt.Merge(ds.Tables("item"), False, MissingSchemaAction.AddWithKey) |
Het resultaat van deze merge is echter slechts 2 records:
(ongeveer)
Visual Basic:
1
2
3
| data_id attr1 attr2 item 0 x y 4 1 a b 8 |
Ik krijg dus slechts 2 records, terwijl ik graag 8 gezien zou hebben.
Voer ik de join op de juiste manier uit? Of moet dit anders?
Ik heb nog geprobeerd om data en item om te draaien maar dat levert een foutmelding op.
Iemand enig idee in welke richting ik een oplossing kan vinden?
De oplossingen die ik op internet heb gezien zijn meestal niet echt netjes. Men lost dit meestal op door door de twee tabellen te loopen en zelf op die manier een 3e tabel te genereren.
Mij lijkt dat dit gewoon via de dataset/datatables kan aangezien er relaties tussen de tabellen zijn en .net ook alle tabellen op de juiste manier aan elkaar koppelt door zelf keys/id's/kolommen te genereren waarop gekoppeld kan worden.
[ Voor 13% gewijzigd door hing op 18-01-2008 12:43 ]