powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / DataSet Merge проблема...
17 сообщений из 17, страница 1 из 1
DataSet Merge проблема...
    #32349849
EvgenyV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, народ!
Может кто-то встречался с такой проблемой:
Есть DataSet dsOrigin с одной немодифицированной строкой и одной таблицей Table[0].
Создаю новый Dataset dsNew с абсолютно идентичной схемой,
добавляю в него новую строку и вызываю
dsOrigin.Merge(dsNew) .
После вызова в dsOrigin появляется 2 таблицы.
Где проблема?
Или я что-то делаю не правильно?

Заранее спасибо
Евгений
...
Рейтинг: 0 / 0
DataSet Merge проблема...
    #32350102
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dsOrigin.Merge(dsNew)

здесь вы опустили два параметра,
preserveChanges - по умолчанию false

Если он установлен в true, входящие значения при обновлении не будут перезаписывать существующие значения в текущей(current) версии строки. Если false, то будут.

MissingSchemaAction -

Параметр используется для указания как Merge будет обрабатывать элементы схемы в поступающих данных, которые не являются частью существующего DataSet.

Add Add the new schema information to the DataSet and populate the new columns with the incoming values. This is the default.
Насколько я понимаю, это и есть причина добавления новой таблицы в DataSet.

AddWithKey Add the new schema and primary key information to the DataSet and populate the new columns with the incoming values.

Error Throw an exception if mismatched schema information is encountered.
Ignore Ignore the new schema information

Ignore Ignore the new schema information.
...
Рейтинг: 0 / 0
DataSet Merge проблема...
    #32351000
EvgenyV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое!
...
Рейтинг: 0 / 0
DataSet Merge проблема...
    #32520064
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подскажите - можно ли с помощью dataset.merge всегда добавлять записи
в другой датасет
у меня пустой датасет ds1, из другой формы заполняю ds2
делаю ds1.merge(ds2, True, MissingSchemaAction.Add)
ds1 заполняется, потом мне нужно опять добавить значения из ds2 - опять делаю merge
и записи в ds1 перетираются новыми из ds2
или как может по другому добавлять новые записи?
...
Рейтинг: 0 / 0
DataSet Merge проблема...
    #32520365
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>ds1 заполняется, потом мне нужно опять добавить значения из ds2 - опять делаю merge
и записи в ds1 перетираются новыми из ds2

Ну практическое применение merge как раз в этом и состоит

Вы лучше расскажите поподробнее в чем задача, желательно со структруой таблиц и кодом.
...
Рейтинг: 0 / 0
DataSet Merge проблема...
    #32520469
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача проста:
в форме таблица товаров, в эту таблицу выбираю некотрые строки из другой таблицы товаров по нажатию кнопки,
выбранные товары из второй таблицы добавляются в первую,
а сейчас выходит, что ранее выбранные перетираются новыми
...
Рейтинг: 0 / 0
DataSet Merge проблема...
    #32520479
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А структуру таблиц можете привести с указанием первичных ключей
...
Рейтинг: 0 / 0
DataSet Merge проблема...
    #32520498
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И желательно еще конкретный пример, который бы показал что необходимо получить в результате
ds1 - такие данные , ds2 - другие и т.д
...
Рейтинг: 0 / 0
DataSet Merge проблема...
    #32520810
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ds1 изначально пустой, в него выбираю записи из ds2 (заполненный из табл1)
затем в ds1 редактируются значения в строках и отправляются в ту же табл1

табл1
id name date ....
1 сок 12.03.2004
2 пиво 12.03.2004
...
Рейтинг: 0 / 0
DataSet Merge проблема...
    #32521337
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>ds1 изначально пустой, в него выбираю записи из ds2 (заполненный из табл1)
затем в ds1 редактируются значения в строках и отправляются в ту же табл1

Ну я не вижу проблему использования Merge в данном случае:

Например, ds1 и ds2 полностью идентичные по своей структуре.

1) сок, пиво, водка в ds2.
ds1 пустой.

2) ds1.Merge(ds2)
В ds1 теперь сок, пиво, водка

3) Меняем водку на лимонад.
В ds1 теперь сок, пиво, лимонад

