Seneste forumindlæg
Køb / Salg
 * Uofficiel Black/White liste V3
Login / opret bruger

Forum \ Programmering og webdesign \ Programmering
Denne tråd er over 6 måneder gammel

Er du sikker på, at du har noget relevant at tilføje?

asp : if+tæller

Af Monsterbruger Erik_A | 22-11-2004 17:56 | 1780 visninger | 5 svar, hop til seneste
Hejsa... Sidder lige og roder med lidt asp, og skal på siden bruge de 3 nyeste records i db. Jeg gør det sådan : i=0 do while not RS.eof if i<3 then udskriver data i=i+1 RS.movenext end if loop Og for at hente de tre records tager den en evighed og ender altid ud med at det tog for lang tid og afbryder. Når jeg så fjerner if i<3 then og end if tager den alle fra databasen, men er fandens hurtig. Den måde jeg tæller på virker, men er fra dengang jeg programmerede i c++ og er ikke sikkert den helt optimale at bruge her... Hvad bruger jeg istedet ?
--
/Erik_A
#1
L00t
Moderator
22-11-2004 18:10

Rapporter til Admin
Med det du gør der, kalder du kun RS.MoveNext når i er mindre end 3. Det vil sige at du aldrig bliver færdig, for straks i bliver til 4, kalder du ikke MoveNext mere. Når du ikke kalder MoveNext, kan RS.eof aldrig blive sand, for du vil aldrig nå til sidst post i recordsettet. Derfor er det en uendelig løkke, og timer ud. Omskriv det så du kalder rs.MoveNext ligemeget hvad, eller fjern While løkken.
--
http://QuestKeep.com[...] - Quest guides til World of Warcraft
#2
MadMoose
Superbruger
22-11-2004 22:21

Rapporter til Admin
Udover det så gennemløber du også hele tabellen selvom du kun skal bruge 3. Personligt ville jeg bare smidde en "top 3" ind i sql-sætningen, som fx. "SELECT * FROM SomeTable TOP 3". (Hvis du bruger mysql skal du bruge noget andet) Hvis det ikke dur for dig, kan du dog også rette din løkke til. Jeg ville nok lave den således: i=0 do while i<3 and not RS.eof ' udskriver data i=i+1 RS.movenext loop (Hvis koden ikke virker er det nok fordi jeg ikke har brugt VBScript til ASP i et par år.)
--
madmoose.dk
#3
Erik_A
Monsterbruger
22-11-2004 22:37

Rapporter til Admin
Prøvede lige den top 3 tilføjelse, virker super... Jeg order på dato, og når jeg så har f.eks tre records fra idag og en fra igår og forgårs tager den de tre fra idag plus de to tidligere, altså 5 ialt... Men det er måske også en god måde at gøre det på, det skal bruges til et nyhedsside og det er jo nok ikke meget ved at dagsgamle nyheder syger ud med det samme.... Nå, men om aller omstændigheder, takker for hjælpen...
--
/Erik_A
#4
MadMoose
Superbruger
23-11-2004 10:52

Rapporter til Admin
#3, Hvis du vil undgå at få flere end 3 ud, så kan du bare sortere efter flere felter, så den kan kende forskel på dem. Hvis dine records fx. har et unikt id "id", kan du bruge "ORDER BY dato DESC, id DESC TOP 3" eller noget lignende. Du kan selvfølgelig også bare ændre din dato-type til også at bruge timer, minutter og sekunder. Så kan du sortere dem efter seneste selv om du har flere nyheder på samme dag.
--
madmoose.dk
#5
Erik_A
Monsterbruger
23-11-2004 16:14

Rapporter til Admin
Tja, det var jo en mulighed.... Er egentlig ganske godt tilfreds med at den tager for de tre tidligste dage, især hvis der bliver skrevet 4 idag, så er den førstskrevne jo stadig en nyhed og bør stå på forsiden... Men takker for hjælpen...
--
/Erik_A

Opret svar til indlægget: asp : if+tæller

Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.

Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.

Opret bruger | Login
NYHEDSBREV
Afstemning