Visualizzazione dei risultati da 1 a 10 su 10

Discussione: movelast

  1. #1
    Utente di HTML.it L'avatar di antosto
    Registrato dal
    Nov 2002
    Messaggi
    112

    movelast

    Ciao a tutti,

    usando questo tipo di codice per aprire e scorrere un recordset

    [CODE]
    Set cnnAdo = Server.CreateObject("ADODB.Connection")
    cnnAdo.open "Provider=SQLOLEDB.1;Persist Security Info=False;User id=sa;Initial Catalog=DB;Data Source=(local);"
    Set rs = Server.CreateObject("ADODB.Recordset")
    Set rs = cnnAdo.execute("SELECT * FROM tabella ORDER BY campo")
    while not rs.eof
    if condizione then
    rs.movelast
    else
    rs.movenext
    end if
    wend
    rs.close
    Set rs = nothing
    cnnAdo.close
    Set cnnAdo = nothing
    CODE]

    quando lo mando in esecuzione mi da questo errore in corrispondenza del rs.movelast

    codice:
    Tipo di errore:
    Microsoft OLE DB Provider for SQL Server (0x80040E24)
    Il set di righe non supporta operazioni di recupero all'indietro.
    Dove sta l'errore?

    Grazie

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Sicuro ti occorra utilizzare rs.movelast?

    Roby

  3. #3
    non aprire il recordset così ... ma così :

    Set cnnAdo = Server.CreateObject("ADODB.Connection")
    cnnAdo.open "Provider=SQLOLEDB.1;Persist Security Info=False;User id=sa;Initial Catalog=DB;Data Source=(local);"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.open "SELECT * FROM tabella ORDER BY campo", cnnAdo,adopendynamic, adlockoptimistic
    while not rs.eof
    if condizione then
    rs.movelast
    else
    rs.movenext
    end if
    wend
    rs.close
    Set rs = nothing
    cnnAdo.close
    Set cnnAdo = nothing


    con quel cursor e quel lock dovresti riuscire a fare le operazioni che ti servono

  4. #4
    Utente di HTML.it L'avatar di antosto
    Registrato dal
    Nov 2002
    Messaggi
    112
    Originariamente inviato da vaargard
    non aprire il recordset così ... ma così :

    Set cnnAdo = Server.CreateObject("ADODB.Connection")
    cnnAdo.open "Provider=SQLOLEDB.1;Persist Security Info=False;User id=sa;Initial Catalog=DB;Data Source=(local);"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.open "SELECT * FROM tabella ORDER BY campo", cnnAdo,adopendynamic, adlockoptimistic
    while not rs.eof
    if condizione then
    rs.movelast
    else
    rs.movenext
    end if
    wend
    rs.close
    Set rs = nothing
    cnnAdo.close
    Set cnnAdo = nothing


    con quel cursor e quel lock dovresti riuscire a fare le operazioni che ti servono
    In questo modo mi da questo errore:

    Tipo di errore:
    ADODB.Recordset (0x800A0BB9)
    Gli argomenti non sono di tipo valido, non sono compresi nell'intervallo consentito o sono in conflitto.

    Ho provato a sostiuire le costanti:
    adopendynamic, adlockoptimistic
    con 2, 2
    ma mi ha restituto nuovamente l'errore iniziale cioè:
    Tipo di errore:
    Microsoft OLE DB Provider for SQL Server (0x80040E24)
    Il set di righe non supporta operazioni di recupero all'indietro.

    Cosa posso fare???

  5. #5
    Utente di HTML.it L'avatar di antosto
    Registrato dal
    Nov 2002
    Messaggi
    112
    Originariamente inviato da Roby_72
    Sicuro ti occorra utilizzare rs.movelast?

    Roby
    Ho pensato d'utilizzare il movelast per uscire dal ciclo while quando si verifica una certa condizione in modo da non dover aspettare che il ciclo si scorra tutti i record.

    Il mio cliente si lamenta di una certa lentezza in questa pagina perchè nonstante abbia messo la paginazione lui si scorre tutti i record e fa visualizzare solo quelli di quella pagina.

    Se mi sai indicare altre vie... le metto in pratica.

    Grazie

  6. #6
    Set cnnAdo = Server.CreateObject("ADODB.Connection")
    cnnAdo.open "Provider=SQLOLEDB.1;Persist Security Info=False;User id=sa;Initial Catalog=DB;Data Source=(local);"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.cursorlocation = 3 <-----------
    rs.open "SELECT * FROM tabella ORDER BY campo", cnnAdo,adopendynamic, adlockoptimistic
    rs.activeconnection = nothing <--------
    while not rs.eof
    if condizione then
    rs.movelast
    else
    rs.movenext
    end if
    wend
    rs.close
    Set rs = nothing
    cnnAdo.close
    Set cnnAdo = nothing


    aggiungi le righe evidenziate con le frecce in quella stessa posizione, spostando il ciursore dovresti riuscire .... sto c***o di ADO!!! ehehehehe

  7. #7
    ma se è solo per quello usa exit do!!!!

    do until rs.eof
    if condizione then
    exit do
    else
    rs.movenext
    end if
    loop

  8. #8
    Utente di HTML.it L'avatar di antosto
    Registrato dal
    Nov 2002
    Messaggi
    112
    Originariamente inviato da vaargard
    Set cnnAdo = Server.CreateObject("ADODB.Connection")
    cnnAdo.open "Provider=SQLOLEDB.1;Persist Security Info=False;User id=sa;Initial Catalog=DB;Data Source=(local);"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.cursorlocation = 3 <-----------
    rs.open "SELECT * FROM tabella ORDER BY campo", cnnAdo,adopendynamic, adlockoptimistic
    rs.activeconnection = nothing <--------
    while not rs.eof
    if condizione then
    rs.movelast
    else
    rs.movenext
    end if
    wend
    rs.close
    Set rs = nothing
    cnnAdo.close
    Set cnnAdo = nothing


    aggiungi le righe evidenziate con le frecce in quella stessa posizione, spostando il ciursore dovresti riuscire .... sto c***o di ADO!!! ehehehehe
    ancora errore, ecco la risposta:
    Tipo di errore:
    ADODB.Recordset (0x800A0BB9)
    Gli argomenti non sono di tipo valido, non sono compresi nell'intervallo consentito o sono in conflitto.

  9. #9
    Utente di HTML.it L'avatar di antosto
    Registrato dal
    Nov 2002
    Messaggi
    112
    Originariamente inviato da vaargard
    ma se è solo per quello usa exit do!!!!

    do until rs.eof
    if condizione then
    exit do
    else
    rs.movenext
    end if
    loop

    Perfetto così funziona
    Grazie 1000

  10. #10
    ... ben strano, comunque haii letto l'altro post? se vuoi uscire dal ciclo quando viene raggiunta una certa condizione usa il ciclo do until ed esci dal ciclo con l'exit do!!! ... se invece vuoi ancora provare

    Set cnnAdo = Server.CreateObject("ADODB.Connection")
    cnnAdo.open "Provider=SQLOLEDB.1;Persist Security Info=False;User id=sa;Initial Catalog=DB;Data Source=(local);"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.cursorlocation = 3
    rs.activeconnection = cnnAdo
    rs.cursortype = 2
    rs.locktype = 2
    rs.open "SELECT * FROM tabella ORDER BY campo"
    rs.activeconnection = nothing
    while not rs.eof
    if condizione then
    rs.movelast
    else
    rs.movenext
    end if
    wend
    rs.close
    Set rs = nothing
    cnnAdo.close
    Set cnnAdo = nothing


    se ti da ancora errore, piosta la riga di codice incriminata!!!!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.