是否可以对数据库字段进行子字符串化?
Is it possible to substring database fields?
在 vb.net 中,无论我尝试使用什么代码,我的 ultragrid DateTime2
列的格式都不会只显示日期。
所以,我想知道,是否可以使用代码从 datetime2
字段(称为 dateStart)获取数据,然后对其进行子字符串化,将其拆分为 space日期和时间,然后只在 ultragrid 列中显示字符串的日期部分?
用于填充网格的代码(我将在日期问题解决后对其进行参数化)
Public Sub loadIncidents()
sql = "1=1"
If ugClients.Selected.Rows.Count = 1 Then
sql &= " AND clientName = '" & ugClients.Selected.Rows(0).Cells("Account_Code").Text & "'"
End If
sql = "SELECT supportID, clientName, dateStart, incidentProblem, incidentSolved FROM dbo.tblIncidents WHERE " & sql & " ORDER BY [supportID] ASC;"
Dim cm As New OleDbCommand(sql, _con)
Dim da As New OleDbDataAdapter(cm)
Dim dt As New DataTable
da.Fill(dt)
ugHistory.DataSource = dt
End Sub
InitializeLayout
的代码
Private Sub ugHistory_InitializeLayout(sender As Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) Handles ugHistory.InitializeLayout
ugHistory.DisplayLayout.Bands(0).Columns("supportID").Header.Caption = "ID"
ugHistory.DisplayLayout.Bands(0).Columns("clientName").Header.Caption = "Account Code"
ugHistory.DisplayLayout.Bands(0).Columns("dateStart").Header.Caption = "Date"
ugHistory.DisplayLayout.Bands(0).Columns("incidentProblem").Header.Caption = "Problem"
ugHistory.DisplayLayout.Bands(0).Columns("incidentSolved").Header.Caption = "Solved?"
With e.Layout.Override
.CellClickAction = CellClickAction.RowSelect
.AllowAddNew = AllowAddNew.No
.AllowDelete = DefaultableBoolean.False
.AllowUpdate = DefaultableBoolean.False
.AllowColSizing = AllowColSizing.None
.RowSelectors = DefaultableBoolean.False
End With
End Sub
我希望这是有道理的!任何有关如何执行此操作的建议将不胜感激
可能是强制转换或格式
Declare @dateStart DateTime = GetDate()
Select cast(@dateStart as Date) -- Returns date of 2016-07-26
Select Format(@dateStart,'MM/dd/yyyy') -- Returns string of 07/26/2016
This answer 是最好的解决方案。使用 SQL 服务器复制列及其内容,删除原始内容,瞧。
请记住,您需要将该列拖回到原来的位置,否则保存记录会出现问题,数据列错误、数据类型不匹配等
您可以使用 UltraGridColumn 的 Format 属性。无需操作您的数据,网格足够智能,可以为您完成此操作。添加 InitializeLayout 例如:
ugHistory.DisplayLayout.Bands(0).Columns("dateStart").Format = "dd/M/yyyy"
在 vb.net 中,无论我尝试使用什么代码,我的 ultragrid DateTime2
列的格式都不会只显示日期。
所以,我想知道,是否可以使用代码从 datetime2
字段(称为 dateStart)获取数据,然后对其进行子字符串化,将其拆分为 space日期和时间,然后只在 ultragrid 列中显示字符串的日期部分?
用于填充网格的代码(我将在日期问题解决后对其进行参数化)
Public Sub loadIncidents()
sql = "1=1"
If ugClients.Selected.Rows.Count = 1 Then
sql &= " AND clientName = '" & ugClients.Selected.Rows(0).Cells("Account_Code").Text & "'"
End If
sql = "SELECT supportID, clientName, dateStart, incidentProblem, incidentSolved FROM dbo.tblIncidents WHERE " & sql & " ORDER BY [supportID] ASC;"
Dim cm As New OleDbCommand(sql, _con)
Dim da As New OleDbDataAdapter(cm)
Dim dt As New DataTable
da.Fill(dt)
ugHistory.DataSource = dt
End Sub
InitializeLayout
Private Sub ugHistory_InitializeLayout(sender As Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) Handles ugHistory.InitializeLayout
ugHistory.DisplayLayout.Bands(0).Columns("supportID").Header.Caption = "ID"
ugHistory.DisplayLayout.Bands(0).Columns("clientName").Header.Caption = "Account Code"
ugHistory.DisplayLayout.Bands(0).Columns("dateStart").Header.Caption = "Date"
ugHistory.DisplayLayout.Bands(0).Columns("incidentProblem").Header.Caption = "Problem"
ugHistory.DisplayLayout.Bands(0).Columns("incidentSolved").Header.Caption = "Solved?"
With e.Layout.Override
.CellClickAction = CellClickAction.RowSelect
.AllowAddNew = AllowAddNew.No
.AllowDelete = DefaultableBoolean.False
.AllowUpdate = DefaultableBoolean.False
.AllowColSizing = AllowColSizing.None
.RowSelectors = DefaultableBoolean.False
End With
End Sub
我希望这是有道理的!任何有关如何执行此操作的建议将不胜感激
可能是强制转换或格式
Declare @dateStart DateTime = GetDate()
Select cast(@dateStart as Date) -- Returns date of 2016-07-26
Select Format(@dateStart,'MM/dd/yyyy') -- Returns string of 07/26/2016
This answer 是最好的解决方案。使用 SQL 服务器复制列及其内容,删除原始内容,瞧。
请记住,您需要将该列拖回到原来的位置,否则保存记录会出现问题,数据列错误、数据类型不匹配等
您可以使用 UltraGridColumn 的 Format 属性。无需操作您的数据,网格足够智能,可以为您完成此操作。添加 InitializeLayout 例如:
ugHistory.DisplayLayout.Bands(0).Columns("dateStart").Format = "dd/M/yyyy"