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

Заранее спасибо
Евгений
...
Рейтинг: 0 / 0
11.12.2003, 09:30
    #32350102
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet Merge проблема...
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
11.12.2003, 17:06
    #32351000
EvgenyV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet Merge проблема...
Спасибо большое!
...
Рейтинг: 0 / 0
17.05.2004, 12:40
    #32520064
hmsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet Merge проблема...
подскажите - можно ли с помощью dataset.merge всегда добавлять записи
в другой датасет
у меня пустой датасет ds1, из другой формы заполняю ds2
делаю ds1.merge(ds2, True, MissingSchemaAction.Add)
ds1 заполняется, потом мне нужно опять добавить значения из ds2 - опять делаю merge
и записи в ds1 перетираются новыми из ds2
или как может по другому добавлять новые записи?
...
Рейтинг: 0 / 0
17.05.2004, 14:06
    #32520365
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet Merge проблема...
>ds1 заполняется, потом мне нужно опять добавить значения из ds2 - опять делаю merge
и записи в ds1 перетираются новыми из ds2

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

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

табл1
id name date ....
1 сок 12.03.2004
2 пиво 12.03.2004
...
Рейтинг: 0 / 0
18.05.2004, 07:58
    #32521337
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet Merge проблема...
>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
18.05.2004, 09:37
    #32521442
hmsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet Merge проблема...
так мне надо не менять водку на лимонад, а добавлять!
т.е сначало выбрал в ds1 из ds2 сок, пиво, водка
а потом ещё добавил из того же ds2 лимонад
и стал список сок, пиво, водка, лимонад
а сейчас при втором выборе в ds2 лимонада он один и будет в ds1 при ds1.merge(ds2)
...
Рейтинг: 0 / 0
18.05.2004, 10:14
    #32521525
Артем1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet Merge проблема...
Можно попробовать ImportRow или LoadDataRow.
...
Рейтинг: 0 / 0
18.05.2004, 11:41
    #32521750
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet Merge проблема...
Привидите код:
Как создаете, заполняете ds2, ds1? Интересует любой код где фигурируют эти объекты.

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

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

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

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

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

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

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

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

бд - sql server, id - ключ
...
Рейтинг: 0 / 0
18.05.2004, 12:09
    #32521831
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet Merge проблема...
Ну ситуация проясняется.
Код: 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
18.05.2004, 14:26
    #32522293
hmsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet Merge проблема...
CType(myForm, FormNewSd).dsNewSD.Merge(dataRows)
в dsNewSD у меня много таблиц,
и когда я делаю dsNewSD.Merge(dataRows)
а потом Me.ugVeks.DataSource = Me.dsNewSD
то ultragrid заполняется совершенно другим набором данных, из другой datatable dsNewSD
как можно при dsNewSD.Merge указать таблицу?
или как решить проблему?
...
Рейтинг: 0 / 0
18.05.2004, 14:40
    #32522328
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet Merge проблема...
А если указать что имено показывать ultragridу:
Код: plaintext
1.
2.
Me.ugVeks.DataSource = Me.dsNewSD
Me.ugVeks.DataMember = "myTable"  
Если конечно свойство DataMember у UltraGrid имеется. Если его нет то 100 % это можно сделать подругому.

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


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