3 messaggi dal 04 ottobre 2007
Salve a tutti, questo è il mio primo post in questa community.
Il problema da cui sono afflitto è molto strano.
Ho una applicazione .NET 2.0 hostata su register.
Nel web.config ho impostato la culture su "it-IT" e nella pagina in questione ho inserito
If Not Page.IsPostBack Then
newCulture = New CultureInfo("it-IT", False)
Thread.CurrentThread.CurrentCulture = newCulture
Session.LCID = 1040
End If
La pagina in questione utilizza un AccessDataSource per eseguire una query su un database msAccess e utilizza come parametro una data che è scritta automaticamente e nel corretto formato italiano in una textbox sulla pagina.
Se la data è ad esempio 03/10/2007, viene interpretata (credo dall'accessdatasource) come se fosse 10/03/2007 (notazione inglese) mentre se è 13/10/2007 viene interpretata correttamente.
Qualcuno di voi ha già avuto esperienze simili e ha trovato una soluzione?
Ringrazio fin da ora chi mi fornirà un suggerimento/soluzione a questo problema alquanto strano.

Alex
Innanzitutto un paio di domande.
1) Se hai già settato le impostazioni relative all'interno del file di configurazione, perchè stai "forzando" tali impostazioni anche all'interno della pagina?
2) All'interno di quale gestore di evento hai scritto il codice che hai postato?
Te lo chiedo perchè, qualora tu lo avessi fatto all'interno di "Page_Load", sarebbe troppo tardi, poichè i controlli sono già stati popolati e, conseguentemente, ogni modifica che apporti a culture e cultureui va irrimediabilmente persa.

Se il problema non è quello che ti ho descritto, allora posta un pò più di codice.

Nicola Baldi
"Make things as simple as possible, but not simpler."
>>> My blog <<<
3 messaggi dal 04 ottobre 2007
naighes ha scritto:
Innanzitutto un paio di domande.
1) Se hai già settato le impostazioni relative all'interno del file di configurazione, perchè stai "forzando" tali impostazioni anche all'interno della pagina?

Perchè sono alla canna del gas e le sto provando un po' tutte.


2) All'interno di quale gestore di evento hai scritto il codice che hai postato?
Te lo chiedo perchè, qualora tu lo avessi fatto all'interno di "Page_Load", sarebbe troppo tardi, poichè i controlli sono già stati popolati e, conseguentemente, ogni modifica che apporti a culture e cultureui va irrimediabilmente persa.

Se il problema non è quello che ti ho descritto, allora posta un pò più di codice.



Il codice per la forzatura dell'"it-IT" lo scrivo proprio nel page_load.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If Session("Login_Log") <> -1 Then
Response.Redirect("Default.aspx")
End If
Dim newCulture As CultureInfo
If Not Page.IsPostBack Then
newCulture = New CultureInfo("it-IT", False)
Thread.CurrentThread.CurrentCulture = newCulture
Session.LCID = 1040
End If
If Page.IsPostBack = False Then
Dim datapath As String
datapath = Server.MapPath("app_data/databaseame.mdb")
Dim myConn As New OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & datapath)
myConn.Open()

Dim myCommand As New OleDbCommand("Delete From Risultati", myConn)
myCommand.CommandType = CommandType.Text
myCommand.ExecuteNonQuery()
myConn.Close()
Me.txtData.Text = DateTime.Now.ToShortDateString.ToString
End If

End Sub

Protected Sub Button1_Click1(ByVal sender As Object, ByVal e As System.EventArgs)

If Session("Area") <> "SUPERUSER" Then
Dim Stringa As String
'
Stringa = "SELECT Giacenze.Data, Giacenze.Cod_Prodotto, Giacenze.Descrizione, Giacenze.Giacenza, Giacenze.Impegnato, Giacenze.Ordinato, Giacenza+Ordinato-Impegnato AS Dinamico, Magazzini.Magazzino"
Stringa = Stringa + " FROM Giacenze INNER JOIN Magazzini ON Giacenze.Cod_Prodotto = Magazzini.Codice"
Stringa = Stringa + " WHERE (((Giacenze.[Data])=(SELECT MAX(Data) AS Expr1 FROM Giacenze Giacenze_1 WHERE (Data <= ?))) AND ((Giacenze.[Magazzino])='INF'))"
Stringa = Stringa + " GROUP BY Giacenze.Data, Giacenze.Cod_Prodotto, Giacenze.Descrizione, Giacenze.Giacenza, Giacenze.Impegnato, Giacenze.Ordinato, Magazzini.Magazzino"
Stringa = Stringa + " HAVING(((Magazzini.Magazzino) = '" + Session("Area") + "'))"
Stringa = Stringa + " ORDER BY Giacenze.Cod_Prodotto;"

Me.AccessDataSource1.SelectCommand = Stringa

End If

End Sub

Questo invece è il codice ASP dell'AccessDataSource

<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/DatabaseName.mdb"
SelectCommand="SELECT Data, Cod_Prodotto, Descrizione, Giacenza, Impegnato, Ordinato, Giacenza + Ordinato - Impegnato AS Dinamico FROM Giacenze WHERE (Data = (SELECT MAX(Data) AS Expr1 FROM Giacenze Giacenze_1 WHERE (Data <=?))) AND (Magazzino = 'INF') GROUP BY Data, Cod_Prodotto, Descrizione, Giacenza, Impegnato, Ordinato ORDER BY Cod_Prodotto">
<SelectParameters>
<asp:ControlParameter ControlID="txtData" Name="?" PropertyName="Text" />
</SelectParameters>
</asp:AccessDataSource>
3 messaggi dal 04 ottobre 2007
Nessuno ha dei suggerimenti in merito?

Grazie mille
Dunque, intanto proverei a lasciare solo il seguente codice, giusto per vedere come si comporta (rimuovi quindi anche il gestore di evento "Button1_Click1").

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
    If Not Page.IsPostBack Then 
        Me.txtData.Text = DateTime.Now.ToShortDateString()
    End If 
End Sub

<asp:AccessDataSource ID="AccessDataSource1" runat="server"
    DataFile="~/App_Data/DatabaseName.mdb"
    SelectCommand="SELECT Data, Cod_Prodotto, Descrizione, Giacenza, Impegnato, Ordinato, Giacenza + Ordinato - Impegnato AS Dinamico FROM Giacenze WHERE (Data = (SELECT MAX(Data) AS Expr1 FROM Giacenze Giacenze_1 WHERE (Data <= ?))) AND (Magazzino = 'INF') GROUP BY Data, Cod_Prodotto, Descrizione, Giacenza, Impegnato, Ordinato ORDER BY Cod_Prodotto">
    <SelectParameters>
        <asp:ControlParameter ControlID="txtData" PropertyName="Text" />
    </SelectParameters>
</asp:AccessDataSource>


E vediamo che succede (è da parecchio che non lavoro su un database MS Access, ma ho fatto un test quì in locale e non mi ha dato problemi).
Modificato da naighes il 05 ottobre 2007 14.30 -

Nicola Baldi
"Make things as simple as possible, but not simpler."
>>> My blog <<<

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.