3) Отправляем изменения в БД
myDataAdapter.Update(ds1)
ds1.AcceptChanges()
...
Рейтинг: 0 / 0
DataSet Merge проблема...
    #32521442
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так мне надо не менять водку на лимонад, а добавлять!
т.е сначало выбрал в ds1 из ds2 сок, пиво, водка
а потом ещё добавил из того же ds2 лимонад
и стал список сок, пиво, водка, лимонад
а сейчас при втором выборе в ds2 лимонада он один и будет в ds1 при ds1.merge(ds2)
...
Рейтинг: 0 / 0
DataSet Merge проблема...
    #32521525
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать ImportRow или LoadDataRow.
...
Рейтинг: 0 / 0
DataSet Merge проблема...
    #32521750
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привидите код:
Как создаете, заполняете ds2, ds1? Интересует любой код где фигурируют эти объекты.

Если у вас в ds2 изначально сок, пиво, лимонад, водка то при merge в пустой ds1 и попадут сразу все 4 наименования. Я пока не понял механизм каким образом сначала туда попадает сок, пиво, водка. А затем только лимонад? То есть здесь поподробнее.
Если же у вас в ds2 изначально только сок, пиво, водка. То интересует каким образом потом появляется там лимонад?

Затем непонятно если в базе данных в таблице 1 содержатся все наименования, то куда должны сохраняться выбранные наименования или они никуда не сохраняются?

Что используется в качестве БД? Поле "Ид" в таблице 1 это первичный ключ?

Пока вопросов больше чем ответов, так как вы не приводите интересующий код, а гадать я не умею.
...
Рейтинг: 0 / 0
DataSet Merge проблема...
    #32521782
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну код ты уже видел массив datarow для dataset.merge

>>Я пока не понял механизм каким образом сначала туда попадает сок, пиво, водка. А затем только лимонад? То есть здесь поподробнее.

выбираю строки в гриде и передаю их вдругой грид (видно из ссылки выше)
потом решаю ещё добавить туда лимонад!

Затем непонятно если в базе данных в таблице 1 содержатся все наименования, то куда должны сохраняться выбранные наименования или они никуда не сохраняются?

просто меняются некоторые поля, например - дата, количество, ... и эти записи обновляются в той же самой таблице откуда выбраны!

бд - sql server, id - ключ
...
Рейтинг: 0 / 0
DataSet Merge проблема...
    #32521831
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ситуация проясняется.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim myForm As Form
Dim myParent As FormGL = CType(Me.MdiParent, FormGL)
For Each myForm In myParent.MdiChildren()
If myForm.Name = "FormNewSd" Then
CType(myForm, FormNewSd).dsNewSD = dsSD.Clone()    // Убрать эту строчку
CType(myForm, FormNewSd).dsNewSD.Merge(dataRows)
CType(myForm, FormNewSd).UltraGrid1.DataSource = CType(myForm, FormNewSd).dsNewSD
End If
Next

Теперь понятны ваши проблемы. У вас все время создается новый пустой датасет идентичныей по структуре исходному:
Код: plaintext
1.
CType(myForm, FormNewSd).dsNewSD = dsSD.Clone() 
То есть эту строку надо убрать из этой процедуры, и работать всегда с одним датасет не создавая каждый раз новый.
...
Рейтинг: 0 / 0
DataSet Merge проблема...
    #32522293
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CType(myForm, FormNewSd).dsNewSD.Merge(dataRows)
в dsNewSD у меня много таблиц,
и когда я делаю dsNewSD.Merge(dataRows)
а потом Me.ugVeks.DataSource = Me.dsNewSD
то ultragrid заполняется совершенно другим набором данных, из другой datatable dsNewSD
как можно при dsNewSD.Merge указать таблицу?
или как решить проблему?
...
Рейтинг: 0 / 0
DataSet Merge проблема...
    #32522328
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если указать что имено показывать ultragridу:
Код: plaintext
1.
2.
Me.ugVeks.DataSource = Me.dsNewSD
Me.ugVeks.DataMember = "myTable"  
Если конечно свойство DataMember у UltraGrid имеется. Если его нет то 100 % это можно сделать подругому.

И конечно рекомендую убранную строчку с Clone, вставить например в Load формы. Основная идея чтобы все таки клонировать структуру с DataSet - источника, но при этом делать это один раз, а не каждый раз когда выделенные записи из UltraGrid добавляются к dsNewSd.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / DataSet Merge проблема...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]