Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    clico for e do while su recordest lento

    ciao a tutti,
    non conosco benissimo asp, ma volevo chiedervi un consiglio.

    devo fare un ciclo for (30 giri) con dentro annidato un do while su un recordset che contiene 22 righe di tabella per stampare a video un calendario di un mese dato, popolato con i dati del recordset opportunamente lavorati.

    Perché risulta molto lento nell'ordine di una ventina di secondi?

    dove sbaglio?

    GRAZIEEEE

    di seguito il codice:

    query = "SELECT A.[des_ragsoc], G.[cod_anagra] ,G.[anno] ,G.[mese] , CAST(G.giorno AS int) AS giorno ,G.[ore],G.[CDN_COMMS],G.[id] ,G.[SER_COMMS],G.[CDA_CLI],G.[des_ragsoc],C.[DES_COMMS] FROM [U_mesa_eSYS].[dbo].[XVW_GIORNIATTIVITA] as G INNER JOIN [U_mesa_eSYS].[dbo].[XVW_COMMESSE-R] AS C ON G.[CDN_COMMS] = C.[CDN_COMMS] INNER JOIN CA_ANAGRAFICHE AS A ON A.cod_anagra = G.cod_anagra WHERE G.[anno] = '"& annoappo &"' AND G.[mese] = '"& mese &"' AND G.cod_anagra = '" & session("cod_anagra") &"' AND A.cod_anagra = '" & session("cod_anagra") &"' ORDER BY giorno ASC;"
    'response.write("dati: "&query)
    'Response.end
    Set RS_query = Server.CreateObject("ADODB.recordset")

    set RS_query = objConn.Execute (query)


    '################################################# ###################################
    %>
    <tr>
    <td><%=RS_query(0)%></td>
    <%
    for ctCiclo = 1 to gg


    contenuto = ""
    RS_query.movefirst
    do while not(RS_query.eof)

    'contenuto = ""
    'response.write(ctCiclo&" - "&RS_query("giorno")&"
    ")

    if RS_query("giorno") = ctCiclo then
    contenuto = contenuto & " " & RS_query("des_ragsoc") & " - "
    elseif RS_query("giorno") > ctCiclo then
    'response.write("uscita
    ")
    exit do
    end if

    RS_query.movenext

    loop%>
    <td><%
    if len(contenuto) >= 1 and right(contenuto,3) = " - " then
    contenuto = mid(contenuto,1,len(contenuto)-3)
    end if
    response.write(contenuto)
    %></td>
    <% next %>

    </tr></table>

  2. #2
    lento ad eseguire la query o lento a mostrarla?

  3. #3
    ciao

    la query è veloce...

    l'uso congiuto di for e do while sul recordset è molto lento nella visualizzazione...


    grazie

  4. #4
    ma le info le hai già ordinate per giorno! perché le devi ricontrollare? o forse non ho capito quello che devi fare...

  5. #5

    Re: clico for e do while su recordest lento

    Originariamente inviato da shopbazar
    ...
    if RS_query("giorno") = ctCiclo then
    contenuto = contenuto & " " & RS_query("des_ragsoc") & " - "
    elseif RS_query("giorno") > ctCiclo then
    'response.write("uscita
    ")
    exit do
    end if
    ...
    credo che possa diventare

    codice:
    ...
    contenuto = contenuto & " " & RS_query("des_ragsoc") & " - "
    ...

    mentre questo

    Originariamente inviato da shopbazar
    ...
    if len(contenuto) >= 1 and right(contenuto,3) = " - " then
    contenuto = mid(contenuto,1,len(contenuto)-3)
    end if
    response.write(contenuto)
    può diventare così

    codice:
    if len(trim(contenuto)) >0 then
    contenuto =trim(left(contenuto,len(contenuto)-1))
    end if
    response.write (contenuto)
    ad occhio

  6. #6
    grazie delle risposte...
    ma il tempo di esecuzione rimane elevato...

    mi chiedo se ci possa essere qualche problema (tipo nella configurazione di IIS, ma non so se è una baggianata) che non permette una veloce lettura del recordset



  7. #7
    non hai risposto alle mie domande

    Originariamente inviato da optime
    ma le info le hai già ordinate per giorno! perché le devi ricontrollare? o forse non ho capito quello che devi fare...

  8. #8
    devo inserire in un calendario su una sola riga per ogni giorno tutte le attività di un consluente...
    per questo devo controllare in base ai giorni se ha 0, 1 o più attività.
    Ma il problema non è questo...il fatto è che si rallenta moltissimo...

    Da cosa può dipendere???


    GRAZIEEEEE

  9. #9
    Originariamente inviato da shopbazar
    Ma il problema non è questo...
    ma se sai già che non è quello allora















    (per me invece è quello)

  10. #10
    Originariamente inviato da shopbazar
    devo inserire in un calendario su una sola riga per ogni giorno tutte le attività di un consluente...
    per questo devo controllare in base ai giorni se ha 0, 1 o più attività.
    Ma il problema non è questo...il fatto è che si rallenta moltissimo...

    Da cosa può dipendere???


    GRAZIEEEEE
    togli l'if ed il ciclo for
    codice:
    query = "SELECT A.[des_ragsoc], G.[cod_anagra] ,G.[anno] ,G.[mese] , CAST(G.giorno AS int) AS giorno ,G.[ore],G.[CDN_COMMS],G.[id] ,G.[SER_COMMS],G.[CDA_CLI],G.[des_ragsoc],C.[DES_COMMS] FROM [U_mesa_eSYS].[dbo].[XVW_GIORNIATTIVITA] as G INNER JOIN [U_mesa_eSYS].[dbo].[XVW_COMMESSE-R] AS C ON G.[CDN_COMMS] = C.[CDN_COMMS] INNER JOIN CA_ANAGRAFICHE AS A ON A.cod_anagra = G.cod_anagra WHERE G.[anno] = '"& annoappo &"' AND G.[mese] = '"& mese &"' AND G.cod_anagra = '" & session("cod_anagra") &"' AND A.cod_anagra = '" & session("cod_anagra") &"' ORDER BY giorno ASC;"
    'response.write("dati: "&query)
    'Response.end
    Set RS_query = Server.CreateObject("ADODB.recordset")
    set RS_query = objConn.Execute (query)
    '####################################################################################
    %>
    <tr>
    <td><%=RS_query(0)%></td>
    <%
    contenuto = ""
    RS_query.movefirst
    do while not(RS_query.eof)
    contenuto = contenuto & " " & RS_query("des_ragsoc") & " - "
    RS_query.movenext
    loop
    %>
    <td><%
    if len(trim(contenuto)) >0 then
    contenuto =trim(left(contenuto,len(contenuto)-1))
    end if
    response.write (contenuto)
    %>
    </td>
    <% next %>
    </tr></table>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.