我有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'中删除它,这不是我想要的。
所以基本上我试图根据一个勾选来更新一个表,如果一个记录被勾在一个而不是在另一个表中,那么就添加它。
希望所有这些都是有道理的,因为我的头脑很油炸,但任何帮助都会非常受欢迎。
干杯安迪
答案 0 :(得分:0)
在我看来,您的问题源于您运行的第一个查询。您正在删除新闻表中的所有记录,然后在第二个查询中,您只插入已批准的记录 如果您的主键字段不是自动编号,则可以跳过第一个查询并将此代码用于第二个查询。此示例插入已批准但在新表中不存在的记录。
"INSERT INTO news SELECT * FROM news_dev WHERE isapproved AND PRIMARY_KEY NOT IN
(SELECT PRIMARY_KEY FROM news)"