Differenza fra query in sql server 2005 e asp

venerdì 16 febbraio 2007 - 23.49

escaflowne Profilo | Junior Member

Ciao a tutti,
sto impazzendo a capire il comportamento di una pagina asp e, spero, mi possiate aiutare.
Dunque ho fatto una procedura in sql server express 2005 (stupida, lo so, ma non sapevo che altre prove fare) così fatta

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

se la richiamo da una query qualsiasi tipo questa:

exec estraiCountTicketData '11/02/2007','11/02/2007'

mi restituisce 9 (risultato sperato).

Ora, io da una pagina asp faccio così:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

dove session("qualeValoreRicerca") vale 11/02/2007
(tanto per fare una prova con la stessa data)
ed il risultato è un errore!!!! Questo:

Microsoft OLE DB Provider for SQL Server (0x80040E14) Incorrect syntax near '/'. /divtlc/corpoTicket.asp, line 209

ma com'è possibile che in sql server funzioni e in asp mi dica che c'è un errore di sintassi???

Grazie mille

amelix Profilo | Expert

>Ciao a tutti,
>sto impazzendo a capire il comportamento di una pagina asp e,
>spero, mi possiate aiutare.
>Dunque ho fatto una procedura in sql server express 2005 (stupida,
>lo so, ma non sapevo che altre prove fare) così fatta
>
>CREATE PROCEDURE [dbo].[estraiCountTicketData]
> -- Add the parameters for the stored procedure here
> @p1 varchar(50),
> @p2 varchar(50)
>AS
>BEGIN
> -- SET NOCOUNT ON added to prevent extra result sets from
> -- interfering with SELECT statements.
> SET NOCOUNT ON;
>
>select count(*) as quantiT from tblTicket WHERE dataApertura
>between @p1 + ' 00:00:00' and @p2 + ' 23:00:00' --'11/02/2007
>00:00:00' and '11/02/2007 23:00:00'
>END
>
>se la richiamo da una query qualsiasi tipo questa:
>
>exec estraiCountTicketData '11/02/2007','11/02/2007'
>
>mi restituisce 9 (risultato sperato).
>
>Ora, io da una pagina asp faccio così:
>
>strSQL= "exec estraiCountTicketData '" & session("qualeValoreRicerca")
>&"','" & session("qualeValoreRicerca") &"'"
>
>dove session("qualeValoreRicerca") vale 11/02/2007
>(tanto per fare una prova con la stessa data)
>ed il risultato è un errore!!!! Questo:
>
>Microsoft OLE DB Provider for SQL Server (0x80040E14)
>Incorrect syntax near '/'.
>/divtlc/corpoTicket.asp, line 209
>
>ma com'è possibile che in sql server funzioni e in asp mi dica
>che c'è un errore di sintassi???
>
>Grazie mille
Prova a fare così:
strSQL = "estraiCountTicketData" Set cmd = New ADODB.Command cmd.Parameters.Append cmd.CreateParameter("@p1", adVarChar, adParamInput, 25) cmd.Parameters("@p1").Value = session("qualeValoreRicerca") cmd.Parameters.Append cmd.CreateParameter("@p2", adVarChar, adParamInput, 25) cmd.Parameters("@p2").Value = session("qualeValoreRicerca")



Andrea
http://www.MelisWeb.eu/

escaflowne Profilo | Junior Member

Ciao e grazie,
si, infatti poi ho risolto proprio così e funziona.
Il fatto è che, di solito, uso sempre questo metodo (anche per evitare sql injection), in questo caso ho messo mano ad una pagina sql di un mio amico. Però, a leggere il codice, c'è davvero da ammattire per capire perchè lo stesso sql lanciato da asp o da una query in sql server abbia comportamento diverso
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5