|
|
|
Обработка ошибок ODBC
|
|||
|---|---|---|---|
|
#18+
Приветствую, уважаемые. Рабоаю из VFP 8 с Oracle 9.2 через ODBC. Вопрос в следующем, в проге есть код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. В итоге при попытке коннекта команда "? SYS(2018)" выводит "[ORACLE] [ODBC] [ORA] ORA-01017: INVALID USERNAME/PASSWORD; LOGON DENIED", а процедура обработки ошибок pr_ErrorDetail не отрабатывает. В дебугере в нее даже не входит. Как научиь прогу входить в собственный обработчик при ошибке ODBC? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2004, 12:57 |
|
||
|
Обработка ошибок ODBC
|
|||
|---|---|---|---|
|
#18+
В данном случае настройка ON ERROR - не нужна. Просто явно запускаешь обработку ошибки Код: plaintext 1. 2. 3. 4. Дело в том, что FoxPro запоминает последнюю ошибку и сколько бы безошибочных команд не было выполнено после команды с ошибкой, но все-равно, по AERROR() можно получить последнее (по времени) сообщение об ошибке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2004, 14:33 |
|
||
|
Обработка ошибок ODBC
|
|||
|---|---|---|---|
|
#18+
ВладимирМВ данном случае настройка ON ERROR - не нужна. Просто явно запускаешь обработку ошибки Код: plaintext 1. 2. 3. 4. Да, это я сообразил, но когда я думаю о том, что далее в проге будет несколько сотен SQLEXEC-ов и после каждого придется писать IF .... do pr_ErrorDetail, то мне становится нехорошо. Кроме того, при попытке вставки дублирующей записи в уникальное поле, например, вылетает окно сообщения о нарушении целосности. Как его погасить? Дело в том, что эти сообщения выскакивают в неудобном и непонятном для Юзера виде и их хотелось бы заменить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2004, 15:14 |
|
||
|
Обработка ошибок ODBC
|
|||
|---|---|---|---|
|
#18+
Молодой Я ВладимирМВ данном случае настройка ON ERROR - не нужна. Просто явно запускаешь обработку ошибки Да, это я сообразил, но когда я думаю о том, что далее в проге будет несколько сотен SQLEXEC-ов и после каждого придется писать IF .... do pr_ErrorDetail, то мне становится нехорошо. А для этого обычно пишут собственные процедуры или методы класса. Команда SQLExec() имеет всего 3 параметра. Вот и передавай в свою процедуру эти 3 параметра, а в самой процедуре добавь обработчика ошибок. Хотя, ведь все-равно надо будет обработать возвращаемое значение: твоей ли функции или SQLExec()... Молодой ЯКроме того, при попытке вставки дублирующей записи в уникальное поле, например, вылетает окно сообщения о нарушении целосности. Как его погасить? Дело в том, что эти сообщения выскакивают в неудобном и непонятном для Юзера виде и их хотелось бы заменить... Если речь SQL-сервере к которому ты обращаешся через SQLExec(), то ничего выскакивать не будет. А если о родной базе данных FoxPro, то надо редактировать не сами данные напрямую, а буфер таблиц. Сброс буфера в исходные таблицы осуществляется по команде TableUpdate() и в этом случае никаких сообщений об ошибках не возникает. Просто TableUpdate() вернет .F. и далее ты уже анализируешь по AERROR() в чем причина ошибки и выдаешь пользователям отредактированную версию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2004, 15:24 |
|
||
|
Обработка ошибок ODBC
|
|||
|---|---|---|---|
|
#18+
ВладимирМЕсли речь SQL-сервере к которому ты обращаешся через SQLExec(), то ничего выскакивать не будет. А если о родной базе данных FoxPro, то надо редактировать не сами данные напрямую, а буфер таблиц. Нет, я работаю с Oracle 9.2. И сообщение выскакивает: "Connectivity error: [Oracle][ODBC][Ora]ORA-01017: invalid username/password; logon denied", а в Title этого сообщения "MicroSoft Visual FoxPro". Вот я и думаю, что эту месягу вызывает? Как ее погасить/заменить? И только после этой месяги появляется моя "Нет связи с Oracle". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2004, 15:40 |
|
||
|
Обработка ошибок ODBC
|
|||
|---|---|---|---|
|
#18+
Это потому, что ты сделал настройку прямо противоположную тому, что нужно: Вместо SQLSETPROP(0, "DispWarnings", .T.) Сделай SQLSETPROP(0, "DispWarnings", .F.) После подавления сообщения об ошибке таким образом SQLExec() просто вернет -1, а разбор полетов по AERROR() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2004, 16:09 |
|
||
|
Обработка ошибок ODBC
|
|||
|---|---|---|---|
|
#18+
Дабы не плодить лишних тем.... делаю из фокса на Оракл Код: plaintext Для проверки на другой машине пытаюсь ту же запись открыть - ясно, что открыть ее мне не дает, пока не закоммичу Код: plaintext ВОПРОС - как отследить фоксом эту залоченность??? Ведь если запись залочена - 2-я машина как бы "висит" - ждет... ИМХО надо Код: plaintext Извините за элементарный вопрос..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 10:12 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1590474]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
177ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 222ms |
| total: | 504ms |

| 0 / 0 |
