/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Langsom løkke
Fra : j p


Dato : 24-02-07 10:58

Hej

Følgende stk asp kode kører langsomt, kan nogen finde en måde at
det kan blive hurtigere. Jeg henter en liste fra databsen visit
for en bruger. Så splitter jeg listen op og kører listen igennem
mens jeg checker at brugeren stadig er bruger i hoved databasen
tabel.

Dette check i løkken gør den langsom, kan det gøres på en anden
måde ?

<%

set rs = server.createobject("adodb.recordset")
sql = "Select * From visit Where brugernavn = '" &
session("brugernavn")& "'"
rs.open sql, Conn, 0, 1, 1

strTemp = Rs("liste")
arrTemp = split(strTemp, "+")

for x = LBound(arrTemp) to Ubound(arrTemp) step 1
if arrtemp(x) <> "0" then

SQL = "Select Count(*) as Found from tabel where (brugernavn = '"
& arrtemp(x) & "')"
Set LO = conn.Execute(SQL)
if LO("Found") = 0 then

else

response.Write "<li>" & arrtemp(x) &"</li>"

end if
end if
next


%>

mvh

Johnny

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Leif Neland (24-02-2007)
Kommentar
Fra : Leif Neland


Dato : 24-02-07 15:58

j p wrote:
> Hej
>
> Følgende stk asp kode kører langsomt, kan nogen finde en måde at
> det kan blive hurtigere. Jeg henter en liste fra databsen visit
> for en bruger. Så splitter jeg listen op og kører listen igennem
> mens jeg checker at brugeren stadig er bruger i hoved databasen
> tabel.
>
> Dette check i løkken gør den langsom, kan det gøres på en anden
> måde ?
>
> <%
>
> set rs = server.createobject("adodb.recordset")
> sql = "Select * From visit Where brugernavn = '" &
> session("brugernavn")& "'"

Hvis du kun bruger feltet "liste" er der ingen grund til at hente "*"

> rs.open sql, Conn, 0, 1, 1
>
> strTemp = Rs("liste")
> arrTemp = split(strTemp, "+")

Det er dårligt databasedesign at have flere værdier i et felt, eller at have
flere ens felter i samme record.
Du bør lave det om til at du har en record for hvert besøg

Hvis vi laver visited om til (brugernavn,besoegt)

kan det hele laves som


set rs = server.createobject("adodb.recordset")

sql = "select tabel.brugernavn from visit left join tabel on
visit.besoegt=tabel.brugernavn and visit.brugernavn='" &
session("brugernavn") &"'"

rs.open sql, Conn, 0, 1, 1
str=rs.GetString(,,,"</li><li>")
' returner alle records som en streng med "</li><li> imellem hver. Så du
skal ikke selv loope igennem et recordset

Response.write "<ul><li>" & str & "</li></ul>"




j p (24-02-2007)
Kommentar
Fra : j p


Dato : 24-02-07 18:35

Leif Neland wrote in dk.edb.internet.webdesign.serverside.asp:
> j p wrote:
> > Hej
> >
> > Følgende stk asp kode kører langsomt, kan nogen finde en måde at
> > det kan blive hurtigere. Jeg henter en liste fra databsen visit
> > for en bruger. Så splitter jeg listen op og kører listen igennem
> > mens jeg checker at brugeren stadig er bruger i hoved databasen
> > tabel.
> >
> > Dette check i løkken gør den langsom, kan det gøres på en anden
> > måde ?
> >
> > <%
> >
> > set rs = server.createobject("adodb.recordset")
> > sql = "Select * From visit Where brugernavn = '" &
> > session("brugernavn")& "'"
>
> Hvis du kun bruger feltet "liste" er der ingen grund til at hente "*"
Feltet liste indeholder 20 forskellige brugernavne som jeg vil checke om stadig
er i tabel. Det kan jeg ikke som du har beskrevet.

Eller er det mig der ikke forstår.
>
> > rs.open sql, Conn, 0, 1, 1
> >
> > strTemp = Rs("liste")
> > arrTemp = split(strTemp, "+")
>
> Det er dårligt databasedesign at have flere værdier i et felt, eller at have
> flere ens felter i samme record.
> Du bør lave det om til at du har en record for hvert besøg
>
> Hvis vi laver visited om til (brugernavn,besoegt)
>
> kan det hele laves som
>
>
> set rs = server.createobject("adodb.recordset")
>
> sql = "select tabel.brugernavn from visit left join tabel on
> visit.besoegt=tabel.brugernavn and visit.brugernavn='" &
> session("brugernavn") &"'"
>
> rs.open sql, Conn, 0, 1, 1
> str=rs.GetString(,,,"</li><li>")
> ' returner alle records som en streng med "</li><li> imellem hver. Så du
> skal ikke selv loope igennem et recordset
>
> Response.write "<ul><li>" & str & "</li></ul>"
>
>
>


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Leif Neland (25-02-2007)
Kommentar
Fra : Leif Neland


