Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Recordset chiuso dopo query da stored procedure

    Salve a tutti.

    Ho un problema quando eseguo una stored procedure che dovrebbe darmi dei dati con i quali riempio un recordset.

    Il codice è questo

    codice:
    Dim con, rs
    	
    Set con = Server.CreateObject("ADODB.Connection")
    Set rs = Server.CreateObject("ADODB.Recordset")
    		
    con.Open str_cn
    
    SQL = "lstCliente @Step = 1"
    
    rs.Open SQL, con
    
    if not rs.eof then
    
    ........vario codice......
    
    end if
    La stored procedure è la seguente:

    codice:
    CREATE    PROCEDURE lstCliente (@Step int = 1)
    AS
    BEGIN
    
     IF @Step=1
     BEGIN
      DECLARE @Numero bigint
    
      SELECT @Numero = ID_Cliente FROM Clienti WHERE Stato = '00' ORDER BY NEWID() 
    
      UPDATE Clienti SET Stato = '100' WHERE ID_Cliente = @Numero
    
      SELECT Clienti.Nome, Clienti.Cognome, Clienti.Telefono1, Clienti.Telefono_Alt, Clienti.Indirizzo, Clienti.CAP, Clienti.Comune, Clienti.Provincia, Clienti.Prodotto, Chiamate.a_Note
      FROM Clienti LEFT OUTER JOIN Chiamate
      ON Clienti.ID_Cliente = Chiamate.ID_Cliente
      WHERE Clienti.ID_Cliente = @Numero
      order by Chiamate.ID_Chiamata desc
     END
    END
    GO
    Il problema è che una volta popolato il recordset, quando vado ad eseguire il controllo (if not rs.EOF then...) ho l'errore che mi dice che non posso eseguire tale operazione su un recordset chiuso.
    La stored procedure, se lanciata direttamente dal Query Analizer, mi restituisce regolarmente il record che dovrebbe.

    Qualcuno sa aiutarmi?

    Grazie in anticipo a tutti.

    Sono fermamente convinto che sia possibile fare ogni cosa. Tutto sta a capire come.

  2. #2
    Mi è venuto in mente che potrebbe essere un problema per il recordset "digerire" tutti i passaggi della stored procedure. Probabilmente prima ancora di eseguire la select il recordset si chiude (magari dopo l'update), quindi non mi ritorna alcun dato.
    C'è un modo per eseguire comunque quei comandi in un'unica procedura (senza, cioè, dover spezzettare i passaggi in vari step o varie procedure differenti)?
    Sono fermamente convinto che sia possibile fare ogni cosa. Tutto sta a capire come.

  3. #3
    ado aspetta che la sp finisca prima di tornare ad asp, quindi la sp può essere quanto complessa si vuole. hai provato con Set Rs=Conn.execute (sql)?

  4. #4
    Originariamente inviato da optime
    ado aspetta che la sp finisca prima di tornare ad asp, quindi la sp può essere quanto complessa si vuole. hai provato con Set Rs=Conn.execute (sql)?
    Ho provato, ma ho il medesimo errore...
    Sono fermamente convinto che sia possibile fare ogni cosa. Tutto sta a capire come.

  5. #5
    quello che hai postato è il codice *reale*? o è solo un esempio?

  6. #6
    Originariamente inviato da optime
    quello che hai postato è il codice *reale*? o è solo un esempio?
    É il codice reale, manca solo la stringa di connessione che comunque nel codice è presente e funzionante.
    Sono fermamente convinto che sia possibile fare ogni cosa. Tutto sta a capire come.

  7. #7
    nella SP hai messo SET NOCOUNT ON?

  8. #8
    Originariamente inviato da optime
    nella SP hai messo SET NOCOUNT ON?
    No, la Stored Procedure è esattamente quella che ho postato.
    A cosa serve "SET NOCOUNT ON"?
    Sono fermamente convinto che sia possibile fare ogni cosa. Tutto sta a capire come.

  9. #9
    mettilo. se funziona poi ti spiego

  10. #10
    Originariamente inviato da optime
    mettilo. se funziona poi ti spiego
    Perfetto, funziona, grazie mille?

    Dunque, questa è la formula magica che...?
    Sono fermamente convinto che sia possibile fare ogni cosa. Tutto sta a capire come.

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.