+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 3 su 3

Discussione: ASP.NET + SQL - meglio usare DateTime o Date + Time

  1. #1
    L'avatar di Jedi-78
    Jedi-78 non è in linea Novello
    Post
    32

    ASP.NET + SQL - meglio usare DateTime o Date + Time

    Ecco l'ennesima domanda.

    L'idea è questa:

    ho un database (o meglio, voglio ritrasportare un database) dei concerti.

    Concerti che hanno la data e l'ora, naturalmente.

    Vedendo quanto è carino il controller Calendar pensavo di usare quello per impostare la data, ma così facendo sono costretto ad utilizzare un secondo controllo (un TextBox, probabilmente) per inserire l'ora.

    La domanda è: ho modo di unire, nel momento del salvataggio, (e poi separarli quando devo modificarli) i due controlli in un campo 'datetime' o mi conviene usare un campo date ed un campo time per i due?

    Oh una domanda legata allo stesso... come leggo la data dell'ultima modifica? So che giocando sul filesystem ASP riusciva a leggere l'ultima modifica del file... sono sicuro si possa fare anche qui, ma come?

    Grazie
    No. Try not. Do. Or do NOT! There's no TRY! (Master Yoda)

  2. #2
    L'avatar di Jedi-78
    Jedi-78 non è in linea Novello
    Post
    32
    Ok, ho pensato di dividere la data in due parti...

    DataConcerto (formato Date) e OraConcerto (formato campo time(0) ).

    E' sbagliato?

    Se sì perché, altrimenti... cosa sbaglio qui?

    codice:
    <%@ Page Title="" Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="Concerti_Default" %>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPagine" Runat="Server">
        <asp:SqlDataSource ID="SqlConcerti" runat="server" 
        ConnectionString="<%$ ConnectionStrings:PTL_Concerti %>" 
        SelectCommand="SELECT * FROM [tbConcerti] ORDER BY [DataConcerto] DESC" 
            ConflictDetection="CompareAllValues" 
            DeleteCommand="DELETE FROM [tbConcerti] WHERE [ID] = @original_ID AND [DataConcerto] = @original_DataConcerto AND [OraConcerto] = @original_OraConcerto AND [Località] = @original_Località AND [Provincia] = @original_Provincia AND [Luogo] = @original_Luogo AND (([Note] = @original_Note) OR ([Note] IS NULL AND @original_Note IS NULL))" 
            InsertCommand="INSERT INTO [tbConcerti] ([DataConcerto], [OraConcerto], [Località], [Provincia], [Luogo], [Note]) VALUES (@DataConcerto, @OraConcerto, @Località, @Provincia, @Luogo, @Note)" 
            OldValuesParameterFormatString="original_{0}" 
            
            UpdateCommand="UPDATE [tbConcerti] SET [DataConcerto] = @DataConcerto, [OraConcerto] = @OraConcerto, [Località] = @Località, [Provincia] = @Provincia, [Luogo] = @Luogo, [Note] = @Note WHERE [ID] = @original_ID AND [DataConcerto] = @original_DataConcerto AND [OraConcerto] = @original_OraConcerto AND [Località] = @original_Località AND [Provincia] = @original_Provincia AND [Luogo] = @original_Luogo AND (([Note] = @original_Note) OR ([Note] IS NULL AND @original_Note IS NULL))">
            <DeleteParameters>
                <asp:Parameter Name="original_ID" Type="Int64" />
                <asp:Parameter Name="original_DataConcerto" Type="DateTime" />
                <asp:Parameter Name="original_OraConcerto" DbType="Time" />
                <asp:Parameter Name="original_Località" Type="String" />
                <asp:Parameter Name="original_Provincia" Type="String" />
                <asp:Parameter Name="original_Luogo" Type="String" />
                <asp:Parameter Name="original_Note" Type="String" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="DataConcerto" Type="DateTime" />
                <asp:Parameter Name="OraConcerto" DbType="Time" />
                <asp:Parameter Name="Località" Type="String" />
                <asp:Parameter Name="Provincia" Type="String" />
                <asp:Parameter Name="Luogo" Type="String" />
                <asp:Parameter Name="Note" Type="String" />
                <asp:Parameter Name="original_ID" Type="Int64" />
                <asp:Parameter Name="original_DataConcerto" Type="DateTime" />
                <asp:Parameter Name="original_OraConcerto" DbType="Time" />
                <asp:Parameter Name="original_Località" Type="String" />
                <asp:Parameter Name="original_Provincia" Type="String" />
                <asp:Parameter Name="original_Luogo" Type="String" />
                <asp:Parameter Name="original_Note" Type="String" />
            </UpdateParameters>
            <InsertParameters>
                <asp:Parameter Name="DataConcerto" Type="DateTime" />
                <asp:Parameter Name="OraConcerto" DbType="Time" />
                <asp:Parameter Name="Località" Type="String" />
                <asp:Parameter Name="Provincia" Type="String" />
                <asp:Parameter Name="Luogo" Type="String" />
                <asp:Parameter Name="Note" Type="String" />
            </InsertParameters>
        </asp:SqlDataSource>
        
        
         <asp:SqlDataSource ID="sqlTarghe" runat="server" 
            ConnectionString="<%$ ConnectionStrings:Provincie %>" 
            SelectCommand="SELECT * FROM [tbProvincia]">
        </asp:SqlDataSource>
    
        
        <asp:DetailsView ID="dvConcerti" runat="server" AllowPaging="True" OnPreRender="dvConcerti_PreRender"
            AutoGenerateRows="False" DataKeyNames="ID" DataSourceID="SqlConcerti" OnDataBound="dvConcerti_DataBound"
            Height="50px" Width="125px">
            <Fields>
                <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
                    ReadOnly="True" SortExpression="ID" Visible="False" />
                <asp:TemplateField HeaderText="DataConcerto" SortExpression="DataConcerto">
                    <EditItemTemplate>
                    <asp:Calendar ID="clndData" runat="server" SelectedDate='<%# Bind("DataConcerto") %>'></asp:Calendar>
                        <asp:TextBox ID="txtOra" runat="server" Text='<%# Bind("OraConcerto") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <InsertItemTemplate>
                    <asp:Calendar ID="clndData" runat="server" SelectedDate='<%# Bind("DataConcerto") %>'></asp:Calendar>
                        <asp:TextBox ID="txtOra" runat="server" Text='<%# Bind("OraConcerto") %>'></asp:TextBox>
                    </InsertItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lblData" runat="server" Text='<%# Bind("DataConcerto") %>'></asp:Label>
                        <asp:Label ID="lblOra" runat="server" Text='<%# Bind("OraConcerto") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="Località" HeaderText="Località" 
                    SortExpression="Località" />
                <asp:TemplateField HeaderText="Provincia" SortExpression="Provincia">
                    <EditItemTemplate>
    <asp:DropDownList SelectedValue='<%# Bind("Provincia") %>'  ID="ddProv" runat="server" DataSourceID="sqlTarghe"  DataTextField="Provincia" DataValueField="Targa">
                        </asp:DropDownList>
                        
                    </EditItemTemplate>
                    <InsertItemTemplate>
    <asp:DropDownList SelectedValue='<%# Bind("Provincia") %>'  ID="ddProv" runat="server" DataSourceID="sqlTarghe"  DataTextField="Provincia" DataValueField="Targa">
                        </asp:DropDownList>
                    </InsertItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="LblProvincia" runat="server" Text='<%# Bind("Provincia") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="Luogo" HeaderText="Luogo" SortExpression="Luogo" />
                <asp:BoundField DataField="Note" HeaderText="Note" SortExpression="Note" />
                <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" 
                    ShowInsertButton="True" />
            </Fields>
        </asp:DetailsView>
     
    </asp:Content>
    CodeBehind
    codice:
    Partial Class Concerti_Default
        Inherits System.Web.UI.Page
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        End Sub
        Protected Sub dvConcerti_PreRender(ByVal sender As Object, ByVal e As EventArgs)
            Dim ddlProv As DropDownList = dvConcerti.FindControl("ddProv")
            Dim clndDava As Calendar = dvConcerti.FindControl("clndData")
            Dim txtOra As TextBox = dvConcerti.FindControl("txtOra")
            If txtOra IsNot Nothing Then
                txtOra.Text = TimeValue("21:00:00")
            End If
            If clndDava IsNot Nothing Then
                clndDava.SelectedDate = Date.Now.ToString
            End If
            If Not ddlProv Is Nothing Then
                ddlProv.SelectedValue = "VA"
            End If
        End Sub
        Protected Sub dvConcerti_DataBound(ByVal sender As Object, ByVal e As EventArgs)
            dvConcerti.ChangeMode(DetailsViewMode.Insert)
        End Sub
    End Class
    per cui mi ritorni questo messaggio...

    codice:
    Errore server nell'applicazione '/WebSitetest2009'.
    --------------------------------------------------------------------------------
    Formato della stringa di input non corretto. 
    Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack. 
    Dettagli eccezione: System.FormatException: Formato della stringa di input non corretto.
    Errore nel codice sorgente: 
    Durante l'esecuzione della richiesta Web corrente è stata generata un'eccezione non gestita. Per informazioni sull'origine e la posizione dell'eccezione, vedere l'analisi dello stack dell'eccezione riportata di seguito.  
    Analisi dello stack: 
    
    [FormatException: Formato della stringa di input non corretto.]
       System.StringParser.Parse(String s) +7499464
       System.TimeSpan.Parse(String s) +54
       System.Web.UI.WebControls.Parameter.GetValue(Object value, String defaultValue, DbType dbType, Boolean convertEmptyStringToNull, Boolean ignoreNullableTypeChanges) +288
       System.Web.UI.WebControls.Parameter.GetValue(Object value, Boolean ignoreNullableTypeChanges) +120
       System.Web.UI.WebControls.SqlDataSourceView.AddParameters(DbCommand command, ParameterCollection reference, IDictionary parameters, IDictionary exclusionList, String oldValuesParameterFormatString) +524
       System.Web.UI.WebControls.SqlDataSourceView.ExecuteInsert(IDictionary values) +128
       System.Web.UI.DataSourceView.Insert(IDictionary values, DataSourceViewOperationCallback callback) +86
       System.Web.UI.WebControls.DetailsView.HandleInsert(String commandArg, Boolean causesValidation) +274
       System.Web.UI.WebControls.DetailsView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +676
       System.Web.UI.WebControls.DetailsView.OnBubbleEvent(Object source, EventArgs e) +95
       System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
       System.Web.UI.WebControls.DetailsViewRow.OnBubbleEvent(Object source, EventArgs e) +113
       System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
       System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +118
       System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +135
       System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +175
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
     
    
    --------------------------------------------------------------------------------
    Informazioni di versione: Versione di Microsoft .NET Framework:2.0.50727.3053; Versione di ASP.NET:2.0.50727.3053
    No. Try not. Do. Or do NOT! There's no TRY! (Master Yoda)

  3. #3
    L'avatar di Jedi-78
    Jedi-78 non è in linea Novello
    Post
    32
    Mettendo che il campo ora fosse un campo con valore NULL possibile ho testato e confermato che il problema è proprio nel in quel campo.

    Qualcuno mi può aiutare, per cortesia?
    No. Try not. Do. Or do NOT! There's no TRY! (Master Yoda)

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi