【发布时间】:2023-03-07 15:30:02
【问题描述】:
我有 2 个表 'tbl_Images' 和 'tbl_ImagesDetails'。第一个表具有在第二个表中找不到的 ImageID。
我做了一个查询,首先找到不匹配的记录,然后将结果行添加到第二个表中。
如果我在 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
上面的查询应该返回 9 行,但 iResult = 0
我的问题:
确认对话框是否妨碍了您?如果是这样,我如何使用 vb 代码覆盖?
ExecuteNonQuery() 是否允许一次性插入多行?
如何插入作为另一个查询结果的行(即在同一个查询中)?
【问题讨论】:
-
我刚刚发现的东西:在 Access 中,我想知道“查看”(带有网格图标的那个)和“运行”(带有感叹号的那个)之间的区别。如果我单击查看它只显示 9 行的网格,如果我单击感叹号它会添加行。是否有使其“运行”的 vb 代码?
标签: vb.net ms-access-2010 executenonquery