PDA

Visualizza la versione completa : Problema con data 2009


christian08
06-07-2009, 16:25
Ciao a tutti ho questo ho problemi con Dot.Net e una query che lavora in maniera anomala



<% @Import Namespace="System.Data" %>
<% @Import Namespace="System.Data.OleDb" %>

<%
Dim myConnection as OleDbConnection
myConnection = new OleDbConnection("provider=sqloledb;data source=(local);initial catalog=xxxxx;user id=xxxxx;password=xxxxx")
Dim mySqlDataAdapter1 as OleDbDataAdapter

mySqlDataAdapter1 = new OleDbDataAdapter("SELECT id,titolo,sottotitolo,descrizione,last_minute,data inizio,datafine,prezzo,prezzoscontato,'http://www.vacanze.it/images/ImmaginiProposte/' + immagine AS nomefileimmagine, '/dettaglio_proposte.asp?Id_Proposta=' + convert(nvarchar(20),id) As crealink FROM Proposte WHERE DataFine>=CONVERT(DateTime,'" & System.DateTime.Now.toString("yyyy/MM/dd") & "',111) ORDER BY Id Desc", myConnection)

Dim myDataSet as DataSet
myDataSet = new DataSet()
mySqlDataAdapter1.Fill(myDataSet,"Proposte")
mySqlDataAdapter1.Dispose()
myConnection.Close()
myConnection.Dispose()
myDataSet.WriteXml(server.mappath("/filecomuni/daticomuni.xml"))
myDataSet.Dispose()
%>


La query che eseguo mi restituisce 0 record con Asp.net
se la eseguo direttamente su sql server 2005 mi restituisce 78 record

Se invece forzo la data al 2008 funziona tutto correttamente sembra ci sii qualcosa che non gli piace con il 2009

Spero che qualcuno mi sappia aiutare

christian08
10-07-2009, 13:23
nessuno sa aiutarmi per favore

rotteninside
10-07-2009, 14:35
dovresti provare ad utilizzare l'oggetto OleDbCommand.
In questo modo puoi passare le date come parametri e non dovresti riscontrare problemi.

dai uno sguardo a questo esempio:

http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.parameters.aspx

christian08
13-07-2009, 12:42
Grazie mille allora proverò con il tuo consiglio

motogpdesmo16
13-07-2009, 14:45
Il problema, a mio avviso, non risiede tanto nel tipo di oggetto che utilizza quanto nel contenuto della query in se.
MI spiego meglio.
Anzichè scrivere


mySqlDataAdapter1 = new OleDbDataAdapter("SELECT id,titolo,sottotitolo,descrizione,last_minute,data inizio,datafine,prezzo,prezzoscontato,'http://www.vacanze.it/images/ImmaginiProposte/' + immagine AS nomefileimmagine, '/dettaglio_proposte.asp?Id_Proposta=' + convert(nvarchar(20),id) As crealink FROM Proposte WHERE DataFine>=CONVERT(DateTime,'" & System.DateTime.Now.toString("yyyy/MM/dd") & "',111) ORDER BY Id Desc", myConnection)

spacchetta l'istruzione in questa maniera


dim cQuery as String = ""
cQuery = ("SELECT id,titolo,sottotitolo,descrizione,last_minute,data inizio,datafine,prezzo,prezzoscontato,'http://www.vacanze.it/images/ImmaginiProposte/' + immagine AS nomefileimmagine, '/dettaglio_proposte.asp?Id_Proposta=' + convert(nvarchar(20),id) As crealink FROM Proposte WHERE DataFine>=CONVERT(DateTime,'" & System.DateTime.Now.toString("yyyy/MM/dd") & "',111) ORDER BY Id Desc"
mySqlDataAdapter1 = new OleDbDataAdapter(cQuery, myConnection)

metti un breakpoint e vedi effettivamente che cosa è contenuto nella query. Temo che il problema possa essere in questa istruzione qui System.DateTime.Now.toString("yyyy/MM/dd") che magari è poco gradita a sqlserver.
Visto che stai lavorando molto lato server (in maniera corretta a mio avviso), potresti provare a scrivere
CONVERT(DateTime,getdate(),111)

Ti prenderà comunque in considerazione la data attuale.
Facci sapere!

Loading