回答:
首先說一下“必填”和“允許空”的概念
相信大家已經知道在 VBA 裡面 NULL 與 ""(零長度字符串)的區別了吧?
Null 表示未設置數據
"" 表示有數據,數據為一個零長度字符串
請參考幫助內的說明:
Null 值與零長度字符串的區別 (MDB)
注釋 本主題中的信息僅適用於 Microsoft Access 數據庫 (.mdb)。
在查看含有 Null (Null:可以在字段中輸入或用於表達式和查詢,以標明丟失或未知的數據。在 Visual Basic 中,Null 關鍵字表示 Null 值。有些字段(如主鍵字段)不可以包含 Null 值。) 值和零長度字符串 (零長度字符串:不含字符的字符串。可以使用零長度字符串來表明您知道該字段沒有值。輸入零長度字符串的方法是鍵入兩個彼此之間沒有空格的雙引號 (" ")。)的數據時,字段看起來是相同的,都沒有任何值。但可以用表達式 (表達式:算術或邏輯運算符、常數、函數和字段名稱、控件和屬性的任意組合,計算結果為單個值。表達式可執行計算、操作字符或測試數據。)來區分 Null 值和零長度字符串。
在“設計”視圖 (“設計”視圖:顯示數據庫對象(包括:表、查詢、窗體、宏和數據訪問頁)的設計的窗口。在“設計”視圖中,可以新建數據庫對象和修改現有數據庫對象的設計。)中打開窗體、報表或數據訪問頁。
在查詢設計網格 (設計網格:在查詢“設計”視圖或“高級篩選/排序”窗口中設計查詢或篩選時所用的網格。對於查詢,該網格以前稱為“QBE 網格”。)的字段中,或在未綁定控件 (未綁定控件:未與基礎表、查詢中的字段或 SQL 語句連接的控件。未綁定控件通常用於顯示信息性文本或裝飾性圖片。)的控件來源中,鍵入下列表達式。將 fIEldname 替換為包含 Null 值和零長度字符串的字段名稱。
=IIf(IsNull([fieldname]),"Unknown",Format([fIEldname],"@;\ZLS"))
如果字段包含 Null,則表達式返回 “Unknown”,如果字段包含零長度字符串,則表達式返回“ZLS”。否則,表達式將值返回到該字段中。
“必填” 為“是” 表示不允許 NULL
“允許空” 為 “是” 表示允許 ""(零長度字符串)
參考下面函數
Function ChengTableFIEldPro_ADO()
Dim MyTableName As String
Dim MyFIEldName As String
MyTableName = "表 ds1"
MyFIEldName = "aa"
Dim MyDB As New ADOX.Catalog
Dim MyTable As ADOX.Table
Dim MyFIEld As ADOX.Column
On Error GoTo Err_GetFIEldDescription
MyDB.ActiveConnection = CurrentProject.Connection
Set MyTable = MyDB.Tables(MyTableName)
GetFieldDesc_ADO = MyTable.Columns(MyFieldName).PropertIEs("Description")
Dim pro
For Each pro In MyTable.Columns(MyFieldName).PropertIEs
Debug.Print pro.Name & pro.Value
Debug.Print pro.Type
Next
'以下這句更改某個字段的“必填”屬性為“是”
MyTable.Columns(MyFieldName).PropertIEs("Nullable") = True
'以下這句更改某個字段的“允許空”(也叫“允許零長度字符串”)屬性為“是”
MyTable.Columns(MyFieldName).PropertIEs("Jet OLEDB:Allow Zero Length") = True
Set MyDB = Nothing
Bye_GetFIEldDescription:
Exit Function
Err_GetFIEldDescription:
Beep
MsgBox Err.Description, vbExclamation
GetFIEldDescription = Null
Resume Bye_GetFIEldDescription
End Function