Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    297

    Dubbio su sintassi per gestione Recordset - Quale metodo è il migliore?

    Ciao a tutti.
    Ho già provato a schiarirmi le idee facendo una ricerca sul forum ma temo di non aver capito ancora bene ... pongo di nuovo la questione.

    Per l'apertura ed il controllo di un recordset posso fare in due modi:

    I MODO
    codice:
    Set rs = cnConn.Execute("query")
      If not rs.eof then 'CONTROLLO SUL RECORDCOUNT
      end if
    Set rs = nothing
    II MODO
    codice:
    sql = "query"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sqlCtrl, cnConn, 3, 3
      If not rs.recordcount = 0 then 'CONTROLLO SUL RECORDCOUNT
      end if
    rs.Close
    Set rs = Nothing
    Generalmente, io uso il I MODO quando devo scatenare azioni di UPDATE, INSERT, DELETE mentre se devo SOLO LEGGERE dati da una tabella uso il II MODO

    Ma se io usassi il I MODO anche solo per scorrere e leggere è corretto, è performante?
    Qual'è il modo migliore di procedere?

    Grazie fin d'ora
    Franz

  2. #2
    ho dovuto cambiare un sacco di cose visto che recourdcount mi ha lasciato a piedi...

    quando fai l'if rs.eof... metti anche rs.bof...
    cioè:
    codice:
    IF NOT rs.bof OR rs.eof THEN
    Grazie sempre di tutto!!!
    Alberto

  3. #3
    il secondo metodo è piu pesante, se vuoi sapere perchè penso che puoi trovarlo qui:

    http://asp.html.it/articoli/leggi/79...-e-locktype/2/
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    297
    Scusa Santino83_02, ma non credo di aver ben capito

    Tu dici che il II MODO è più pesante e mi onsigli di leggere la pagina del CursorType e LockType ... ma queste proprietà non vanno impostate proprio nel II MODO?
    Io metto sempre 3,3 perchè a quanto ho letto è più performante quando faccio le select di lettura record ...

    Credo ancora di non aver ben capito la differenza tra i due modi e quando è meglio usare uno piuttosto che l'altro ...

  5. #5
    due articolini:

    http://www.mna.hkr.se/caspdoc/html/a...e_property.htm

    http://www.4guysfromrolla.com/webtech/112998-1.shtml


    come leggerai se tu lo apri in static/forward-only (di default quando fai set rs= conn.execute) tu migliori le performance sono migliori quando ti serve di scorrere solo una volta il recordset.. aprirlo con valori maggiori vuol dire poter fare altre operazioni col recordset oltre la forward, quindi ti ritrovi con un oggetto piu pesante. Piu nello specifico non ti posso andare perchè non conosco l'implementazione dell'oggetto ado o non ho mai letto articoli particolarmente interessanti a riguardo (e, ad essere sinceri, non me ne pò fregà di meno), però devi aprire per quello che ti serve, non che ti apri un recordset in cui tu puoi andare avanti e indietro, modificare/inserire dati e poi salvarli nel database (cosa che il 3,3 fa) senza sapere che paghi delle conseguenze

    1,1 o solo set rs = conn .execute per letture semplici forward-only, 1,3 se devi impaginare il recordset, 3,3 o altro se proprio ti serve da farci chissà che operazione particolare co sto povero recordset

    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    297
    Scusate se rispondo solo ora.
    Allora, se ho capito, posso sempre usare il I MODO solo che devo andare ad impostare correttamente a seconda dell'occasione il CursorType e il LockType
    Ricapitolo con la sintassi.

    SOLO LETTURA (con movenext) -> IMPLICITO 1,1
    Set rs = cnConn.Execute("query")
    if NOT rs.bof OR rs.eof then 'CONTROLLO SUL RECORDCOUNT
    end if
    Set rs = nothing

    ====

    UPDATE, INSERT, DELETE
    Set rs = cnConn.Execute("query")
    rs.CursorType = 3
    rs.LockType = 3
    if NOT rs.bof OR rs.eof then 'CONTROLLO SUL RECORDCOUNT
    end if
    Set rs = nothing

    ====

    Per azioni di IMPAGINAZIONE (MovePrev, MoveLast ...)
    Set rs = cnConn.Execute("query")
    rs.CursorType = 1
    rs.LockType = 3
    if NOT rs.bof OR rs.eof then 'CONTROLLO SUL RECORDCOUNT
    end if
    Set rs = nothing

    Giusto?
    Io posso fare anche così Set rs = cnConn.Execute("query"), 3, 3

    Portate pazienza
    Grazie

  7. #7
    posso fare anche così Set rs = cnConn.Execute("query"), 3, 3
    no...
    codice:
     set rs = server.CreateObject("adodb.recordset")
     sql = "...select che ti serve..."
     rs.open sql, conn, 3, 3
    Conn... è la connessione ovviamente...
    Grazie sempre di tutto!!!
    Alberto

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    297
    Quindi, a meno che non devo solo leggere sarebbe meglio NON posso usare il II MODO.
    Quindi, ricapitolando, così?

    SOLO LETTURA (con movenext) -> IMPLICITO 1,1
    Set rs = cnConn.Execute("query")
    if NOT rs.bof OR rs.eof then 'CONTROLLO SUL RECORDCOUNT
    end if
    Set rs = nothing

    ====

    UPDATE, INSERT, DELETE
    set rs = server.CreateObject("adodb.recordset")
    sql = "query"
    rs.open sql, conn, 3, 3

    ====

    Per azioni di IMPAGINAZIONE (MovePrev, MoveLast ...)
    set rs = server.CreateObject("adodb.recordset")
    sql = "query"
    rs.open sql, conn, 1, 3


    Giusto?

  9. #9
    ... in linea di massima si...
    Grazie sempre di tutto!!!
    Alberto

  10. #10
    per insert delete update
    conn.execute
    a cosa serve aprire un recordset in quei casi?

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.