Обработка ошибок входа в БД SQL в asp
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Обработка ошибок входа в БД SQL в asp Expand / Collapse
Автор
Сообщение
05.07.2007 22:57
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 08.07.2007 17:37
Сообщ.: 8, Visits: 55
Приветствую!

Проблема в сл.: Со страницы 1 (из формы) посылается запрос на авторизацию в Сиквельной БД ()

На странице 2 - коннект к БД - <code>Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "ERA", Request.Form("User_name"), Request.Form("Password")</code>

Нужно обработать ситуацию неправильного пароля и отостлать пользователя на страницу login_error.asp.

Пытаюсь так: <code>Set objASPError = Server.GetLastError If Hex(objASPError.Number) = "80040E4D" Then Response.Redirect("login_error.asp") </code>

Ноль эмоций. Все равно в строке браузера - текущая страница и ошибка -

Microsoft OLE DB Provider for ODBC Drivers error '80040e4d'

[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'sa'.

/invoices/invoice1.asp, line 19

Посоветуйте,плз, что можно сделать?

Сообщ. #914534
06.07.2007 9:30
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Надо использовать команды ON ERROR RESUME NEXT/ON ERROR GOTO 0. Примерно так:

Set Conn = Server.CreateObject("ADODB.Connection")
ON ERROR RESUME NEXT
Conn.Open "ERA", Request.Form("User_name"), Request.Form("Password")
If Err.Number<>0 Then
    ' Ошибка при подключении к БД
End If
ON ERROR GOTO 0

Сообщ. #914537
06.07.2007 12:59
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 08.07.2007 17:37
Сообщ.: 8, Visits: 55
Спасибо! Все работает:-)
Сообщ. #914542
07.07.2007 0:16
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 08.07.2007 17:37
Сообщ.: 8, Visits: 55
И снова прошу хелп по той же теме:

ставлю обработчик ошибки (Cannot insert the value NULL into column 'myColumn'......)

On error resume next

SET rs_do_valid = Conn.Execute("DECLARE @a int EXEC @a = my_sp'" & Request.Form("var1") & "', '" & Request.Form("var2") & "' SELECT a = @a")

If Hex(Err.Number) = "80040E14"

Then Response.Write "ERROR"

End If

ON ERROR GOTO 0

В прошлом случае - при обработке неверного пароля, это работало, правда с редиректом и тут работает. А здесь - пролжает дальнейшую обработку (пытается обратиться к rs_do_valid ("а") и естественно отваливается с ошибкой: Microsoft VBScript error '800a000d' )

Видимо, с записью на страницу что-то по-другому пишется? Хотя ведь он по-любому должен выполнять запись на страницу и отваливаться....

Как?..

Сообщ. #914564
07.07.2007 0:18
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 08.07.2007 17:37
Сообщ.: 8, Visits: 55
То есть на страницу-то он пишет слово Error, но почему продолжается выполнение кода?
Сообщ. #914565
07.07.2007 11:30
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Выполнение страницы продолжается потому что ты перехватил ошибку и ASP о ней ничего неизвестно. Он думает что все в порядке. Поэтому надо или писать делать ветки типа:

If ошибка Then
    Response.Write "Ошибка"
Else
    ' код выполняемый если ошибки нет
End If

Или принудительно завершать выполнение скрипта в случае ошибки:

If ошибка Then
    Response.Write "Ошибка"
    Response.End
End If

Сообщ. #914568
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Alexey Spirin

Время GMT +3:00, Сейчас 1:25