【问题标题】:Incorrect syntax near the keyword 'and' [closed]关键字“和”附近的语法不正确[关闭]
【发布时间】:2012-12-30 15:37:45
【问题描述】:

我在 Visual Studio 2008 上使用 VB.NET

错误:关键字“and”附近的语法不正确。

代码。

    sb.Remove(0, sb.Length())
    sb.Append("SELECT tf.*")
    sb.Append(" FROM filesTA tf")
    sb.Append(" WHERE tf.ChkDate = '" & dateTimePicker.Value.ToString("yyyy-MM-dd") & "'")
    Dim SqlLR As String = sb.ToString()
    da.SelectCommand.CommandText = SqlLR
    da.Fill(ds, "filesTA9")

    If ds.Tables("filesTA9").Rows.Count = 0 Then
        sb.Remove(0, sb.Length())
        sb.Append("INSERT INTO filesTA (EmpNo,ChkDate,LastUpdate) ")
        sb.Append("SELECT tft.EmpNo,tft.ChkDate,tft.LastUpdate ")
        sb.Append("FROM TA_FillTime tft ")
        sb.Append("WHERE Convert(nvarchar(10),tft.ChkDate,126) Between DATEADD(Day , -1, '" & dateTimePicker.Value.ToString("yyyy-MM-dd") & "' and '" & dateTimePicker.Value.ToString("yyyy-MM-dd") & "'")
        sb.Append(" Order By tft.ChkDate ")

        Dim SqlLR2 As String = sb.ToString()
        da.SelectCommand.CommandText = SqlLR2
        da.Fill(ds, "filesTA9") => **Error this line: Incorrect syntax near the keyword 'and'.**
        'label1.Text = "Insert Done"
    ElseIf ds.Tables("filesTA9").Rows.Count > 0 Then
        'label1.Text = "Insert New Done"
    Else
        'label1.Text = "Insert Done..."
    End If

感谢您抽出宝贵时间。 :)

【问题讨论】:

  • 这是您的 SQL 中的错误。使用调试器读取实际命令。

标签: vb.net visual-studio-2008 date datetime datepicker


【解决方案1】:

你忘了一个括号:

  ..snip.. Between DATEADD(Day , -1, '" & dateTimePicker.Value.ToString("yyyy-MM-dd") & ")' and ...snip ...
  scroll over here--->                                                                   ^---here

这给您留下了未终止的DATEADD() 函数调用。发布代码以生成 sql 查询通常不如显示您生成的实际查询有用。 SQL 语法错误可能很难发现,而无需从周围大量无用的“绒毛”中提取查询。

【讨论】:

  • 非常感谢!我真的忘了括号=_=
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-08
  • 2013-12-24
  • 2016-01-16
  • 2013-12-16
  • 2017-11-22
相关资源
最近更新 更多