Страница: 1 | 2 |
Вопрос: Как красиво объеденить два DataSet?
Добавлено: 23.09.07 04:34
Автор вопроса: HACKER
tmpDS1.ReadXml(TmpPath & "\temp1.xml")
Dim tmpDS2 As New DataSet
tmpDS2.ReadXml(TmpPath & "\temp2.xml")
Dim myDS As New DataSet
myDS = tmpDS1
tmpDS1 = Nothing
myDS.Merge(tmpDS2)
With DataGridView1
.DataSource = myDS
.DataMember = "Item"
End With
Оно то их объеденяет, но в гриде получается что данные из temp2.xml с новых строках грида... хз как объяснить..
Есть в temp1.xml
<Items>
<Item>
<EANCode>401</EANCode>
<PlantID>2</PlantID>
</Item>
</Items>
И в temp2.xml
<Items>
<Item>
<Param1>213</Param1>
<Param2>223</Param2>
</Item>
</Items>
И я хочу оба файла загрузить в грид, да так чтобы они слились по нормальному, как будто это один файл, т.е. грид должен получится из 4 столбцов
401 2 213 223
А сейчас получается:
401 2 пусто пусто
213 223
Как-то без правки XML можно обойтись, т.е. просто слить шобы було кросиво?!
Ответы
Всего ответов: 19
Номер ответа: 1
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 23.09.07 11:38
Нелогичено как-то... Если б эти таблички как-то связаны были (скажем и
там и там было поле ID, и соответственно связывать надо строки с
одинаковыми ID) то было б понятно.
А почему бы вручную не слить? СОздать новый DataTable, пробежаться по
строкам первого и второго датасетов и залить в DataTable,
Номер ответа: 2
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #2
Добавлено: 23.09.07 18:28
:\ Я так в вб6 делал, а это ж дотнет. Ты ничего не понимаешь! ))))
Номер ответа: 3
Автор ответа:
iLLyuzor
ICQ: 223685087
Вопросов: 9
Ответов: 77
Профиль | | #3
Добавлено: 24.09.07 11:35
И здесь ручками придётся, если ты хочешь слить два DataSet с различными структурами. Павел правильно сказал - должно быть ключевое поле.
Читай "Сеппа Д. ADO.NET 2.0" - там всё по полочкам.
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 24.09.07 18:54
Говно а не дотнет, ручками я и в vb6 могу Где же обещанная скорость разработки программ? Или от того что оно контролы на форме умеет само позиционироваться с привязками, то уто уже скорость разработки программы?
Номер ответа: 5
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #5
Добавлено: 24.09.07 19:26
При кривом проектировании на любых средствах разработки программы пишутся долго, сложно и гемморойно )
Номер ответа: 6
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #6
Добавлено: 26.09.07 12:40
Дык подскажи как лучше спроектировать, я ж рад хорошему предложению. Или подход взять и всё самому сделать ручками (Расковырят XML XPath'eм) теперь в дотнете называется хороше проектирование? :\
Ладно.. Вопрос №2, но связанный с этой темой.
Как после привязки DataGridView к DataSet, изменять значение ячеек в DataGridView?
Номер ответа: 7
Автор ответа:
iLLyuzor
ICQ: 223685087
Вопросов: 9
Ответов: 77
Профиль | | #7
Добавлено: 26.09.07 14:01
Я так понимаю по аське я к тебе не достучался
Повторю здесь, может кому ещё интересно будет.
ADO.NET 2.0 для профессионалов
_ttp://www.dasbook.ru/index.php?book=723
2006 год, 562 страницы, 22 метра. Очень советую, наверное лучшая книга по ADO.NET.
Номер ответа: 8
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #8
Добавлено: 26.09.07 16:01
Я не знаю, какая у тебя стоит задача.
Номер ответа: 9
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #9
Добавлено: 27.09.07 12:22
iLLyuzor, книжецу скачал, спасибо большое. Надо ж ещё время найти почитать её
Павел
Странно, задача вроде описана выше, в самом топе Так что отсилы могут быть непонятные некоторые детали. Но я тоже не телепат, откуда я знаю что может быть непонятно.. Ты спроси, я отвечу
Номер ответа: 10
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #10
Добавлено: 27.09.07 16:13
Это не задача, а твое мнение о решении задачи.
К примеру, если б у тебя автомобиль не заводился, ты бы подумал "ну
тут видимо иммобилайзер отказал, скорей всего провод на +5 вольт
отпаялся, а у меня паяльника нету..." и пошел бы задавать вопрос:
"народ! я вот слышал, что есть такой приборчик, называется
СуперПаяльник 5.0, он всё умеет. как им припаять быстро провод на
+5 вольт в иммобилайрере?".
Номер ответа: 11
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #11
Добавлено: 27.09.07 16:13
А на самом деле это не иммобилайзер виноват - а просто кто-то двигатель ночью стырил.
Номер ответа: 12
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #12
Добавлено: 27.09.07 22:46
Номер ответа: 13
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #13
Добавлено: 27.09.07 22:54
Я к тому, что при правильном проектировании скорее всего тебе не надо
будет датасеты объединять. Как и гвозди микроскопами забивать.
Номер ответа: 14
Автор ответа:
BUMM ®
Вопросов: 8
Ответов: 482
Профиль | | #14
Добавлено: 27.09.07 22:57
to HAKER
1. При чём тут скорость разработки? В твоём случае merge делает то, что и должен делать... добавляет items в myDS из tmpDS2. откуда он знает по каким колоннам вязать записи?
2. Нафига создавать кучу датасетов???
ds.Tables.Add("tabliza1"
ds.Tables.Add("tabliza2"
ds.Tables(0).ReadXml(tmpPath & "\temp1.xml"
ds.Tables(1).ReadXml(tmpPath & "\temp1.xml"
ds.Relations.Add(' а вот здесь смотри по каким колоннам связывать
ну вобщем без ключевых полей никак
Номер ответа: 15
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #15
Добавлено: 28.09.07 01:36
Я не совсем понимаю, какое ключевое поле я должен создать, чтобы оно правильно объединилось..