【问题标题】:VB to Microsoft Access Database - WHERE Spend Date >='" & StartMonth & "'"VB 到 Microsoft Access 数据库 - WHERE Spend Date >='" & StartMonth & "'"
【发布时间】:2016-01-08 13:48:57
【问题描述】:

我在 Visual Studio 中使用 Microsoft Access 作为我的数据源,并希望在其中输入查询以返回值。

这是我的代码:

 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    MyConn = New OleDbConnection
    MyConn.ConnectionString = connString
    ds = New DataSet
    tables = ds.Tables
    da = New OleDbDataAdapter("Select * from [Spend]", MyConn)
    da.Fill(ds, "Spend")
    Dim view As New DataView(tables(0))
    source1.DataSource = view
    DataGridView1.DataSource = view

    MyConn.Open()
    StartMonth = System.DateTime.Now.ToString("01/MM/yyyy HH:mm:ss")
    query = "Select Amount from [Spend] WHERE Spend Date >='" & StartMonth & "'"
    cmd = New OleDbCommand(query, MyConn)
    TotalCost = CInt(cmd.ExecuteScalar())
    MyConn.Close()
 End Sub
End Class

我收到此错误:

查询表达式 'Spend Date >='01/01/2016 13:46:50'' 中的语法错误(缺少运算符)

谁能帮忙?

【问题讨论】:

  • @BinaryWorrier 我现在已经这样做了,但它仍然显示我指定日期之前的记录?

标签: vb.net ms-access vba


【解决方案1】:

对于 Access,您应该使用:

StartMonth = System.DateTime.Now.ToString("yyyy'/'MM'/'01 HH:mm:ss")
query = "Select Amount from [Spend] WHERE [Spend Date] >= #" & StartMonth & "#"

【讨论】:

  • 's 是干什么用的? "yyyy/MM/01 HH:mm:ss" 产生相同的结果。
  • 不,这取决于 - 美国之外还有一个世界。 / 本身不是 斜线,而是 日期分隔符。如果省略引号,它将在字符串中替换为您当地的日期分隔符 - 在某些国家/地区,这将是一个空格。要强制使用文字斜线,请将其括在引号中。
  • 好的 - 众所周知。我认为这也可以"yyyyMM01 HH:mm:ss"
  • 不,这将在 Access 中失败。 MySQL 可能会读到它,但那是另一回事了。
【解决方案2】:

我找到了问题的答案。

如果您有一个用空格分隔的列名,例如“Spend Date”

您必须将其括在 [Spend Date] 这样的括号中

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    尝试将日期输入# 而不是'

    Examples of using dates as criteria in Access queries

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多