Avatar billede kkd Nybegynder
24. august 2007 - 13:15 Der er 9 kommentarer og
2 løsninger

Oprettelse af dynamisk recordset

Hej.

Jeg har brug for en funktion, der kører en database igennem, søgende på et givent felts først bogstav efter nedenstående princip (ved godt det ikke virker, men det hjælper måske til at give en idé om hvad jeg er ude efter)


for Variabel = a to å

str&Variabel= "Select * from Felt where Navn like 'Variabel%'"
set rs&Variabel = Conn.Execute(Str&Variabel)

Response.write Variabel & "<br>"

Do
Response.Write rs&Variabel("Navn") & "<br>"
rs.MoveNext
loop while not rs&Variabel.EOF

next
Avatar billede w13 Novice
24. august 2007 - 14:38 #1
Umiddelbart ville jeg sige, det må være noget à la:
---------------------------------------------------------
strLetters="abcdefghijklmnopqrstuvwxyzæøå"
for i=0 to Len(strLetters)

  set rs=Conn.Execute("SELECT * FROM [felt] WHERE [navn] LIKE '"&mid(strLetters,i,1)&"%'"

  Response.Write mid(strLetters,i,1)&"<br>"&vbCrLf

  Do While Not rs.EOF
    Response.Write rs("navn")&"<br>"&vbCrLf
    rs.MoveNext
  Loop
  rs.Close
Next
---------------------------------------------------------
Det er dog bestemt ikke testet.
Avatar billede thesurfer Nybegynder
24. august 2007 - 15:21 #2
w13> Din kode vel højst sandsynligt give fejl, da "i" (i FOR-løkken) starter ved 0, og mid starter ved 1 (første tegn er 1 og ikke 0).. :-)
Avatar billede jansangill Nybegynder
24. august 2007 - 18:18 #3
<%
b = request("b") ' request b

SQL="SELECT * from something"
SET RS = Conn.Execute (SQL)


    Do while not rs.eof
    id = RS("id")
    navn = RS("navn")

    temp = lcase(left(rs("navn"),1))
    if temp <> husk then med=med&temp
    husk = temp

   
    if b = temp then ' Hvis b er noget, så:

       
if counter = 3 then
    response.write "</tr><tr><td style='10px'>&nbsp;</td></tr><tr>"
    counter = 0
end if
       

    response.write "<td>"&navn&"</td>"

    counter = counter + 1   
    end if
       
    rs.movenext
   
loop


Alphabet = "abcdefghijklmnopqrstuvwxyzæøå"
For iCnt = 1 To Len(Alphabet)
    temp = Mid(Alphabet,iCnt,1)
    if temp = b then
        Response.Write "<a href="""&url_komplet&"&b="&temp&""" style='color:black'>" & (temp) & "</a>" & "&nbsp;&nbsp;&nbsp;"
    elseif instr(med, temp) then
        Response.Write "<a href="""&url_komplet&"&b="&temp&""" style='color:white'>" & (temp) & "</a>" & "&nbsp;&nbsp;&nbsp;"
    else
        Response.Write (temp) & "&nbsp;&nbsp;&nbsp;"
    end if

Next


Dette her skriver alfabet ud, og hvis første bogstav er i db, så er det et link, ellers er det bare et bogstav.
Avatar billede w13 Novice
24. august 2007 - 18:27 #4
thesurfer>> Så må det jo bare være:

strLetters="abcdefghijklmnopqrstuvwxyzæøå"
for i=1 to Len(strLetters)

  set rs=Conn.Execute("SELECT * FROM [felt] WHERE [navn] LIKE '"&mid(strLetters,i,1)&"%'"

  Response.Write mid(strLetters,i,1)&"<br>"&vbCrLf

  Do While Not rs.EOF
    Response.Write rs("navn")&"<br>"&vbCrLf
    rs.MoveNext
  Loop
  rs.Close
Next
Avatar billede thesurfer Nybegynder
24. august 2007 - 18:43 #5
jansangill> Jeg mener faktisk at følgende vil give fejl, hvis der ikke står noget i kolonnen "navn":

left(rs("navn"),1)

Så kan man enten forhindre indsættelse af tomme værdier, eller undersøge om navnet er tomt, eller om længden af navnet er større end 0.

Og en anden ting..
Hvis du bruger request("b"), kigger så (så vidt jeg ved) i .Form og i .Querystring samme Session (og muligvis Cookies, men er ikke sikker)..

Det betyder at serveren skal arbejde mere end normalt, fordi man er doven..

Derfor:
Brug altid den korrekt syntax.. eksempel..

Hvis værdien "b" kommer fra:
- urlen, bruges: request.querystring("b")
- formen, bruges: request.querystring("b")
- session, bruges session("b")
- cookies, bruges request.cookies("b")

osv..

:-)
Avatar billede thesurfer Nybegynder
24. august 2007 - 18:44 #6
Rettelse:

Hvis værdien "b" kommer fra:
- urlen, bruges: request.querystring("b")
- formen, bruges: request.form("b")
- session, bruges session("b")
- cookies, bruges request.cookies("b")

osv..

:-)
Avatar billede jansangill Nybegynder
24. august 2007 - 18:51 #7
haha det har jeg også gjordt thesurfer, men var for doven til at skrive det ind. Det var en funktion, som hedder tt. Men det ville han jo ikke vide, så jeg skrev bare hurtigt request.
Avatar billede jansangill Nybegynder
24. august 2007 - 18:56 #8
Og ja, den mangler nok at man kontrollerer om db er tom eller ej. Men det har jeg ikke skulle tage hensyn til endnu, da den aldrig vil være tom.
Avatar billede kkd Nybegynder
10. januar 2008 - 14:53 #9
Takker fo jeres hjælp - svar hvis I vil have p
Avatar billede w13 Novice
10. januar 2008 - 14:55 #10
Oki.
Avatar billede thesurfer Nybegynder
10. januar 2008 - 22:39 #11
Med hensyn til "tom" i indlægget 24/08-2007 18:43:36, mener jeg værdien i kolonnen og ikke databasen.. :-)

Jeg ville bare lige nævne det, så vi var enige om hvad det var jeg sagde.. :-)

- svar.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester