【问题标题】:Datepart function in SQL query not working with OLEDB connection in VB.NETSQL 查询中的 Datepart 函数不适用于 VB.NET 中的 OLEDB 连接
【发布时间】:2014-06-29 04:06:11
【问题描述】:

我正在尝试从 Access 数据库中的日期列中分别获取日期、月份和年份。

我正在使用以下代码。

我不知道这是什么问题,但要么显示错误,要么没有返回数据。

我是 OLEDB 的新手,所以我不知道这是否可能。

请帮忙。

如果这种方式不正确,请告诉我替代方案。

    conn_string = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\MHV\Documents\Visual Studio 2012\Projects\UTS\UTS.mdb"

    conn = New OleDbConnection(conn_string)
    conn.Open()

    Grid_string = "SELECT datepart(mm,T_Date) from Transactions"

    Grid_cmd = New OleDbCommand(Grid_string, conn)
    RW_AD = New OleDbDataAdapter(Grid_cmd)
    Grid_DS = New DataSet

    Grid_cmd.Connection = conn
    Grid_cmd.CommandText = Grid_string

    RW_AD.Fill(Grid_DS, "Transactions")

    Grid_cmd.ExecuteNonQuery() 

    DataGridView1.DataSource = Grid_DS.Tables("Transactions").DefaultView

附: : 连接和其他工作正常。 它只在我使用 datepart() 时显示错误。

【问题讨论】:

  • 我不断遇到的错误是。-> 没有为一个或多个必需参数提供值。

标签: sql oledb datepart


【解决方案1】:

能否请您尝试在报价中设置日期部分间隔?

Grid_string = "SELECT datepart(\"mm\",T_Date) from Transactions"

【讨论】:

    【解决方案2】:

    使用' 而不是" 将解决问题:

    Grid_string = "SELECT datepart('mm',T_Date) from Transactions"

    【讨论】:

      【解决方案3】:

      尝试使用m 而不是mm

      Grid_string = "SELECT datepart('m',T_Date) from Transactions"
      

      【讨论】:

        【解决方案4】:

        返回的数据类型是 Int16。 转换为 Int16 否则会出错

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-18
          • 2022-01-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多