du skal bare tage et startbogstav ad gangen, og så køre 28 gange. rutinen til de 28 gennemløb skal være noget i stil med dette, som jeg har fra noget asp, der er 15 år gammelt.
strSQL = strSQL & strItem & " >= '" & left(strAlfa,1) & "%'" select case right(strAlfa,1) case "Z" strSQL=strSQL & " AND " & strItem & " < 'Æ%'" case "Å" case else strSQL=strSQL & " AND " & strItem & " < '" & chr(asc(right(strAlfa,1))+1) & "%'" end select
den kunne i sin tid vælge by/gade/firma på startbogstav. Så det er noget med >= et bogstav og < end bogstavet efter - undtagen for å, der ikke har et efterfølgende bogstav.
frozenink: Det er korrekt, der er actorID (primary key) og nameofactor, ud i én smørre. Men der skal bare sorteres på fornavnet, og det tilhørende bogstav skal knyttes til fornavnene. Men det skal gerne ind i løkken
A Anders Mathesen
B Bo Bendixen
osv
claes57: Den skal der vist kigges på :) Men det ser (vistnok) fornuftigt ud :)
det bliver så noget med <% tegn = "abcdefghijklmnopqrstuvwxyzæøå" for i = 1 to len(tegn) strsql = "SELECT actorID, nameofactor FROM actors ORDER BY nameofactor" starttegn = mid(tegn,i,1) strsql = strsql & " where nameofactor >= '" & starttegn & "%'" if i < len(tegn) then sluttegn = mid(tegn,i+1,1) strsql = strsql & " and nameofactor < '" & sluttegn & "%'" end if Set RS = Conn.Execute(strsql) if not RS.EOF then response.write ucase(starttegn) & "<br>" while not RS.EOF response.write datapåenskuespiller & "<br>" RS.Movenext wend response.write "<br>" end if next
Jeg kan se logikken i det, men kan ikke helt gennemskue hvad der sker, jeg kan ikke få det til at spille ordentligt. Er det muligt for dig at uddybe lidt mht. mid(tegn,i+1,1) mm? Jeg går ud fra, at det er et tjek på det første bogstav i navnet, men det er så længe siden jeg har rodet med det, jeg har ikke meget føling med det mere.
<% ' der skal udskrives i denne række tegn = "abcdefghijklmnopqrstuvwxyzæøå"
' kør tegnrækken igennem for i = 1 to len(tegn)
' standardkald som basis strsql = "SELECT actorID, nameofactor FROM actors ORDER BY nameofactor" ' tag et tegn i rækken starttegn = mid(tegn,i,1) ' tilføj at skuespiller skal starte med dette tegn strsql = strsql & " where nameofactor >= '" & starttegn & "%'" ' hvis vi ikke er på sidste tegn i rækken, så stop før næste tegn if i < len(tegn) then sluttegn = mid(tegn,i+1,1) strsql = strsql & " and nameofactor < '" & sluttegn & "%'" end if Set RS = Conn.Execute(strsql) if not RS.EOF then ' hvis der er hentet data, så start med at skrive fx A + linjeskift response.write ucase(starttegn) & "<br>" while not RS.EOF ' udskriv nu de data der skal være pr skuespiller, og afslut med linjeskift response.write datapåenskuespiller & "<br>" RS.Movenext wend response.write "<br>" end if next %>
så ved første gennemløb skulle den gerne danne SELECT actorID, nameofactor FROM actors ORDER BY nameofactor where nameofactor >= 'a%' and nameofactor < 'b%'
Undskyld den sene besvarelse, jeg får kigget på det hurtigst muligt. Og foreløbigt stor tak for dit svar, du har lagt et pænt stykke arbejde i det, jeg håber det virker :)
Jeg tog den lange vej, og jeg synes det virker bedre med
WHERE firstname LIKE 'a%'
i stedet for
MID(firstname,1,1)
Jeg kan jo tage fejl, men jeg kan ikke få dit script til at virke, selvom det er meget ærgeligt ikke at køre det igennem en løkke.
Det (halv)færdige resultat
<%
vCharacterID = Request.QueryString("characterID")
If vCharacterID = 1 Then Set RSA = Conn.Execute("SELECT actorID, firstname, lastname, typeofcharacter FROM privatfilmactor WHERE typeofcharacter = " & 1 & " And firstname LIKE 'a%' ORDER BY firstname, lastname") Set RSB = Conn.Execute("SELECT actorID, firstname, lastname, typeofcharacter FROM privatfilmactor WHERE typeofcharacter = " & 1 & " And firstname LIKE 'b%' ORDER BY firstname, lastname") Set RSC = Conn.Execute("SELECT actorID, firstname, lastname, typeofcharacter FROM privatfilmactor WHERE typeofcharacter = " & 1 & " And firstname LIKE 'c%' ORDER BY firstname, lastname") ElseIf vCharacterID = 2 Then Set RSA = Conn.Execute("SELECT actorID, firstname, lastname, typeofcharacter FROM privatfilmactor WHERE typeofcharacter = " & 2 & " And firstname LIKE 'a%' ORDER BY firstname, lastname") Set RSB = Conn.Execute("SELECT actorID, firstname, lastname, typeofcharacter FROM privatfilmactor WHERE typeofcharacter = " & 2 & " And firstname LIKE 'b%' ORDER BY firstname, lastname") Set RSC = Conn.Execute("SELECT actorID, firstname, lastname, typeofcharacter FROM privatfilmactor WHERE typeofcharacter = " & 2 & " And firstname LIKE 'c%' ORDER BY firstname, lastname") ElseIf vCharacterID = 3 Then Set RSA = Conn.Execute("SELECT actorID, firstname, lastname, typeofcharacter FROM privatfilmactor WHERE firstname LIKE 'a%' ORDER BY firstname, lastname") Set RSB = Conn.Execute("SELECT actorID, firstname, lastname, typeofcharacter FROM privatfilmactor WHERE firstname LIKE 'b%' ORDER BY firstname, lastname") Set RSC = Conn.Execute("SELECT actorID, firstname, lastname, typeofcharacter FROM privatfilmactor WHERE firstname LIKE 'c%' ORDER BY firstname, lastname") End If
%>
<%
If RSA.EOF Then
%>
<div class="headlineunderlined">A</div> <div class="divAvailableGenres1">Der er enudu ikke oprettet skuespillere.</div>
<%
End If
If Not RSA.EOF Then
%>
<div class="headlineunderlined">A</div>
<%
Do Until RSA.EOF
%>
<div class="divAvailableGenres1"><a href="/members/movies/editcharacter.asp?characterID=<%=RSA("actorID")%>" title="Redigér eller slet "<%=RSA("firstname")%> <%=RSA("lastname")%>"" onfocus="this.blur();" class="<% If RSA("typeofcharacter") = "1" Then %>markdata1<% ElseIf RSA("typeofcharacter") = "2" Then %>markdata2<% End If %>"><%=x%>. <%=RSA("firstname")%> <%=RSA("lastname")%></a></div>
<%
x = x + 1
RSA.Movenext Loop
End If
If RSB.EOF Then
%>
<div class="headlineunderlined">B</div> <div class="divAvailableGenres1">Der er enudu ikke oprettet skuespillere.</div>
<%
End If
If Not RSB.EOF Then
%>
<div class="headlineunderlined">B</div>
<%
Do Until RSB.EOF
%>
<div class="divAvailableGenres1"><a href="/members/movies/editcharacter.asp?characterID=<%=RSB("actorID")%>" title="Redigér eller slet "<%=RSB("firstname")%> <%=RSB("lastname")%>"" onfocus="this.blur();" class="<% If RSB("typeofcharacter") = "1" Then %>markdata1<% ElseIf RSB("typeofcharacter") = "2" Then %>markdata2<% End If %>"><%=x%>. <%=RSB("firstname")%> <%=RSB("lastname")%></a></div>
<%
x = x + 1
RSB.Movenext Loop
End If
If RSC.EOF Then
%>
<div class="headlineunderlined">C</div> <div class="divAvailableGenres1">Der er enudu ikke oprettet skuespillere.</div>
<%
End If
If Not RSC.EOF Then
%>
<div class="headlineunderlined">C</div>
<%
Do Until RSC.EOF
%>
<div class="divAvailableGenres1"><a href="/members/movies/editcharacter.asp?characterID=<%=RSC("actorID")%>" title="Redigér eller slet "<%=RSC("firstname")%> <%=RSC("lastname")%>"" onfocus="this.blur();" class="<% If RSC("typeofcharacter") = "1" Then %>markdata1<% ElseIf RSC("typeofcharacter") = "2" Then %>markdata2<% End If %>"><%=x%>. <%=RSC("firstname")%> <%=RSC("lastname")%></a></div>
<%
x = x + 1
RSC.Movenext Loop
End If
RSA.Close Set RSA = Nothing
RSB.Close Set RSB = Nothing
RSC.Close Set RSC = Nothing
%>
Selvom jeg ikke kan få dit script til at virke, har lagt arbejde i det :o) Kan du ikke lægge et svar? Og tak for input.
Hvis du får mod på at få det til at virke, er jeg meget interesseret i at se løsningen :o)
det er helt ok med mig - jeg ved ikke, hvorfor jeg i sin tid ikke selv havde WHERE firstname LIKE 'a%' med i koden - min er var 'nærmeste omvej'
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.