powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как отследить ошибки sql при ретриве
16 сообщений из 16, страница 1 из 1
Как отследить ошибки sql при ретриве
    #36881865
noeser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема такая: в программе отрабатывает dw1.retrieve() и возникает ошибка БД с номером 1222. Как отловить эту ошибку? Пробовала через sqlca, sqlcode возвращает 0. Может, можно отловить через pfc, но я в нем плохо ориентируюсь. Подскажите что-нибудь, пожалуйста..

Тапками сильно не бейте за такой вопрос, а объясните что ды как.
...
Рейтинг: 0 / 0
Как отследить ошибки sql при ретриве
    #36881941
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noeserПроблема такая: в программе отрабатывает dw1.retrieve() и возникает ошибка БД с номером 1222. Как отловить эту ошибку? Пробовала через sqlca, sqlcode возвращает 0. Может, можно отловить через pfc, но я в нем плохо ориентируюсь. Подскажите что-нибудь, пожалуйста..

Тапками сильно не бейте за такой вопрос, а объясните что ды как.
В DataWindow/DataStore ошибки при работе с БД нужно отслеживать на событии DBError.
...
Рейтинг: 0 / 0
Как отследить ошибки sql при ретриве
    #36882013
noeser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин Марк, они и отслеживаются там. И выскакивает оттуда же окошко с ошибкой.

Но как мне выловить после ретрива, что это произошло..

Т.е. есть текст в программе:

dw1.retrieve()

и после этого нужно проверить, случилась ли эта ошибка или нет. Через свою глобальную переменную, значение которой присваивать в событии dberror? Может, как-то ещё можно?
...
Рейтинг: 0 / 0
Как отследить ошибки sql при ретриве
    #36882144
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noeserdw1.retrieve()

и после этого нужно проверить, случилась ли эта ошибка или нет. Через свою глобальную переменную, значение которой присваивать в событии dberror? Может, как-то ещё можно?
Не через глобальную, а через instance.
В предке всех DW (у вас же есть такой предок, для всех объектов?) в событии DBError сохранять информацию по ошибке в переменные экземпляра. А после retrieve() , если он вернул -1, извлекать сохраненные значения.
...
Рейтинг: 0 / 0
Как отследить ошибки sql при ретриве
    #36882257
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyВ предке всех DW (у вас же есть такой предок, для всех объектов?) в событии DBError сохранять информацию по ошибке в переменные экземпляра. А после retrieve() , если он вернул -1, извлекать сохраненные значения.
Или подправить на DBError переменные объекта-транзакции DataWindow.
...
Рейтинг: 0 / 0
Как отследить ошибки sql при ретриве
    #36882551
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркИли подправить на DBError переменные объекта-транзакции DataWindow.
И потом всю жизнь переучивать всех программеров которые уже знают что объект-транзакция не изменяется при retrieve() :)
...
Рейтинг: 0 / 0
Как отследить ошибки sql при ретриве
    #36884048
noeser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly Moskovsky
Не через глобальную, а через instance.
В предке всех DW (у вас же есть такой предок, для всех объектов?) в событии DBError сохранять информацию по ошибке в переменные экземпляра. А после retrieve() , если он вернул -1, извлекать сохраненные значения.


Спасибо. А ещё вопрос: может ли быть так, что ошибка произошла и показалось окошко с ошибкой, а ретрив вернул какие-то строки (например, блокировка строк каких-то была в БД)?

Просто я пыталась вручную залочить строки и сделать select with (nolock) и у меня строки все отображались без ошибок, даже залоченные, а у пользователя, как он говорит, произошла ошибка и выдалась неполная информация в том же dw.
...
Рейтинг: 0 / 0
Как отследить ошибки sql при ретриве
    #36884116
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noeserПросто я пыталась вручную залочить строки и сделать select with (nolock) и у меня строки все отображались без ошибок, даже залоченные, а у пользователя, как он говорит, произошла ошибка и выдалась неполная информация в том же dw.
А какую связь между собой имеют "залоченные" строки и ошибка в запросе?
...
Рейтинг: 0 / 0
Как отследить ошибки sql при ретриве
    #36884133
noeser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин Марк, у юзера такая проблема: делает он ретрив dw, выскакивает ошибка 1222 (Lock request time out period exceeded). Возможно ли, что dw в этом случае вернет какие-то строки?
...
Рейтинг: 0 / 0
Как отследить ошибки sql при ретриве
    #36884172
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noeserЛокшин Марк, у юзера такая проблема: делает он ретрив dw, выскакивает ошибка 1222 (Lock request time out period exceeded). Возможно ли, что dw в этом случае вернет какие-то строки?
Так это он не дождался снятия блокировки. Значит ваше приложение устанавливает где-то SET LOCK_TIMEOUT, т.к. по умолчанию приложение бы ждало снятия блокировки. Проверять это SELECT WITH (NOLOCK), по меньшей мере странно. Ищите то место, где у Вас не снимается блокировка (если нет какого-то ооочень длинного рассчета). Вернет ли в таком случае dw какие-то данные - не знаю, нужно пробовать.
...
Рейтинг: 0 / 0
Как отследить ошибки sql при ретриве
    #36884290
noeser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин Марк, видимо я не так изъясняюсь.

Рассказываю причем тут select with (nolock): просто я всегда полагала, что если делать select with (nolock), то все данные вытащатся вне зависимости от того заблокированы они или нет.
А видимо вытаскиваются в dw только те данные, которые сейчас не заблочены.
...
Рейтинг: 0 / 0
Как отследить ошибки sql при ретриве
    #36884296
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noeserЛокшин Марк, видимо я не так изъясняюсь.

Рассказываю причем тут select with (nolock): просто я всегда полагала, что если делать select with (nolock), то все данные вытащатся вне зависимости от того заблокированы они или нет.
А видимо вытаскиваются в dw только те данные, которые сейчас не заблочены.
А чего тогда удивляться, что при select with (nolock) вытащились все данные?
...
Рейтинг: 0 / 0
Как отследить ошибки sql при ретриве
    #36884837
noeser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин Марк, у меня-то они вытащились, а юзера почему-то частично.
...
Рейтинг: 0 / 0
Как отследить ошибки sql при ретриве
    #36884873
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noeserЛокшин Марк, у меня-то они вытащились, а юзера почему-то частично.
Потому, что select with nolock игнорирует наложенные блокировки. Чего тут не понятного? У пользователя запрос без nolock?
...
Рейтинг: 0 / 0
Как отследить ошибки sql при ретриве
    #36885062
noeser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин Марк, с nolock.
...
Рейтинг: 0 / 0
Как отследить ошибки sql при ретриве
    #36885089
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noeserЛокшин Марк, с nolock.
Значит у клиента были блокировки не на строки, а на схему данных.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как отследить ошибки sql при ретриве
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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