29. november 2000 - 08:53Der er
5 kommentarer og 4 løsninger
Gennemløb af lange tabeller
Jeg henter en del poster fra en tabel....eksempel:
<% DSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"../database/adresser.mdb\") Set myConn = Server.CreateObject(\"ADODB.Connection\") myConn.Open DSN SQL = \"SELECT * FROM Kunder\" Set oRs = Conn.Execute(SQL)
WHILE NOT oRs.EOF oRs(\"Navn\") %> <br> <% oRs(\"Username\") %> <br> <br> <% oRs.MoveNext WEND myConn.Close Set myConn = Nothing %>
Nu står siden tom i lang tid før end scriptet er kørt færdigt.
Kan det lade sig gøre at siden begynder at skrive på siden, i takt med at den løber tabellen i gennem, således at man får de første poster med det samme.
eller kan man skriver \"Vent et øjeblik\" som så forsvinder når alle posterne er fundet og siden skrives.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Det kan ikke lade sig gøre med ASP, da hele dit script eksekveres på serveren inden det sendes ud til klienten.
Det kunne måske godt lade sig gøre med lidt kreativt JavaScript, men jeg har ikke lige et script på hånden. Men du kan ikke udelukkende gøre det i ASP - Desværre.
Response.Flush virker faktisk genialt, du skal dog passe voldsomt på med at vise dit resultat i en tabel.
De fleste browsere viser ikke tabellen før den er \"færdig-streamet\" ud til brugeren, altså før den sidste </TABLE> tag er sendt afsted.
Jeg tror nok IE vil gøre det hvis man angiver width og height, men det er ikke noget der er afprøvet.
Prop Response.Flush ind i dit Loop. For bedre perfomance bør du dog kun lave en flush for hver 50 records du skriver ud. Dette kan laves på denne måde:
If Counter MOD 50 = 1 Then Response.Flush Counter = Counter +1
Som en fodnote kan det nævnes at Response.Buffer er lig med True som default på en WIndows 2000, og false på en NT server.
Hvorfor virker dette ikke....jeg får ingen fejl men siden kommer først når all poster er hentet.
<% AntalPoster=0 WHILE NOT oRs.EOF response.write(oRs(\"Navn\")) response.write(\"<br>\") If AntalPoster MOD 2 = 1 Then Response.Flush AntalPoster=AntalPoster+1 oRs.MoveNext WEND %>
Hvis du har en tabel rundt omkring det du response.write\'r, så vil det først blive vist når browseren støder på </TABLE>-taggen.
/søren
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.