Проблема с UpdateBatch

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Проблема с UpdateBatch

Сообщение Antonariy » 19.01.2006 (Чт) 12:49

Открываю рекордсет, сохраняю его в xml, отправляю клиенту, там добавляю запись, отправляю обратно, делаю updatebatch, но после этого в рекордсете в добавленную запись не проставляются значения identity, дефолтов и т.п.
Выяснил, что при конвертировании rs-xml-rs изменяется значение rs.Properties("Maintain Change Status") c false на true, из-за чего updatebatch возвращает рекордсет неизмененным, хотя все последующие операции проходят правильно и в базе все оk.

Вопрос очевиден: как заставить сервер вернуть полностью обновленный рекордсет?
Лучший способ понять что-то самому — объяснить это другому.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 19.01.2006 (Чт) 12:57

может затем Resync попробовать :?:

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 19.01.2006 (Чт) 13:04

Недостаточно сведений из основной таблицы для обновления.
В случае если рекордсет был получен в результате множественного селекта, то и refresh не сработает.
Лучший способ понять что-то самому — объяснить это другому.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 19.01.2006 (Чт) 13:08

а у тебя клиент только с файлового рекордсета работает или может запрос на серевер кинуть?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 19.01.2006 (Чт) 13:12

Только с файлового
Лучший способ понять что-то самому — объяснить это другому.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 19.01.2006 (Чт) 13:15

может попробовать сохранять в родном формате (не в XML, а в атдп), как вариант, конечно

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 19.01.2006 (Чт) 13:19

Однофигственно. Тем более, что сохраняется даже и не в файл, а в поток и как раз в адтг.
Последний раз редактировалось Antonariy 19.01.2006 (Чт) 13:22, всего редактировалось 1 раз.
Лучший способ понять что-то самому — объяснить это другому.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 19.01.2006 (Чт) 13:21

еще как вариант, проверь в апликации своей на стороне сервера какой локейшен у соединения
(нужно проставить:
connection.CursorLocation=adUseClient
recordset.CursorLocation=adUseClient)

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 19.01.2006 (Чт) 13:23

Так и есть, иначе бы ни о каком updatebatch и речи не было.
Лучший способ понять что-то самому — объяснить это другому.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 19.01.2006 (Чт) 13:26

MSDN пишет:

Maintain Change Status
(DBPROP_ADC_MAINTAINCHANGESTATUS)

Indicates the text of the command used for resynchronizing a one or more rows in a multiple table join.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdrefcursorengine.asp

Вроде бы так и должно быть, так как ты на стороне клиента надобавлял новые записи. Непонятно только, почему ты не можешь на клиенте, который у тебя связан с сервером, заново получить выборку с сервера с этими обновленными данными (ведь ты пишешь, что в базе все обновилось как надо)?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 19.01.2006 (Чт) 14:05

Вроде бы так и должно быть, так как ты на стороне клиента надобавлял новые записи.
Что должно быть? То, что не проставляются дефолты?
Непонятно только, почему ты не можешь на клиенте, который у тебя связан с сервером, заново получить выборку с сервера с этими обновленными данными (ведь ты пишешь, что в базе все обновилось как надо)?

В принципе могу, но это во-первых лишний запрос к серверу, даже если сделать его на сервере сразу после апдейта. Во-вторых что если нужно проапдейтить только один рекордсет из запроса, возвращающего несколько наборов, гонять туда-сюда весь набор? В-третьих клиент может работать через интернет, получается лишний траффик.
А в локальной сети этой проблемы вообще нет. Рекодсеты передаются серверному приложению без всякой конвертации и нормально апдейтятся.
Лучший способ понять что-то самому — объяснить это другому.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 19.01.2006 (Чт) 14:16

тогда, даже не знаю, что и предложить :?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 198

    TopList