la variabile miaData contiene gg/mm/aaaa di tipo DateTime
(DB SQL Server)
con una stringa del tipo
"select XX from DB where Campo <=" + miaData
non vengono recuperati i campi correttamente
ho provato a fare
"select XX from DB where Campo <= '" + miaData + " ' "
ma non funziona
invertendo invece l'ordine, impostando quindi la data come mm/gg/aaaa
"select XX from DB where Campo <= '" + miaData + " ' "
funziona correttamente.... o quasi.... dato che non vengono recuperati i
campi della data odierna ma solo quelli fino alla miaData - 1
In sintesi: devo ottenere una stringa SQL (solo quella e non un Command)
come posso:
1) effettuare la select sul campo data corretto (<= miaData in formato
gg/mm/aaaa)
2) recuperare anche i records della miaData (e non solo fino a miaData - 1)
Grazie per l'aiuto
Non fare mai query dirette costruendo interamente la select, ma usa i
parameter. Per esempio:
SqlCommand sqlComm= new sqlCommand("select XX from DB where Campo
<=@data",conn);
sqlComm.commandtype = commandtype.storedprocedure;
SqlParameter par = new SqlParameter("@data",SqlDbType.DateTime)
par.Value=DateTime.Parse(miadata);
sqlComm.parameters.add(par);
...
Ciao
--
AZ [Microsoft - .NET MVP]
Mia Home page: http://ciclismo.sitiasp.it
Asp.Net community: http://www.aspitalia.com
Il mio blog: http://blogs.aspitalia.com/az
Ma fatto questo, come posso ottenere la mia stringa SQL da passare al
metodo??
Thanks
io non ho ancora la connessione al DB, sto lavorando su ua classe esterna
nella quale devo generare SOLO la query sulla base di alcuni parametri....
successivamente "darò in pasto" la stringa al un altro metodo.
Grazie
> io non ho ancora la connessione al DB, sto lavorando su ua classe esterna
> nella quale devo generare SOLO la query sulla base di alcuni parametri....
> successivamente "darò in pasto" la stringa al un altro metodo.
Non ti serve la connessione al DB: puoi ritornare la stringa Command SQL
"select XX from DB where Campo <= @MiaData" ed un elenco di parametri da
applicare a al Command.
Per il problema di MiaData - 1 credi ci sia un problema con gli orari: in
SQL Server le colonne sono DateTime e non esistino collonne di tipo Date
(only).
HTH,
David
quindi come sarebbe il command senza connessione???
SQLCommand cmd = new SQLCOmmand();
string qry = "...";
cmd.CommandText = qry;
cmd.Parameter.....
ed ora????
non devo fare Execute? non devo passare la connessione al command... come
ottengo la mia stringa??
Per quanto riguarda la data -1 non ho capito come risolvere il problema
Tanto per cominciare le date a SQL Server si passano in formato ansi
"yyyymmdd hh:mm:ss.fff" altrimenti avrai sempre problemi in base alla lingua
utilizzata dall'utente...
A questo punto dimenticati quello che ti ho detto e ripeti con me: "Si
devono utilizzare i parametri!". Se usi i parametri, oltre a tante altre
beghe, risolvi anche il problema delle date.
> Per quanto riguarda la data -1 non ho capito come risolvere il problema
Nel tuo caso stai facendo una query di questo tipo:
select XX from DB where Campo <= @miaData
adesso se Campo (che č di tipo DateTime) vale 20060529 14:00:00.000 (c'č
l'ora!) e tu passi a @miaData 20060529 (senza ora) SQL Server assume
20060529 00:00:00.000 (con ora zero!) che č semplicemente piů piccolo del
Campo sul database.
E' per questo che non vedi i record del giorno @miaData. Hai provato ad
eseguire la tua query in Query Analizer?
Solo che non ho ancora capito come utilizzare i parametri nel mio caso :-(((
io ho questa stringa
"select XX from DB where Campo <= @miaData"
a questo punto come aggiungo il parametro (ti ho postato un esempio nel mio
post precedente)
> semplicemente al metodo devi passare la
> stringa del comando SQL con @miaData ed una lista, array, quel che vuoi di
> parametri da applicare poi al SqlCommand.
Il metodo si aspetta una stringa SQL completa ( select XX from DB where
Campo <= 29/05/2006 ), io invece devo "costruire" la stringa nel formato
corretto... potresti spiegarmi come fare??
Grazie ancora!
> Grazie per la risposta dettagliata, quindi per evitare di passare la data
> nel formato yyyymmdd basta utilizzare i parametri? Perfetto!!
>
> Solo che non ho ancora capito come utilizzare i parametri nel mio caso :-(((
Guarda questo esempio:
Dim cmd As New SqlCommand()
cmd.CommandType = CommandType.Text
cmd.Connection = conn
cmd.CommandText = "SELECT MyField FROM MyTable WHERE AnotherField<=
@MyDate"
Dim DataScelta As New SqlParameter("@MyDate", SqlDbType.DateTime)
DataScelta.Value = MyDateValue
cmd.Parameters.Add(DataScelta)
MyDateValue č il tuo valore di data che viene cosě passato ad ogni
esecuzione del codice.
Spero ti sia utile.
Ciao!
--
VeroToad(2006) from Milan
My blog: http://blogs.dotnethell.it/VeroToad
Devi modificare il metodo... e deve aspettarsi una stringa SQL ed un elenco
di parametri.
> Guarda questo esempio:
[cut]
Magari non guardarlo :-)
... non avevo visto che avevi un metodo già pronto.