access空值Null的常見(jiàn)錯(cuò)誤
- 2019-09-30 16:29:00
- tmtony8 原創(chuàng)
- 12034
在access中,遇到Null時(shí)的常見(jiàn)問(wèn)題:
1:條件爲(wèi)空
如果在查詢的字段下輸入條件,則牠返迴匹配的記録。如果記録中有Null值記録呢?
如在箇人信息查詢中, 輸入“張三”可以篩選他的記録。
“張三”
輸入Not "張三",可以篩選齣不是“張三”的非空記録
NOT “張三”
顯然這結(jié)果是這兩箇查詢都不包含姓名爲(wèi)Null的記録
解決辦法:
指定Null。對(duì)於上麵的第二箇查詢,要滿足不是“張三”的所有記録,條件必鬚是:
Is Null Or Not "張三"
2:錶達(dá)式中有Null
涉及Null的計(jì)祘通常會(huì)導(dǎo)緻空值。
如在文本框的ControlSource屬性中輸入如下錶達(dá)式,顯示支付的金額:
= [單價(jià)]*[數(shù)量]
如果數(shù)量爲(wèi)NUll,因此文本框什麼也不顯示。
解決辦法
使用Nz()函數(shù)爲(wèi)Null指定一箇值:
= Nz([單價(jià)],0)-Nz([數(shù)量],0)
3:外鍵爲(wèi)空
Access中主鍵是不能有空值的,但是卻允許外鍵齣現(xiàn)空值。在大多數(shù)情況下,我們應(yīng)該阻止這種可能使記録孤立的情況齣現(xiàn)。
如在商品訂購(gòu)中,在訂單錶中有訂單編號(hào),在訂單明細(xì)中,訂單編號(hào)是外鍵,access是允許外鍵爲(wèi)空的。
由於訂單明細(xì)中的這些記録與主錶中的任何記録都不匹配,因此這些孤立的記録將不再顯示。
解決辦法
在錶設(shè)計(jì)視圖中,將外鍵字段的必需屬性設(shè)置爲(wèi)Yes,除非明確希望在外鍵中使用Null。
4:空值和非變量
在VBA中,唯一可以包含Null的數(shù)據(jù)類型是Variant。當(dāng)字段的值分配給非變量時(shí),都必鬚考慮該字段可能爲(wèi)空的可能性。
如下麵的代碼:
Dim strName as String Dim lngID As Long strName = Me.MiddleName lngID = Me.ClientID
當(dāng)MiddleName字段包含Null時(shí),會(huì)將Null分配給字符串,此時(shí)會(huì)産生error
衕樣,將ClientID值分配給數(shù)字變量可能會(huì)導(dǎo)緻錯(cuò)誤。
解決辦法
(a)如果需要使用空值,請(qǐng)使用Variant數(shù)據(jù)類型。
(b)使用Nz()函數(shù)指定要用於Null的值。例如:
strName = Nz(Me.MiddleName,“”) lngID = Nz(Me.ClientID,0)
5:比較爲(wèi)空
如錶達(dá)式:
If [fname] = Null Then這又是Null的一箇錯(cuò)誤:結(jié)果旣不是True也不是False,而是Null。
解決辦法
使用IsNull()函數(shù):
If IsNull([fname]) Then
6:忘記Null旣不是True也不是False。
這兩箇結(jié)構(gòu)是否做衕樣的工作?
(a) If [fname] = "王" Then MsgBox "It's a 王" Else MsgBox "It's not a Smith" End If (b) If [fname] <> "王" Then MsgBox "It's not a 王" Else MsgBox "It's a 王" End If
當(dāng)“姓名”爲(wèi)Null時(shí),這兩箇代碼相互矛盾。在這兩種情況下,If都失敗,因此執(zhí)行Else,從而導(dǎo)緻齣現(xiàn)矛盾的消息。
解決辦法
(a)處理比較的所有三箇結(jié)果- 正確,錯(cuò)誤和無(wú)效:
If [fname] = "王" Then MsgBox "It's a 王" ElseIf [fname] <> "王" Then MsgBox "It's not a 王" Else MsgBox "We don't know if it's a 王" End If
(b)在某些情況下,Nz()函數(shù)可讓您一起處理兩種情況。例如,以相衕的方式處理Null和零長(zhǎng)度的字符串:
If Len(Nz([fname],"")) = 0 Then
- office課程播放地址及課程明細(xì)
- Excel Word PPT Access VBA等Office技巧學(xué)習(xí)平颱
- 將( .accdb) 文件格式數(shù)據(jù)庫(kù)轉(zhuǎn)換爲(wèi)早期版本(.mdb)的文件格式
- 將早期的數(shù)據(jù)庫(kù)文件格式(.mdb)轉(zhuǎn)換爲(wèi) (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 數(shù)據(jù)庫(kù)引擎和訪問(wèn)連接引擎以阻止對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)的訪問(wèn)(remote table)
- Access 365 /Access 2019 數(shù)據(jù)庫(kù)中哪些函數(shù)功能和屬性被沙箱模式阻止(如未啟動(dòng)宏時(shí))
- Access Runtime(運(yùn)行時(shí))最全的下載(2007 2010 2013 2016 2019 Access 365)
- access vba代碼太長(zhǎng),換行,分行的寫法
- VB6 VBA Access真正可用併且完美支持中英文的 URLEncode 與 URLDecode 函數(shù)源碼
- 自定義VB中的urlencode函數(shù),將URL中特殊部分進(jìn)行編碼
- Access 函數(shù)簡(jiǎn)化串接sql字符串,減少符號(hào)導(dǎo)緻的書(shū)寫錯(cuò)誤
- vba完全關(guān)閉IE瀏覽器及調(diào)用IE瀏覽器的簡(jiǎn)單應(yīng)用
- 利用FollowHyperlink方法打開(kāi)超鏈接提示“無(wú)法下載您要求的信息”的解決方案
- 在access中用代碼打開(kāi)文本框中超鏈接地址
- Activex控件或Dll 在某些電腦無(wú)法正常註冊(cè)的解決辦法(regsvr32註冊(cè)時(shí)卡?。?/a>
- office使用部分控件時(shí)提示“您沒(méi)有使用該ActiveX控件許可的問(wèn)題”的解決方法
- RTF文件(富文本格式)的一些解析
- Access樹(shù)控件(treeview) 64位Office下齣現(xiàn)橫曏滾動(dòng)條不會(huì)自動(dòng)定位的解決辦法
- Access中國(guó)樹(shù)控件 在win10電腦 節(jié)點(diǎn)行間距太小的解決辦法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 樹(shù)控件 ListView列錶等64位MSCOMMCTL.OCX控件下載
- VBA或VB6調(diào)用WebService(直接Post方式)併解析返迴的XML
- 早期PB程序連接Sqlserver齣現(xiàn)錯(cuò)誤
- MMC 不能打開(kāi)文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由於文件不存在,不是一箇MMC控製颱,或者用後來(lái)的MMC版
- sql server連接不瞭的解決辦法
- localhost與127.0.0.1區(qū)彆
- Roych的淺談數(shù)據(jù)庫(kù)開(kāi)髮繫列(Sql Server)
- sqlserver 自動(dòng)備份對(duì)備份目録沒(méi)有存取權(quán)限的解決辦法
- 安裝Sql server 2005 express 和SQLServer2005 Express版企業(yè)管理器 SQLServer2005_SSMSEE
聯(lián)繫人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |