将数据从一个表更新到另一个表并在新的 ms 访问 .net 时插入
Posted
技术标签:
【中文标题】将数据从一个表更新到另一个表并在新的 ms 访问 .net 时插入【英文标题】:Update data from one table to another and insert if new ms access .net 【发布时间】:2013-11-26 16:57:24 【问题描述】:我有 2 个表 'news' 和 'news_dev' 每个都有一个 isapproved 复选框
我正在尝试将“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”中的某个项目,它会将其从“新闻”中删除,这不是我想要的。
所以基本上我试图根据一个刻度从花药更新一个表,如果一个记录被打勾而不是另一个表,那么添加它。
希望这一切都是有意义的,因为我的脑袋被炸了,但任何帮助都将不胜感激。
干杯安迪
【问题讨论】:
【参考方案1】:在我看来,您的问题源于您运行的第一个查询。您正在从新闻表中删除所有记录,然后在第二个查询中,您只插入已批准的记录。 如果您有一个不是自动编号的主键字段,您可以跳过第一个查询并将此代码用于第二个查询。此示例插入新表中已批准且不存在的记录。
"INSERT INTO news SELECT * FROM news_dev WHERE isapproved AND PRIMARY_KEY NOT IN
(SELECT PRIMARY_KEY FROM news)"
【讨论】:
嘿伙计一直在玩这个代码,它不像我想象的那样工作。如果我向 news_dev 添加一条新记录并使用您的查询发布它,它工作正常,但是当我更新 news_dev 中的一条记录时,使用您的查询发布它不会更新新闻表任何想法伙伴? 对不起,我花了这么长时间才回复。这是因为该记录已经存在于表中。此代码仅检查未修改的新记录。我认为最好再问一个问题,因为它似乎已经转向了。以上是关于将数据从一个表更新到另一个表并在新的 ms 访问 .net 时插入的主要内容,如果未能解决你的问题,请参考以下文章