Salve a tutti è da molto ci sbatto la testa![]()
Mi sono fatto questa bella procedura che funziona perfettamente
Nella pagina asp la richiamo in questo modocodice:CREATE PROCEDURE GetBestPrice -- Parametri di input della sp @data_da datetime, @data_a datetime, @ID_Tipo int, @ID_Hotel int, @Numero numeric(9) AS BEGIN -- Imposto le variabili della procedura DECLARE @Occupate numeric(9) DECLARE @Disponibili numeric(9) DECLARE @day datetime DECLARE @ImportoFB money DECLARE @ImportoHB money DECLARE @ImportoBB money DECLARE @Conta numeric(9) -- Imposto il formato delle date SET DATEFORMAT dmy; SET @Conta = 0 -- Creo la tabella temporanea CREATE TABLE #tmp ( ID numeric, -- Contatore Data datetime, -- Giorno trovato ImportoFB money, -- Pensione Completa ImportoHB money, -- Mezza Pensione ImportoBB money -- B&B ) -- Prendo il numero di camere Disponibili -- per quel tipo di camera dell'hotel richiesto SELECT @Disponibili = SUM(Camere.Numero) FROM Camere WHERE Camere.ID_Tipo = @ID_Tipo AND Camere.ID_Hotel = @ID_Hotel -- Controllo se esistono delle disponibilità per quella camera IF (@Disponibili IS NULL) OR (@Disponibili <= 0) BEGIN GOTO FINE END -- Ciclo per ogni giorno del periodo richiesto SET @day = @data_da WHILE @day <= @data_a BEGIN -- Prendo il numero di camere Occupate -- in quel giorno -- per il tipo richiesto -- nell'hotel richiesto SELECT @Occupate = COUNT(Camere.ID_Camera) FROM Prenotazioni INNER JOIN Camere ON Prenotazioni.ID_Camera = Camere.ID_Camera WHERE @day BETWEEN Prenotazioni.Da_Data AND Prenotazioni.A_Data AND Camere.ID_Tipo = @ID_Tipo AND Camere.ID_Hotel = @ID_Hotel GROUP BY Camere.ID_Camera -- Controllo il numero di camere Occupate con il numero di camere Disponibili -- PRINT '@Occupate: ' + CAST(@Occupate as varchar(20)) -- PRINT '@Disponibili: ' + CAST(@Disponibili as varchar(20)) -- PRINT '@Numero: ' + CAST(@Numero as varchar(20)) -- PRINT @Occupate + @Numero > @Disponibili IF @Occupate + @Numero > @Disponibili -- Tutte le camere sono state occupate BEGIN -- Svuoto la tabella temporanea e esco DELETE #tmp BREAK END ELSE -- C'è posto... BEGIN -- Prendo il prezzo migliore per quella camere per quel giorno SELECT Top 1 @ImportoFB = Min(ImportoFB) * @Numero, @ImportoHB = Min(ImportoHB) * @Numero, @ImportoBB = Min(ImportoBB) * @Numero FROM PREZZI WHERE @day between Da_Data and A_Data AND ID_Tipo = @ID_Tipo AND ID_Hotel = @ID_Hotel -- Controllo che abbia trovato un prezzo per quel periodo IF (@ImportoFB IS NULL) AND (@ImportoHB IS NULL) AND (@ImportoBB IS NULL) BEGIN -- Non ha trovato nessun prezzo -- per cui svuoto tutto e esco DELETE #tmp BREAK END ELSE BEGIN -- Inserisco il prezzo nella tabella temporanea INSERT INTO #tmp VALUES(@conta, @day, @ImportoFB, @ImportoHB, @ImportoBB) END END -- Incremento il contatore di righe SET @conta = @conta + 1 -- Incremento il contatore dei giorni SET @day = dateadd(day, 1, @day) END FINE: RETURN Select * From #tmp END GO
A questo punto mi aspetterei che la store procedure mi ritorni una tabella... invece no??!?codice:Set Conn = server.CreateObject("ADODB.Connection") conn.connectionstring = connectionstring conn.open Set cmd = Server.CreateObject("ADODB.Command") Set cmd.ActiveConnection = conn cmd.CommandText = "GetBestPrice" cmd.CommandType = adCmdStoredProc cmd.Parameters.Append cmd.CreateParameter("@data_da", adDate, adParamInput) cmd.Parameters.Append cmd.CreateParameter("@data_a", adDate, adParamInput) cmd.Parameters.Append cmd.CreateParameter("@ID_Tipo", adInteger, adParamInput) cmd.Parameters.Append cmd.CreateParameter("@ID_Hotel", adInteger, adParamInput) cmd.Parameters.Append cmd.CreateParameter("@Numero", adDouble, adParamInput) cmd.Parameters("@data_da") = "22/11/2005" cmd.Parameters("@data_a") = dateadd("d", 3, now()) cmd.Parameters("@ID_Tipo") = 1 cmd.Parameters("@ID_Hotel") = 1045 cmd.Parameters("@Numero") = 1 Set rs = cmd.Execute
Perchèèèèèèèèèèèè????
se la provo sul query analizer funziona perfettamente e la tabella che ritorna è giusta!!!
Perchè se richiamata dalla pagina asp non ritorna niente????
UFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Rispondi quotando
