Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: Как красиво объеденить два DataSet? Добавлено: 23.09.07 04:34  

Автор вопроса:  HACKER
        Dim tmpDS1 As New DataSet
        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 столбцов

EANCode | PlantID | Param1 | Param2
  401       2        213      223


А сейчас получается:
EANCode | PlantID | Param1 | Param2
  401       2       пусто     пусто
                     213       223


Как-то без правки XML можно обойтись, т.е. просто слить шобы було кросиво?!

Ответить

  Ответы Всего ответов: 19  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #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-сайт: www.vbnet.ru
 Профиль | | #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-сайт: www.vbnet.ru
 Профиль | | #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-сайт: www.vbnet.ru
 Профиль | | #10
Добавлено: 27.09.07 16:13
Это не задача, а твое мнение о решении задачи.
К примеру, если б у тебя автомобиль не заводился, ты бы подумал "ну
тут видимо иммобилайзер отказал, скорей всего провод на +5 вольт
отпаялся, а у меня паяльника нету..." и пошел бы задавать вопрос:
"народ! я вот слышал, что есть такой приборчик, называется
СуперПаяльник 5.0, он всё умеет. как им припаять быстро провод на
+5 вольт в иммобилайрере?".

Ответить

Номер ответа: 11
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #11
Добавлено: 27.09.07 16:13
А на самом деле это не иммобилайзер виноват - а просто кто-то двигатель ночью стырил.

Ответить

Номер ответа: 12
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #12 Добавлено: 27.09.07 22:46
Это не задача, а твое мнение о решении задачи.
Ненадо дурить :) Описана и задача, и моё мнение о её решении. Вот моё мнение о решении может быть неправильное, а задаче не может быть неправильная, она просто есть... Причём описана достаточно хорошо, т.к. вопросов не у кого не возникает. Другое дело что решение мало кто знает, всё предлагают мне обходные пути и прочие костыли...

Ответить

Номер ответа: 13
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #13
Добавлено: 27.09.07 22:54
Я к тому, что при правильном проектировании скорее всего тебе не надо
будет датасеты объединять. Как и гвозди микроскопами забивать.

Ответить

Номер ответа: 14
Автор ответа:
 BUMM ®



Вопросов: 8
Ответов: 482
 Профиль | | #14 Добавлено: 27.09.07 22:57
to HAKER
Говно а не дотнет, ручками я и в vb6 могу :) Где же обещанная скорость разработки программ? Или от того что оно контролы на форме умеет само позиционироваться с привязками, то уто уже скорость разработки программы? :)

1. При чём тут скорость разработки? В твоём случае merge делает то, что и должен делать... добавляет items в myDS из tmpDS2. откуда он знает по каким колоннам вязать записи?
2. Нафига создавать кучу датасетов???
Dim ds As New DataSet("moi dataset";)
        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
откуда он знает по каким колоннам вязать записи?
Я думал ему можно как-то указать...

ну вобщем без ключевых полей никак

Я не совсем понимаю, какое ключевое поле я должен создать, чтобы оно правильно объединилось..

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам