powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Ошибка при обновлении
4 сообщений из 4, страница 1 из 1
Ошибка при обновлении
    #32487450
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, уважаемые программисты! У меня проблема: есть DW, соурс для которого - запрос к двум залефтджойненным таблицам. Т.о. в DW есть записи, которым соответствуют пустые поля из другой таблицы, и записи, которым были найдены соответствия. Когда я хочу добавить данные в пустые поля, а потом делаю Update, PB ругается "Row changed between retrieve and update.No changes made to database." Если добавляю запись, то всё нормально.Help,pls!
...
Рейтинг: 0 / 0
Ошибка при обновлении
    #32487627
Фотография Вовик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужны более подробные данные от вас о структуре запроса и самого dw
...
Рейтинг: 0 / 0
Ошибка при обновлении
    #32487728
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
...
Рейтинг: 0 / 0
Ошибка при обновлении
    #32492428
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромное спасибо! Коротко, ясно и по теме! А главное, ЗАРАБОТАЛО!!!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Ошибка при обновлении
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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