从 MS Access 中删除所有记录

Posted

技术标签:

【中文标题】从 MS Access 中删除所有记录【英文标题】:Delete all records from MS Access 【发布时间】:2014-03-08 06:27:51 【问题描述】:

我正在使用 ms 访问,其中 1 列名称为 TIME 作为日期/时间类型,格式为 dd/mm/yyy hh:nn:ss

例如

时间 2014 年 6 月 3 日 23:43:24

现在使用 vb.net 我已经从网上获取了这段代码来将数据插入到表 Table1 中

Dim TrDate As DateTime = DateTime.Now
Dim CurrentDate = Format(TrDate, "yyyy/MM/dd hh:mm:ss tt")


Private Sub Timer7_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer7.Tick

    dbconn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & FilePath)
    Try
        dbconn.Open()
        strSQL = "INSERT INTO Table1 ([TIME]) VALUES (?)"
        objcmd = New OleDbCommand(strSQL, dbconn)

        objcmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@TIME", CurrentDate))
        objcmd.ExecuteNonQuery()

        dbconn.Close()
    Catch myException As System.Exception
        Windows.Forms.MessageBox.Show(myException.Message)
    End Try
End Sub

// 这个查询很好用

  Private Sub Timer8_Tick_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer8.Tick
    dbconn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & FilePath)
    Try
        Dim TrDate1 As Date = Date.Now
        Dim CurrentDate1 = Format(TrDate1, "yyyy/MM/dd hh:mm:ss tt")
        dbconn.Open()
        strSQL = "DELETE FROM Table1 WHERE TIME < CurrentDate1"
        objcmd = New OleDbCommand(strSQL, dbconn)
        objcmd.ExecuteNonQuery()

        dbconn.Close()
    Catch myException As System.Exception
        Windows.Forms.MessageBox.Show(myException.Message)
    End Try
End Sub

// 删除查询不执行给出错误“No value given for on eor //more parameters”

我想删除今天前 1 天的所有记录。我希望每天只运行一次TIMER8

【问题讨论】:

【参考方案1】:

你在这行有错误

strSQL = "DELETE FROM Table1 WHERE TIME < CurrentDate1"

您必须将 CurrentDate1 变量本身连接到查询,如下所示:

strSQL = "DELETE FROM Table1 WHERE TIME < " & CurrentDate1

但推荐的构造 SQL 语句的方法是使用 参数化 SQL 语句,就像您在代码的第一个 sn-p 中所做的那样,而不是字符串连接。

strSQL = "DELETE FROM Table1 WHERE TIME < ?"
objcmd = New OleDbCommand(strSQL, dbconn)
objcmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@TIME", CurrentDate1))
objcmd.ExecuteNonQuery()

【讨论】:

您将需要哈希分隔符 (#)

以上是关于从 MS Access 中删除所有记录的主要内容,如果未能解决你的问题,请参考以下文章

MS Access:从子表单中删除记录时捕获值

在 MS Access (2007-2013) 中删除除一个之外的所有表

如何一次删除所有 ms-access 表中的数据?

所有从 php 中的 ms access 数据库中检索数据

从列表框中删除项目(MS Access VBA)

通过连接到 MS Access 的 Java Eclipse 无法使用删除查询删除记录