спрятать таблицы строк классического жереха - PullRequest
2 голосов
/ 11 июля 2011

Я использую пейджинг на своей веб-странице, поэтому для каждой нажатой буквы будут отображаться записи, начинающиеся с этого символа.Однако моя проблема заключается в том, что мне нужно использовать # для отображения всего, кроме символов, чтобы он включал записи, начинающиеся, например, с - 1, 323, _,! И т. Д. Как бы я использовал регулярное выражение для сравнения значений, например, сказать -

if left(selectedRecord, 1) <> "[^a-z]" then

Раньше я использовал для этого процедуру хранения, но из-за того, что флажки проблематичны при подкачке, я просто извлекаю все записи и фильтрую вот так -

response.Write "<tr"
if trim(request.Form("selected_Button")) = "#" then

elseif trim(request.Form("selected_Button")) <> lcase(trim(left(objRS("Movies"), 1))) and len(request.Form("selected_Button")) = 1 then
    response.Write " style=""display:none;"""

end if
response.Write ">"

Так что мой вопрос: какя бы исправил #, как я использовал в своей хранимой процедуре -

select * from Movies where movies like '[^a-z]%'

Кнопки пейджинга -

<center><input id="buttonStyle" type="submit" name="Selected_Button" value="#">
    <% for i = 97 to 122 %>
         <input id="buttonStyle" type="submit" name="Selected_Button" value="<%=CHR(i) %>">&nbsp;
    <% next %></center>
<center></br><input id="buttonStyle" type="submit" name="Selected_Button" value="View All"></center>

РЕДАКТИРОВАТЬ :

Так что яЯ сам нашел решение, но я хочу знать, смогу ли я сделать это без перебора алфавита -

response.Write "<tr"
if trim(request.Form("selected_Button")) = "#" then
    for i = 97 to 122 
        if lcase(trim(left(objRS("Movies"), 1))) = chr(i) then
            response.Write " style=""display:none;"""
        end if
    next
elseif trim(request.Form("selected_Button")) <> lcase(trim(left(objRS("Movies"), 1))) and len(request.Form("selected_Button")) = 1 then
    response.Write " style=""display:none;"""

end if
response.Write ">"

Ответы [ 2 ]

1 голос
/ 12 июля 2011

Что вы на самом деле спрашиваете здесь: «Как определить, что первый символ - это буква?» и ответ заменить этот цикл:

for i = 97 to 122 
    if lcase(trim(left(objRS("Movies"), 1))) = chr(i) then
        response.Write " style=""display:none;"""
    end if
next

С этим вместо:

firstChar = Left(UCase(Trim(objRS("Movies"))), 1)
If firstChar>="A" And firstChar<="Z" Then
    response.Write " style=""display:none;"""
End If

Простое сравнение будет работать просто отлично.

0 голосов
/ 12 июля 2011

Моя правка исправит эту проблему -

response.Write "<tr"
if trim(request.Form("selected_Button")) = "#" then
    for i = 97 to 122 
        if lcase(trim(left(objRS("Movies"), 1))) = chr(i) then
            response.Write " style=""display:none;"""
        end if
    next
elseif trim(request.Form("selected_Button")) <> lcase(trim(left(objRS("Movies"), 1))) and len(request.Form("selected_Button")) = 1 then
    response.Write " style=""display:none;"""

end if
response.Write ">"
...