CRBATCHMOVE задваивает :(

Обсуждение возникших проблем, предложений и ошибок PgDAC компонентов
Ответить
vampirekb_
Сообщения: 5
Зарегистрирован: Вс 10 фев 2013 05:17

CRBATCHMOVE задваивает :(

Сообщение vampirekb_ » Пт 26 апр 2013 18:03

День добрый,имеется:
PostgreSQL 9.2.* x64 (x86)
База данных в кодировке WIN1251
декабрьская версия devart :)

Суть проблемы..
имеется две абсолютно идентичные таблицы. Пытаюсь с помощью batch импортировать данные из одной в другую с заменой (update) имеющихся ,но вместо вместо изменения происходит добавление строки...

в таблицах нету ни индексирования,ни первичных,ни вторичных ключей...даже проверка на уникальность отсутсвует :-)

Если что-либо потребуется для верной обработки,- я добавлю :)

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Re: CRBATCHMOVE задваивает :(

Сообщение Alexp » Сб 27 апр 2013 10:38

Hello,

Мы не можем воспроизвести проблему, пожалуйста попробуйте скачать последнюю версию PgDAC и воспроизвести проблему на ней. Кроме того так как у Вас в таблицы нет ключей, в установите значение опции FieldMappingMode в mmFieldName:

Код: Выделить всё

CRBatchMove1.FieldMappingMode := mmFieldName;
если проблема будет повторяться пришлите пожалуйста скрипты для создания таблиц и вставки данных на alexp*devart.*com

vampirekb_
Сообщения: 5
Зарегистрирован: Вс 10 фев 2013 05:17

Re: CRBATCHMOVE задваивает :(

Сообщение vampirekb_ » Пн 29 апр 2013 20:15

Вечер добрый!
выслал вопрос с мой ник @ hotmail точка сом

Вопрос: А как Batchmove определяет какую строчку нужно добавить,а какую обновить ?
Возможно ли там задать режим соответсвия ? (Если стобец 1 = стобец 1,а столбец 2 = столбец 2,то обновить,иначе добавить )

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Re: CRBATCHMOVE задваивает :(

Сообщение Alexp » Вт 30 апр 2013 07:42

Добрый день,

Спасибо я получил Ваше письмо. Для того чтобы избежать вставки одинаковых данных в режиме bmUppend и bmAppendUpdate Вам необходимо в обоих DataSet (исходный и конечный) установить в свойстве KeyFields имена полей по которым будет производиться поиск данных в конечном DataSet. В Вашем случае это поля "id". Для того, чтобы указать из какого поля исходного DataSet необходимо перенести данные в поле конечного DataSet Вам необходимо указать соответствие полей в свойстве Mappings, а также опцию FieldMappingMode в mmFieldName :

Код: Выделить всё

CRBatchMove1.FieldMappingMode := mmFieldName;
CRBatchMove1.Mappings.Add('имя_поля_в_конечном_DataSet=имя_поля_в_исходном_DataSet');

vampirekb_
Сообщения: 5
Зарегистрирован: Вс 10 фев 2013 05:17

Re: CRBATCHMOVE задваивает :(

Сообщение vampirekb_ » Вт 30 апр 2013 08:34

Спасибо !
keyField я и проморгал :(
Извиняюсь за беспокойство !

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Re: CRBATCHMOVE задваивает :(

Сообщение Alexp » Вт 30 апр 2013 11:24

Добрый день,

Пожалуйста. Я рад что смог помочь. Пишите нам если возникнут дальнейшие вопросы

Ответить