此代碼將記錄插入到沒有警報的基礎表中。當我運行sql查詢時,沒有警報
CurrentDb.Execute _
"INSERT INTO basetable(clName,clId,clGender) VALUES('test','123','');"
我預計這個代碼應該彈出警報,因爲clGender字段設置爲「必需」,但沒有警報。你能告訴我我錯在哪裏嗎?
此代碼將記錄插入到沒有警報的基礎表中。當我運行sql查詢時,沒有警報
CurrentDb.Execute _
"INSERT INTO basetable(clName,clId,clGender) VALUES('test','123','');"
我預計這個代碼應該彈出警報,因爲clGender字段設置爲「必需」,但沒有警報。你能告訴我我錯在哪裏嗎?
您可以使用:
DoCmd.RunSQL " Insert ... "
儘管這可能是太多了。
你沒有得到警報的原因是因爲你爲clGender提供了一個值。在表格設計視圖中,有兩個相關屬性:Required
和Allow 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
我不知道我是否理解你說的,但我已經指定「必需」爲真,並且「允許零長度」爲假。我也嘗試過CurrentDb.Execute _「INSERT INTO basetable(clName,clId,clGender)VALUES(NULL,NULL,NULL);」'但是這些代碼也沒有顯示警報。 –
即使不應該,'RecordsAffected'也總是返回0。我搜查了這個問題,但我找不到原因。程序員說創建CurrentDb的db實例會使'RecordsAffected'正常工作。所以我期望代碼應該正常工作,因爲db實例已經創建。但我總是回到0。 –
剛剛在本地進行了測試(儘管使用Access 2013),並且按預期工作。你說它總是返回0'RecordsAffected' - 你能確認這行肯定是插入的嗎? – Skippy
您是如何驗證該字段是必需的?當你執行該語句並且「沒有提示」時,會發生什麼*記錄是否被插入?該記錄中「clGender」字段的值是多少? – David
大衛,我認爲將屬性中的「必需」設置爲yes意味着它不能爲空。該記錄沒有被插入,這意味着沒有任何反應。也沒有警報。 –