当我运行SQL查询时,没有警报

时间:2017-02-14 16:08:27

标签: ms-access-2016

此代码将记录插入基本表而不发出警报。

CurrentDb.Execute _ 
"INSERT INTO basetable(clName,clId,clGender) VALUES('test','123','');"

我希望此代码应该弹出警报,因为clGender字段设置为“required”,但没有警报。你能告诉我我哪里错了。

2 个答案:

答案 0 :(得分:0)

您可以使用:

DoCmd.RunSQL " Insert ... "

虽然这可能太多了。

答案 1 :(得分:0)

您没有收到提醒的原因是您为clGender提供了一个值。在表格设计视图中,有两个相关属性:RequiredAllow zero length。您的clGender字段将这两个设置为true。 Required设置意味着您无法使用此字段将记录保存为Null,但在插入语句中未指定Null,您已指定一个空字符串, Allow zero length设置允许。

[编辑]

抱歉,刚刚意识到发生了什么。 Execute方法不会直接向您提供任何反馈。但是,您可以使用RecordsAffected属性来查看它是否符合您的预期。

Dim db As DAO.Database
Set db = CurrentDb()
db.Execute "INSERT INTO basetable(clName,clId,clGender) VALUES('test','123','')"
If db.RecordsAffected = 0 Then
    MsgBox "Insert failed"
End If
Set db = Nothing