|
|
|
новичок
      
участник
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 Посоветуйте,плз, что можно сделать?
|
|
|
|
|
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
|
|
|
|
|
новичок
      
участник
Last Login: 08.07.2007 17:37
Сообщ.: 8,
Visits: 55
|
|
|
|
|
|
новичок
      
участник
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' ) Видимо, с записью на страницу что-то по-другому пишется? Хотя ведь он по-любому должен выполнять запись на страницу и отваливаться.... Как?..
|
|
|
|
|
новичок
      
участник
Last Login: 08.07.2007 17:37
Сообщ.: 8,
Visits: 55
|
|
| То есть на страницу-то он пишет слово Error, но почему продолжается выполнение кода?
|
|
|
|
|
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
|
|
|
|