powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Error 3
6 сообщений из 6, страница 1 из 1
Error 3
    #32694540
Зернов Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) В таблице есть строка, при редактировании ключевых реквизитов которой
выдаётся сообщение об ошибке "Error 3 Row change between retrieve and
update. No change made to database DELETE FROM...".
При редактировании прочих реквизитов - "Error 3 Row change between retrieve
and update. No change made to database UPDATE FROM...".
Пробовал менять флаги состояния редактирования. При установке флага в
NewModified! выдаётся сообщение, что primary key не уникален.
Удалить строку также не удаётся.
Экспортировал эту строку в текстовый файл. Взял старую базу данных (до
ввода этой строки). Импортировал строку. Строка сохраняется, но
редактировать и удалить её всё равно нельзя (Err 3).
Строку пытаюсь удалить/редактировать и через приложение ( идёт Update
только одного dw) и через PB -> Database -> Datamanipulation.
Понимаю, что чего-то не понимаю. Кто знает, как решить проблему, помогите,
пожалуйста!

2) Искал в форуме вопросы, связанные с ошибкой №3. Нашёл несколько
обсуждений.
Называют ошибку и "знаменитой" и "пресловутой". При этом обсуждаются:
параллельность ввода информации пользователями, параметры в хранимых
процедурах, настройки DataWindow, разделение транзакций... Методы лечения
ошибки самые разные, включая, например(цитирую Vovik@PB): "Описанная
выше ошибка пропала при выставлении в настройках ODBC драйвера галочки
напротив пункта Return matching rows (которая по умолчанию девственно
чиста). Интересно будут ли побочные эффекты?" (конец цитаты).
Может быть собрать весь накопленный опыт борьбы в единое целое и
поместить в FAQ?
...
Рейтинг: 0 / 0
Error 3
    #32694598
gz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gz
Гость
В PowerBuilder для DataWindow SQL-код при выполнении Update() генерируется автоматически. Его можно вытянуть в событии SqlPreview.
И дальше - анализировать. Вариантов ошибок, действительно, множество - от неверной установки Update Properties в DataWindow до проблем с параллельной работой пользователей.
Полезно также без DataWindow, а может быть и без PowerBuilder, поработать с выбранной СУБД
...
Рейтинг: 0 / 0
Error 3
    #32694606
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите пожалуйста, нет ли на изменяемой таблице триггеров, в результате работы которых происходят какие-либо изменения с редактируемой записью?

Какая СУБД?

Изменять установку в окне Specify Update Properties->Where Clause For Update/Delete с умолчения на Key Columns пробовали?
А Key Modification на Use Update?

PS:Редактирование ключа, IMHO, не самая лучшая практика...
...
Рейтинг: 0 / 0
Error 3
    #32694663
Зернов Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PL99Скажите пожалуйста, нет ли на изменяемой таблице триггеров, в результате работы которых происходят какие-либо изменения с редактируемой записью?

Какая СУБД?

Изменять установку в окне Specify Update Properties->Where Clause For Update/Delete с умолчения на Key Columns пробовали?
А Key Modification на Use Update?

PS:Редактирование ключа, IMHO, не самая лучшая практика...
Спасибо. Кажется лечится, если в настройках DW выставить Key Column + Use Update.
Но, через PB -> Database -> Datamanipulation ни удалить, ни отредактировать
всё равно не получается. Почему?
Sybase SQL Anywhere Database Engine 5.5.04 + PB6
...
Рейтинг: 0 / 0
Error 3
    #32696054
Зернов Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо PL99 ещё раз. Но вопросы остаются.
Кратко излагаю историю:
Работает приложение. База данных на сервере (Sybase SQL Anywhere 5.0 (или 5.5?) для NT). На клиенте в таблицу вводится информация. При вводе одной из записей возникла ошибка №3. Беру старую базу данных (без этой записи). Локально, на своём компьютере, из-под PB начинаю ошибку ковырять. Импортирую эту запись из текстового файла средствами PB (вставляю программно из Excel, ввожу вручную). Запись сохраняется, но редактируется/удаляется только если в Update properties DW выставить Key Columns + Use Update.
ПОЧЕМУ в таблице, состоящей из нескольких записей, все записи можно редактировать/удалять при выставленных Update Properties DW "Key and Updateable Columns + Use Update", а одну можно только если выставить "Key Columns + Use Update"?
ПОЧЕМУ эту же запись нельзя удалить/редактировать из PB->Database->Datamanipulation?
Почему?
Ну, допустим, сбойнуло что-то при сохранении именно этой записи. Может быть обмен данными с сервером как-то криво прошёл. В ISQL запись удаляется на ура, СУБД на всё плевать. Начинаются подозрения, что PB что-то куда-то пишет, а потом читает. Но ведь я беру старую базу данных и добавляю эту строку на другом компьютере! Прямо мистика какая-то! Но, чудес в данном случае быть не может.
Либо что-то не так делаю я и этого не замечаю, либо я чего-то не знаю(не понимаю).
PS. Если не поможет никто, буду всем желающим за деньги фокус с неудаляемой строкой показывать!
...
Рейтинг: 0 / 0
Error 3
    #32696581
gz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gz
Гость
Зернов Павел ПОЧЕМУ эту же запись нельзя удалить/редактировать из PB->Database->Datamanipulation?
Чтобы редактировать или удалять записи, PowerBuilder должен автоматически сформировать операторы для изменения таблицы. Наверное, у Вас нет уникального ключа для таблицы. В этом случае PowerBuilder "не знает", что поставить во фразу Where, поэтому "не разрешает" редактирование записей таблицы.

Это не особенность именно PowerBuilder. Та же ситуация возникает и при использовании других средств. Например, для работы с Oracle многие используют PL/SQL Developer. Так вот, если в нем вызвать таблицу на редактирование, то к списку полей таблицы автоматически добавляется поле Rowid (уникальный адрес записи) - в этом случае PL/SQL Developer во фразу Where вставит то-то типа
Where RowId = CharToRowid( :Значение )

PowerBuilder не привязан к какой-то конкретной СУБД, поэтому "ОН" так поступить не может.
Зернов ПавелПОЧЕМУ в таблице, состоящей из нескольких записей, все записи можно редактировать/удалять при выставленных Update Properties DW "Key and Updateable Columns + Use Update", а одну можно только если выставить "Key Columns + Use Update"?
Update Properties для того нужны PowerBuilder, чтобы опять-таки автоматически сформировать операторы для изменения таблицы. Надо не суетиться, а спокойно разобраться, какой оператор генерируется при выставлении разных опций. Никаких чудес здесь нет.
Более конкретно на основе имеющейся информации ответить сложно.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Error 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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