如何将datetime值更改为year,从数据库表中检索并在combobox.display成员上显示?

时间:2014-07-24 01:21:32

标签: oledb vb.net-2010

我从()表中得到了一个日期时间值列表,如下所示:
31/12/14 4:45:30 PM
                                           2014年12月31日下午4:45:30
2014年12月31日下午4:45:30
2014年12月31日下午4:45:30
2014年12月31日下午4:45:30

我希望它们只显示例如:。,在combobox.display成员中
2014
2015年
2016
2017年

我知道我写的如下可能有数据类型错误,但任何人都可以纠正我或指导我吗?

Public Sub combothing()
    Dim connection As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & aaa & "';Persist Security Info=False;")
    Dim selectme As String = "SELECT * FROM yeartbl"
    Dim cmd As New OleDbCommand(selectme, connection)
    Dim da As New OleDbDataAdapter
    Dim ds As New DataSet
    Dim dt As New DataTable
    Try
        If connection.State = ConnectionState.Closed Then
            connection.Open()
        End If
        da.SelectCommand = cmd
        da.Fill(ds)
        da.Fill(ds, "yeartbl")
        dt = ds.Tables("yeartbl")
        connection.Close()
        Me.ComboBox1.DataSource = ds.Tables(0)
        Me.ComboBox1.ValueMember = "YID"
        **Convert.ToDateTime(Me.ComboBox1.DisplayMember = "Years").Date.Year.ToString()**
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

1 个答案:

答案 0 :(得分:0)

您可以做的事情之一(假设我们使用Excel)是,当您已经填写DataSet时,再添加一列

ds.Tables(0).Columns.Add("year", System.Type.GetType("System.Integer"))

For each (r as row in ds.Tables(0).Rows)
    r("year") = DirectCast(r("YTD"), DateTime).Year 'assuming it is not null column
Next

现在,将Value Member设置为

Me.ComboBox1.ValueMember = "Year"

另外,需要更多的研究,你可以做到这一点:

 "SELECT *, FunctionTOConvertToDate(YTD) as year FROM yeartbl"