Если оператор не работает должным образом в ASP Classic

У меня есть оператор if..else, который будет отображать, имеет ли студент право участвовать в конкурсе на основе значения в базе данных. Но мой код работает неправильно.

Мой код выглядит следующим образом:

<% If (rs_view.Fields.Item("StudentStatus").Value="OK") Then %>
<strong><font color="#3300FF" size="-1" face="Arial, Helvetica, sans-serif">
<%Response.Write("You are QUALIFIED to go for competition")%>
</font></strong>

<% Else %>

<strong><font color="#FF0000" size="-1" face="Arial, Helvetica, sans-serif">
<%Response.Write("You are NOT QUALIFIED to go for competition")%>
</font></strong>

<% End If %>

Любые идеи?

  • это не работает правильно ... это означает, что студент квалифицирован или не квалифицирован, он все равно будет отображать НЕ КВАЛИФИКАЦИЯ для обоих статусов.

person Community    schedule 26.07.2009    source источник
comment
Не могли бы вы предоставить больше информации? Например, что код делает не то, что вы ожидаете?   -  person Eric    schedule 26.07.2009
comment
t не работает правильно.. означает, что учащийся является квалифицированным или неквалифицированным, он все равно будет отображать НЕ КВАЛИФИКАЦИЯ для обоих статусов.   -  person    schedule 26.07.2009
comment
что вы получаете между двумя **, когда вы помещаете этот код над своим оператором if - ‹%response.write(* & rs_view.Fields.Item(StudentStatus).Value & *‹br›)%›   -  person Michael Riley - AKA Gunny    schedule 27.10.2011


Ответы (3)


Возможно, поле StudentStatus в вашем наборе записей написано строчными буквами? Обернуть его в UCase()?

Кроме того, вы действительно можете упростить этот код для удобства чтения...

<%
Dim RspMsg, RspColor
If (UCase(rs_view("StudentStatus"))="OK") Then 
    RspMsg = "You are QUALIFIED to go for competition"
    RspColor = "#3300FF"
Else
    RspMsg = "You are NOT QUALIFIED to go for competition"
    RspColor = "#FF0000"
End If

%>

<strong><font color="<%=RspColor%>" size="-1" face="Arial, Helvetica, sans-serif">
<%=QualificationResponse%></font></strong>
person MyItchyChin    schedule 26.07.2009
comment
Спасибо.. Я пытался использовать ваши коды.. но, похоже, работает неправильно.. Это означает, что либо студент квалифицирован, либо не квалифицирован, он все равно будет отображать НЕ КВАЛИФИКАЦИЯ для обоих статусов.. какой-либо другой метод? Помогите пожалуйста..спасибо.. - person ; 26.07.2009
comment
Похоже, что ваш StudentStatus никогда не равен OK, вам следует попробовать вывести значение StudentStatus, чтобы увидеть, что это на самом деле. Как правило, это плохая идея делать символьные данные столбцов состояния по мере того, как вы их обнаруживаете. Создание StudentStatus ссылки на внешний ключ в таблице Status ограничит возможные значения StudentStatus и устранит любую двусмысленность. - person MyItchyChin; 26.07.2009
comment
Можете ли вы научить меня, как это сделать? Создание StudentStatus ссылки на внешний ключ в таблице Status ограничит возможные значения StudentStatus. - person ; 26.07.2009
comment
Привет, как насчет того, хочу ли я сохранить результат, квалифицированный или не квалифицированный, прямо в базу данных? - person ; 27.07.2009

У вас много избыточного кода. Этот код делает то же самое, что и ваш, но немного сокращен. Вы также должны переместить стиль в таблицу стилей.

<%
If rs_view("StudentStatus") & "" = "OK" Then
  %><strong><font color="#30f" size="-1" face="Arial, Helvetica, sans-serif">You are QUALIFIED to go for competition</font></strong><%
Else
  %><strong><font color="#f00" size="-1" face="Arial, Helvetica, sans-serif">You are NOT QUALIFIED to go for competition</font></strong><%
End If
%>

Теперь StudentStatus просто не в порядке. Что вам нужно сделать, так это вывести StudentStatus и посмотреть, что это такое, например. вставьте следующее до или после кода в вашем вопросе (или сокращенного варианта выше) и проверьте его вывод:

<%
Response.Write "*" & Server.HTMLEncode(rs_view("StudentStatus")) & "*"
%>

Возможные причины заключаются в том, что OK написано маленькими заглавными буквами, дополнено пробелами или вообще не в порядке, а вместо этого 1 или true или что-то еще.

person svinto    schedule 26.07.2009
comment
Спасибо.. Я пытался использовать ваши коды.. но, похоже, работает неправильно.. Это означает, что либо студент квалифицирован, либо не квалифицирован, он все равно будет отображать НЕ КВАЛИФИКАЦИЯ для обоих статусов.. какой-либо другой метод? Помогите пожалуйста..спасибо.. - person ; 26.07.2009
comment
Вы вставили второй фрагмент кода в свой код? Что это говорит между звездами, когда вы просматриваете учащегося, который должен отображаться как квалифицированный? - person svinto; 26.07.2009
comment
Да, я вставляю коды. Он отобразит значение в базе данных, которое НЕ ОК, хотя фактическое значение в порядке. - person ; 26.07.2009
comment
Если он отображает NOTOK, то это то, что находится в базе данных для этой строки. Измените оператор if на то, что выводится между *, и он начнет работать. - person svinto; 26.07.2009
comment
Извините... я имею в виду, что значение в базе данных в порядке, но после выполнения ваших кодов вывод НЕОК, который НЕ КВАЛИФИЦИРОВАН... он работает неправильно... - person ; 26.07.2009
comment
Ни один код, даже код, который вы нам прислали, не ссылается на НОТОК. NOTOK, по-видимому, является значением в вашей базе данных. - person MyItchyChin; 26.07.2009
comment
Если вывод NOTOK, то это и есть значение. Если вы не видите это значение в базе данных, вы смотрите не на ту базу данных/таблицу/строку. - person svinto; 26.07.2009
comment
Привет, как насчет того, хочу ли я сохранить результат, квалифицированный или не квалифицированный, прямо в базу данных? - person ; 27.07.2009

Попробуйте заменить первую строку на:

<% If (rs_view.Fields.Item("StudentStatus").Value=="OK") Then %>

Одиночный = присвоит StudentStatus значение "ОК", а == сравнит значение StudentStatus со значением "ОК".
Я не проверял это, но, надеюсь, это то, что вы ищете.

person Almac    schedule 08.02.2011
comment
Это на 100%, полностью и полностью НЕПРАВИЛЬНО: это даст прекрасную синтаксическую ошибку в VBScript. - person Martha; 17.10.2015