如何使用 vb.net 从查找不匹配记录的查询中插入行到 MS Access

How to insert rows in MS Access from query that finds unmatched records using vb.net

我有 2 tables 'tbl_Images' 和 'tbl_ImagesDetails'。第一个 table 具有在第二个 table 中找不到的 ImageID。

我做了一个查询,首先找到不匹配的记录,然后将结果行添加到第二个 table。

如果我 运行 在 Access 2010 中查询,它会要求确认,然后添加行。

但是,如果我从 VB.net 运行 它不会添加任何行并且没有错误消息。这是代码:

Dim strsql As String = "INSERT INTO tbl_ImagesDetails ( ImageID )
SELECT tbl_Images.ImageID
FROM tbl_Images LEFT JOIN tbl_ImagesDetails ON tbl_Images.[ImageID] = tbl_ImagesDetails.[ImageID]
WHERE (((tbl_Images.ImageID) Like 'ZOOMED*') 
AND ((tbl_ImagesDetails.ImageID) Is Null));"        
'Debug.Print(strsql)

Dim MyConn As New OleDbConnection(connString)
Dim cmd As New OleDbCommand(strsql, MyConn)
cmd.CommandType = CommandType.Text

If Not MyConn.State = ConnectionState.Open Then MyConn.Open()

Dim iResult As Integer = cmd.ExecuteNonQuery()
Return iResult

上面的查询应该 return 9 行,但是 iResult = 0

我的问题:

  1. 确认对话框有问题吗?如果是这样,我如何使用 vb 代码覆盖?

  2. ExecuteNonQuery() 是否允许一次插入多行?

  3. 如何插入作为另一个查询结果的行(即在同一个查询中)?

1)确认对话框是否碍事?如果是这样,我如何使用 vb 代码覆盖?

回答:如果您通过代码执行命令,则没有确认框,即 vb.net

2) ExecuteNonQuery() 是否允许一次插入多行?

回答:是

3) 如何插入作为另一个查询结果的行(即在同一个查询中)?

我认为您需要检查 vb.net 中查询获取的 results/records,可能没有获得任何记录。最好编写一个函数来检查获取的记录。其他好像还行。

希望对您有所帮助!