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

    Ritornare un Recordset da una funzione

    Salve, premettendo che sto iniziando a vedere ASP soltanto da pochi giorni, volevo illustrarvi un piccolo problemino che ho incontrato. Praticamente, ho creato un file incdb.asp che contiene questa funzione:

    codice:
    function getRs(strSql)
    	Dim oConn
    	Dim oRs
    	
    	Set oConn = Server.CreateObject("ADODB.Connection")
    	oConn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("mdb-database/RAP.mdb")
    	oConn.Open()
    	
    	Set oRs = Server.CreateObject("ADODB.RecordSet")
    	oRs.Open strSql, oConn
    	
    	oConn.Close
    	Set oConn = nothing
    	
    	getRs = oRs
    end function
    Tale funzione mi servirebbe per fare in modo che la connessione rimanga aperta soltanto per il lasso di tempo in cui viene eseguita la query. Se da una pagina asp però vado a fare: set oRs = getRs(strSql), in realtà non mi restituisce un oggetto Resultset valido, dato che ad esempio dice che EOF non è un membro dell'oggetto etc..

    Come posso risolvere il problema? Grazie anticipatamente!

  2. #2
    Mi sono accorto che al momento della chiusura della connessione, non posso più utilizzare l'oggetto Recordset, però ho sentito parlare di recordset disconnessi, potreste illuminarmi? Devo fare in modo che la connessione venga tenuta aperta solamente per lo stretto necessario. Ciauz

  3. #3
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Potresti usare

    codice:
    arr_recset = rs.GetRows()
    In questo modo ottieni un array a due dimensioni (righe,colonne) che potrai usare dopo aver chiuso la connessione.

    Roby

  4. #4
    Ti ringrazio della risposta Roby! In realtà, facendo un piccolo giro su google mi sono informato un pò su questi "Disconnected Recordset" che fanno proprio al mio caso, ovvero mantenere aperta la connessione solamente per lo stretto indispensabile. Riporto il codice della funzione:

    codice:
    function getRs(strSql)
    	'Set some constants
      	Const adOpenStatic = 3    
      	Const adUseClient = 3
      	Const adLockBatchOptimistic = 4 
    	
    	Dim oConn
    	Dim oRs
    	
    	Set oConn = Server.CreateObject("ADODB.Connection")
    	oConn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("mdb-database/RAP.mdb")
    	oConn.Open()
    	
    	Set oRs = Server.CreateObject("ADODB.RecordSet")
    	oRs.CursorLocation = adUseClient
    	oRs.Open strSql, oConn, adOpenStatic, adLockBatchOptimistic
    	
    	'Disconnect the Recordset
      	Set oRs.ActiveConnection = Nothing
    	
    	oConn.Close
    	Set oConn = nothing
    	
    	Set getRs = oRs
    end function
    In questo modo posso chiudere la connessione ma continuare ad usare l'oggetto Recordset con tutte le sue funzionalità messe a disposizione da ADO e che non avrei con un semplice array (come ad esempio il sorting etc).
    Ciao a tutti!

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.