Dato : 25-02-07 00:43

j p wrote:
> Leif Neland wrote in dk.edb.internet.webdesign.serverside.asp:
>> j p wrote:
>>> Hej
>>>
>>> Følgende stk asp kode kører langsomt, kan nogen finde en måde at
>>> det kan blive hurtigere. Jeg henter en liste fra databsen visit
>>> for en bruger. Så splitter jeg listen op og kører listen igennem
>>> mens jeg checker at brugeren stadig er bruger i hoved databasen
>>> tabel.
>>>
>>
>> Hvis du kun bruger feltet "liste" er der ingen grund til at hente "*"
> Feltet liste indeholder 20 forskellige brugernavne som jeg vil checke
> om stadig er i tabel. Det kan jeg ikke som du har beskrevet.
>
Det er det, der er problemet.

Du skal ikke have en record, der hedder
"Hans","Susanne+Birgitte+Hanne+Tove+Anne"
Du skal have 5 records:
"Hans","Susanne"
"Hans","Birgitte"
"Hans","Hanne"
"Hans","Tove"
"Hans","Anne"

Leif



Leif Neland (24-02-2007)
Kommentar
Fra : Leif Neland


Dato : 24-02-07 15:59

Jeg glemte lige en link:
http://www.w3schools.com/ado/ado_getstring.asp

Citat:

Note: The GetString() method is an ADO 2.0 feature. You can download ADO 2.0
at http://www.microsoft.com/data/download.htm.



Leif







Leif Neland (25-02-2007)
Kommentar
Fra : Leif Neland


Dato : 25-02-07 00:38

j p wrote:
> Hej
>
> Følgende stk asp kode kører langsomt, kan nogen finde en måde at
> det kan blive hurtigere. Jeg henter en liste fra databsen visit
> for en bruger. Så splitter jeg listen op og kører listen igennem
> mens jeg checker at brugeren stadig er bruger i hoved databasen
> tabel.
>
> Dette check i løkken gør den langsom, kan det gøres på en anden
> måde ?
>
> <%
>
> set rs = server.createobject("adodb.recordset")
> sql = "Select * From visit Where brugernavn = '" &
> session("brugernavn")& "'"

Hvis du kun bruger feltet "liste" er der ingen grund til at hente "*"

> rs.open sql, Conn, 0, 1, 1
>
> strTemp = Rs("liste")
> arrTemp = split(strTemp, "+")

Det er dårligt databasedesign at have flere værdier i et felt, eller at have
flere ens felter i samme record.
Du bør lave det om til at du har en record for hvert besøg

Hvis vi laver visited om til (brugernavn,besoegt)

kan det hele laves som


set rs = server.createobject("adodb.recordset")

sql = "select tabel.brugernavn from visit left join tabel on
visit.besoegt=tabel.brugernavn and visit.brugernavn='" &
session("brugernavn") &"'"

rs.open sql, Conn, 0, 1, 1
str=rs.GetString(,,,"</li><li>")
' returner alle records som en streng med "</li><li> imellem hver. Så du
skal ikke selv loope igennem et recordset

Response.write "<ul><li>" & str & "</li></ul>"





Jørn Andersen (25-02-2007)
Kommentar
Fra : Jørn Andersen


Dato : 25-02-07 02:34

On 24 Feb 2007 09:57:43 GMT, j p <donner_63@hotmail.com> wrote:

>Følgende stk asp kode kører langsomt, kan nogen finde en måde at
>det kan blive hurtigere. Jeg henter en liste fra databsen visit
>for en bruger. Så splitter jeg listen op og kører listen igennem
>mens jeg checker at brugeren stadig er bruger i hoved databasen
>tabel.
>
>Dette check i løkken gør den langsom, kan det gøres på en anden
>måde ?

Jeg synes der er noget ulogisk i nedenstående:
Er tabellen "visit" og tabellen "tabel" to forskellige tabeller - eller
den samme?
Hvis det er to forskellige, giver det måske mening. Så det går jeg ud
fra.
><%
>
>set rs = server.createobject("adodb.recordset")
>sql = "Select * From visit Where brugernavn = '" &
>session("brugernavn")& "'"

Ændre til (som andre har sagt):
sql = "Select liste From visit Where brugernavn = '" &
session("brugernavn") & "'"

>rs.open sql, Conn, 0, 1, 1
>
>strTemp = Rs("liste")
>arrTemp = split(strTemp, "+")

Nu er det svært at vide, hvad "tabel" indeholder, men vil det ikke tjene
dit formål, hvis du:

