我有2个表:Contacts
和Clients
。 Clients
中的每条记录都可以包含无限数量的相关联系人。因此,当我创建一个删除客户端的按钮时,它首先删除所有相关的联系人,然后删除客户端本身。
当然,这样按下按钮时,我必须完成大约4条警告信息。我想摆脱所有这些消息,并用一个消息替换它们。
这可能吗?谢谢。
答案 0 :(得分:1)
正如您所看到的,虽然RunSQL和OpenQuery从简单开始,但它们最终会导致您进行大量额外工作。 OpenQuery命令实际上是为了显示SELECT或CROSSTAB查询供用户浏览。对于Action查询,请使用Execute方法运行已保存的查询和SQL字符串:
Dim dbs As DAO.Database
Dim lngRowsAffected As Long
Dim lngRowsDeleted As Long
Set dbs = CurrentDb
' Execute runs both saved queries and SQL strings
dbs.Execute cstrQueryName, dbFailOnError
' Get the number of rows affected by the Action query. You can
' display this to the user, store it in a table, or trigger an
' action if an unexpected # (e.g. 0 rows when you expect >0)
lngRowsAffected = dbs.RecordsAffected
dbs.Execute "DELETE FROM tblMyTable WHERE Bad", dbFailOnError
lngRowsDeleted = dbs.RecordsAffected
您可以避免使用SetWarnings,因为Execute不会显示警告。另外一个好处是,您可以返回受最新操作查询影响的行数。您可以向用户显示此值,将其存储在表中,或者使用它来检查意外结果(例如,当您期望> 0时影响0行)。
<强> Source 强>