2012-03-20 55 views
0

我使用時間跨度函數計算出天數,然後將此值添加到文本框並保存到數據庫。asp.net timespan

我最近添加了一個半天的單選按鈕,所以如果選中它,它將增加0.5天的假期而不是1天。這似乎在保存前顯示在文本框中時正常工作。但是,實際保存並更新數據庫時,顯示值爲1而不是0.5,如文本框中所示。

該字段在數據庫中的字段類型最初設置爲'int',但當我添加了半天它不會保存,因爲它試圖保存一個小數,我已經將此字段類型更改爲'decimal'因爲它認爲這會更合適..我不確定這是否正確或應該是不同的東西?

我似乎無法弄清楚爲什麼它不保存在文本框中指定的值...任何建議

Private Sub btnHNoDays_Click(sender As Object, e As System.EventArgs) Handles btnHNoDays.Click 

    'declare dates 
    Dim dtStart As Date = txtHStart_Date.Text 
    Dim dtEnd As Date = txtHEnd_Date.Text 

    'timespan function used to minus one date to another and produce a value 
    Dim ts As TimeSpan = (dtEnd - dtStart) 

    If RadioButton1.Checked Then 

     ts = (dtEnd - dtStart) - TimeSpan.FromDays(0.5) 
    Else 
     ts = (dtEnd - dtStart) 
    End If 

    ' the value is set to to textbox. 
    txtNoofDays.Text = ts.TotalDays() 

    ' the today days value 
    Console.WriteLine(ts.TotalDays) 
End Sub 



Protected Sub btnHRequestSave_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnHRequestSave.Click 
    'collect data 
    Dim Sdate = txtHStart_Date.Text 
    Dim Edate = txtHEnd_Date.Text 
    Dim NoofDays = txtNoofDays.Text 
    Dim notes = TxtHRequestNotes.Text 
    Dim username = lblHolidayRequestLIU.Text 

    'define connection 

    Dim HRequestConnection As New SqlConnection 
    HRequestConnection.ConnectionString = HolidayRequestSqlDataSource.ConnectionString 

    'create command 
    Dim HRequestInsert As New SqlCommand("Insert into HolidayRequests (username, RequestDateStart, RequestDateEnd, RequestTotalDays, RequestNotes) VALUES (@username, @Sdate, @Edate, @NoofDays, @notes)", HRequestConnection) 

    'define parameters 
    HRequestInsert.Parameters.Add("username", SqlDbType.NVarChar, 20).Value = lblHolidayRequestLIU.Text 
    HRequestInsert.Parameters.Add("Sdate", SqlDbType.Date).Value = txtHStart_Date.Text 
    HRequestInsert.Parameters.Add("Edate", SqlDbType.Date).Value = txtHEnd_Date.Text 
    HRequestInsert.Parameters.Add("NoofDays", SqlDbType.Decimal).Value = txtNoofDays.Text 
    HRequestInsert.Parameters.Add("notes", SqlDbType.NVarChar).Value = TxtHRequestNotes.Text 

    ' execute commands 
    HRequestConnection.Open() 
    HRequestInsert.ExecuteNonQuery() 

    lblHolRequestResponse.Text = "Your holidays request has been saved! 
End Sub 

回答

0

你是如何規定的在數據庫中的decimal列?你給它的精度和規模(see here)?如果不是,則默認爲decimal(18,0),小數點後不會顯示數字。

根據您的要求,您應該沿着decimal(5,1)的方向給它一個類型。

記住,精度是總位數的數字(小數點的左右和規模是小數點的數量。因此decimal(5,1)可以存儲高達9999.9。

(我假設你正在使用SQL Server)

+0

Thanks..this工作:)不過現在這只是例如2 2.0的值..可這不只是顯示爲一個單一的數字和只有需要小數點顯示的值或者是全部還是全部的情況? – user1055487 2012-03-20 22:50:00

+0

它將作爲2.0存儲在SQL中。只要您將原始值寫入數據庫,就可以用任何您喜歡的方式將其呈現給TextBox中的用戶。 – 2012-03-20 22:57:22