strNewTemp = "'" & Join(arrTemp, "', '") & "'"

SQL = "SELECT DISTINCT brugernavn FROM tabel" & _
" WHERE brugernavn IN (strNewTemp)

Set LO = conn.Execute(SQL)
Do While Not LO.Eof
Response.Write "<li>" & LO("brugernavn") & "</li>"
LO.MoveNext
Loop

- så slipper du af med din loop. Men det afhænger af, at jeg har
forstået din tabel rigtigt.

Derudover er jeg enig med Leif i, at det er uhensigtsmæssigt
tabel-design.

Good luck!
Jørn

--
Jørn Andersen, Brønshøj

Danske tropper hjem fra Irak, nu!
Skriv under: www.kirkmand-initiativet.dk

j p (25-02-2007)
Kommentar
Fra : j p


Dato : 25-02-07 13:26

> ><%
> >
> >set rs = server.createobject("adodb.recordset")
> >sql = "Select * From visit Where brugernavn = '" &
> >session("brugernavn")& "'"
>
> Ændre til (som andre har sagt):
> sql = "Select liste From visit Where brugernavn = '" &
> session("brugernavn") & "'"
>
> >rs.open sql, Conn, 0, 1, 1
> >
> >strTemp = Rs("liste")
> >arrTemp = split(strTemp, "+")
>
> Nu er det svært at vide, hvad "tabel" indeholder, men vil det ikke tjene
> dit formål, hvis du:
>
> strNewTemp = "'" & Join(arrTemp, "', '") & "'"
>
> SQL = "SELECT DISTINCT brugernavn FROM tabel" & _
> " WHERE brugernavn IN (strNewTemp)

I ovenstående er de en syntax fejl, men jeg kan ikke finde den, ellers
tror jeg det vil virke.

I Tabel er der kun et brugernavn i feltet brugernavn




> Set LO = conn.Execute(SQL)
> Do While Not LO.Eof
> Response.Write "<li>" & LO("brugernavn") & "</li>"
> LO.MoveNext
> Loop
>
> - så slipper du af med din loop. Men det afhænger af, at jeg har
> forstået din tabel rigtigt.
>
> Derudover er jeg enig med Leif i, at det er uhensigtsmæssigt
> tabel-design.
>
> Good luck!
> Jørn
>
> --
> Jørn Andersen, Brønshøj
>
> Danske tropper hjem fra Irak, nu!
> Skriv under: www.kirkmand-initiativet.dk


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

j p (25-02-2007)
Kommentar
Fra : j p


Dato : 25-02-07 18:03

Hej

Jeg har løst det:

SQL = "SELECT * FROM tabel WHERE brugernavn IN " & "(" & strNewTemp & ")" &
""

så virker det, tak for hjælpen

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørn Andersen (25-02-2007)
Kommentar
Fra : Jørn Andersen


Dato : 25-02-07 18:46

On 25 Feb 2007 12:26:15 GMT, j p <donner_63@hotmail.com> wrote:

>> SQL = "SELECT DISTINCT brugernavn FROM tabel" & _
>> " WHERE brugernavn IN (strNewTemp)
>
>I ovenstående er de en syntax fejl, men jeg kan ikke finde den, ellers
>tror jeg det vil virke.

Ja, det var mig, der var for hurtig:
SQL = "SELECT DISTINCT brugernavn FROM tabel" & _
" WHERE brugernavn IN (" & strNewTemp & ")"

OBS: Gider du ikke skære lidt i det du svarer på


Mvh. Jørn

--
Jørn Andersen, Brønshøj
ALLE danske tropper HJEM fra Irak, NU
Skriv under: www.kirkmand-initiativet.dk
Demonstrér 17. marts: www.nejtilkrig.dk

j p (26-02-2007)
Kommentar
Fra : j p


Dato : 26-02-07 09:06

Jo det skal jeg nok.

Lige til tillægs spørgsmål.

Hvordan søger jeg for at de listes i samme rækkefølge som de lå i
rs("liste") ?
Nu ligger de som de bliver fundet i tabel


<%
set rs = server.createobject("adodb.recordset")
sql = "Select * From visit Where brugernavn = '" & session("brugernavn")&
"'"
rs.open sql, Conn, 0, 1, 1

strTemp = Rs("liste")
arrTemp = split(strTemp, "+")

strNewTemp = "'" & Join(arrTemp, "','") & "'"

SQL = "SELECT * FROM tabel WHERE brugernavn IN " & "(" & strNewTemp & ")"
& ""

Set rs = conn.Execute(SQL)
Do While Not rs.Eof
response.Write "<li>" & rs("brugernavn") & "</li><br>"
end if
rs.MoveNext
Loop
%>

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409084
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste