Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
20.04.2004, 11:31
|
|||
---|---|---|---|
Ошибка при обновлении |
|||
#18+
Привет, уважаемые программисты! У меня проблема: есть DW, соурс для которого - запрос к двум залефтджойненным таблицам. Т.о. в DW есть записи, которым соответствуют пустые поля из другой таблицы, и записи, которым были найдены соответствия. Когда я хочу добавить данные в пустые поля, а потом делаю Update, PB ругается "Row changed between retrieve and update.No changes made to database." Если добавляю запись, то всё нормально.Help,pls! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.04.2004, 12:40
|
|||
---|---|---|---|
Ошибка при обновлении |
|||
#18+
Нужны более подробные данные от вас о структуре запроса и самого dw ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.04.2004, 13:29
|
|||
---|---|---|---|
Ошибка при обновлении |
|||
#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. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=15&tablet=1&tid=1339179]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 269ms |
total: | 506ms |
0 / 0 |