|
Ошибка при обновлении
|
|||
---|---|---|---|
#18+
Привет, уважаемые программисты! У меня проблема: есть DW, соурс для которого - запрос к двум залефтджойненным таблицам. Т.о. в DW есть записи, которым соответствуют пустые поля из другой таблицы, и записи, которым были найдены соответствия. Когда я хочу добавить данные в пустые поля, а потом делаю Update, PB ругается "Row changed between retrieve and update.No changes made to database." Если добавляю запись, то всё нормально.Help,pls! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2004, 11:31 |
|
Ошибка при обновлении
|
|||
---|---|---|---|
#18+
Нужны более подробные данные от вас о структуре запроса и самого dw ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2004, 12:40 |
|
Ошибка при обновлении
|
|||
---|---|---|---|
#18+
PB и будет ругаться, так как изменяя пустые поля Вы устанавливаете статус записи в "Modified", раз запись уже существует. Соотвествующе при Update будет сгенерирован UPDATE оператор, однако так как записи в БД на самом деле не существует, то обновлено записей не будет, о чем PB Вам честно и говорит, проверяя результат выполнения UPDATE. При добавлении же у Вас и будет все срабатывать, т.к. запись получает статус NewModified, соотвествующе PB сгенерит к ней оператор INSERT, который и вставит новую запись. Есть несколько путей решения Вашей проблемы: 1. Если СУБД поддерживает обновление представлений с LEFT JOIN-ами, то можно написать представление и указать PB обновлять его. Например, JET движок позволяет такое осуществлять на уровне штатных средств, на MSSQL можно написать INSTEAD OF триггер на представление, в ASA 9 можно набор данных свалить в глобальную временную таблицу и написать соотвествующие триггера раскидки изменяемых в ней данных по БД. 2. Если СУБД поддерживает хранимые процедуры, то можно написать на добавление, обновление и удаление соотвествующие ХП и указать PB проводить все операции через них. В самих ХП уже спокойно можно разруливать любые сложные ситуации. 3. Можно написать контроль в DataWindow Control на изменение данных, где будет проверяться, что если редактируется существующая запись, но ее на самом деле в БД нет, так как поля содержат NULL, то сбрасывать статус такой записи с Modified на NewModified. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2004, 13:29 |
|
|
start [/forum/topic.php?fid=15&tid=1339179]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
144ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 249ms |
0 / 0 |