Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Freedom
    Registrato dal
    Jan 2003
    Messaggi
    839

    Recordset multipli in include

    Ciao

    in un include ho un apertura rs tipo:

    Sub SubOpenRS
    Set ObjRS = Server.CreateObject("ADODB.RecordSet")
    End Sub


    il problema č che se all'interno di un recordset nel voglio aprire un altro, usando lo stesso include ^, ovviamente mi va in conflitto.

    Vorrei capire come posso adoperare la stessa sub per tutti i recordset che voglio aprire
    Sicut Nox Silentes

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Puoi utilizzare quella SUB solo se prima provvedi a distruggere l'oggetto ObjRS creato altrimenti non puoi aprirne un altro se non con un altro nome.

    roby

  3. #3
    Utente di HTML.it L'avatar di Freedom
    Registrato dal
    Jan 2003
    Messaggi
    839
    Originariamente inviato da Roby_72
    Puoi utilizzare quella SUB solo se prima provvedi a distruggere l'oggetto ObjRS creato altrimenti non puoi aprirne un altro se non con un altro nome.

    roby

    Lo so... č appunto questo il problema: come poter riutilizzare la stessa sub per tutti i rs.

    Coič, dovrebbe poter venire una cosa simile: RS1, RS2,...
    Sicut Nox Silentes

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    Sub SubOpenRS (oRs)
    Set oRS = Server.CreateObject("ADODB.RecordSet")
    End Sub
    
    call SubOpenRS (objRS)
    call SubOpenRS (objRS1)
    call SubOpenRS (objRS2)
    Roby

  5. #5
    Utente di HTML.it L'avatar di Freedom
    Registrato dal
    Jan 2003
    Messaggi
    839
    Ciao Roby,

    facendo come mi suggerivi tu:

    Sub SubOpenRS(oRs)
    Set oRS = Server.CreateObject("ADODB.RecordSet")
    End Sub


    StrSQL = "SELECT * FROM tabella"
    SubOpenRS("oRs1")
    ObjRS .Open StrSQL, ObjConn ,3,3

    Do While Not ObjRS.EOF
    ...
    ObjRS.MoveNext
    Loop
    ...
    chiudo RS
    ....


    mi da questo errore: Errore di run-time di Microsoft VBScript (0x800A01F4)
    Variabile non definita: 'ObjRS'
    Sicut Nox Silentes

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    Sub SubOpenRS(oRs)
    Set oRS = Server.CreateObject("ADODB.RecordSet")
    End Sub
    
    
    StrSQL = "SELECT * FROM tabella"
    SubOpenRS(ObjRS)
    ObjRS .Open StrSQL, ObjConn ,3,3
    
    Do While Not ObjRS.EOF 
    ...
    ObjRS.MoveNext 
    Loop 
    ...
    chiudo ObjRS

  7. #7
    Utente di HTML.it L'avatar di Freedom
    Registrato dal
    Jan 2003
    Messaggi
    839
    Originariamente inviato da Roby_72
    codice:
    Sub SubOpenRS(oRs)
    Set oRS = Server.CreateObject("ADODB.RecordSet")
    End Sub
    
    
    StrSQL = "SELECT * FROM tabella"
    SubOpenRS(ObjRS)
    ObjRS .Open StrSQL, ObjConn ,3,3
    
    Do While Not ObjRS.EOF 
    ...
    ObjRS.MoveNext 
    Loop 
    ...
    chiudo ObjRS

    Ora mi da: Errore di run-time di Microsoft VBScript (0x800A01F4)
    Variabile non definita: 'objRS'
    Sicut Nox Silentes

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Non lo puoi fare...
    La sub usala solo per aprire e chiudere la connessione.
    Per i recordset fai prima a dichiararli e crearli quando ti servono.
    Risparmi righe di codice e velocitą di esecuzione.
    Tanto sei costretto a fare una sub per ognuno di essi.

    Roby

  9. #9
    due esempi:

    apro un recordset avendo gią aperto una connessione:
    codice:
    'apro recordset
    sub oRs(Nome,sql,op1,op2)
    	
    	if Nome="" then Nome="rs"
    	
    	dim rsTemporaneo
    	set rsTemporaneo=server.CreateObject("adodb.recordset")
    	rsTemporaneo.open sql,conn,op1,op2
    	
    	ExecuteGlobal "Dim " & Nome
    	Execute "Set " & Nome & "=rsTemporaneo"
    	Set rsTemporaneo = Nothing
    
    end sub
    
    set conn=server.createObject("adodb.connection")
    conn.open stringa_connessione
    
    oRs "pippo","select * from tabella",1,1
    
    while not pippo.eof
    
    pippo.movenext
    wend
    
    pippo.close: set pippo=nothing
    conn.close: set conn=nothing
    altra variante, passando alla funzione il riferimento alla connessione:
    codice:
    'apro recordset con connessione passata da me
    sub oRsConn(Nome,sql,byref connA,op1,op2)
    	
    	if Nome="" then Nome="rs"
    	
    	dim rsTemporaneo
    	set rsTemporaneo=server.CreateObject("adodb.recordset")
    	rsTemporaneo.open sql,connA,op1,op2
    	
    	ExecuteGlobal "Dim " & Nome
    	Execute "Set " & Nome & "=rsTemporaneo"
    	Set rsTemporaneo = Nothing
    
    end sub
    
    set secondaConnessione=server.createObject("adodb.connection")
    secondaConnessione.open stringa_connessione_2
    
    oRsConn "sec_recordset","select * from tabella",secondaConnessione,1,1
    
    while not sec_recordset.eof
    ..
    ..

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.