程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Access數據庫 >> 關於Access數據庫 >> 如何更改表的某字段的屬性(如允許空字符/必填)Null 值與零長度字符串的區別

如何更改表的某字段的屬性(如允許空字符/必填)Null 值與零長度字符串的區別

編輯:關於Access數據庫

問題:

如何更改表的某一個字段的屬性比如允許空字符串

回答:

首先說一下“必填”和“允許空”的概念
相信大家已經知道在 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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved