将数据从一个表更新到另一个表,并插入新的ms访问.net

时间:2013-11-26 16:57:24

标签: asp.net sql ms-access

我有2个表'新闻'和'news_dev'每个都有一个已批准的勾选框

我正在尝试将数据从'news_dev'复制到新闻中,但前提是它们有一个勾号,如果它的新记录被勾选,则将新记录添加到'新闻'表中

我的第一种方法就是这个

Sub NewsBtn_Click(ByVal sender As Object, ByVal e As EventArgs)
    Dim AccessConn As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("databasehere") & "")
    AccessConn.Open()
    Dim AccessCommand As New System.Data.OleDb.OleDbCommand("DELETE * FROM news", AccessConn)
    AccessCommand.ExecuteNonQuery()
    Dim AccessCommand2 As New System.Data.OleDb.OleDbCommand("INSERT INTO news SELECT * FROM news_dev WHERE isapproved", AccessConn)
    AccessCommand2.ExecuteNonQuery()
    sucsessLabel.Visible = true
    sucsessLabel.Text = "News Updated"
    AccessConn.Close()
End Sub

现在这个工作但是如果你取消'news_dev'中的一个项目,它就会从'news'中删除它,这不是我想要的。

所以基本上我试图根据一个勾选来更新一个表,如果一个记录被勾在一个而不是在另一个表中,那么就添加它。

希望所有这些都是有道理的,因为我的头脑很油炸,但任何帮助都会非常受欢迎。

干杯安迪

1 个答案:

答案 0 :(得分:0)

在我看来,您的问题源于您运行的第一个查询。您正在删除新闻表中的所有记录,然后在第二个查询中,您只插入已批准的记录 如果您的主键字段不是自动编号,则可以跳过第一个查询并将此代码用于第二个查询。此示例插入已批准但在新表中不存在的记录。

"INSERT INTO news SELECT * FROM news_dev WHERE isapproved AND PRIMARY_KEY NOT IN 
(SELECT PRIMARY_KEY FROM news)"