access函数_ACCESS中的DLookUp函数是如何运算的?
?一、DLookUp函數(shù)介紹
1. DLookUp函數(shù)的用途:可以用于從指定集合(一個(gè)域)中獲取符合條件的特定字段的值。
2. DLookUp函數(shù)的格式為:DLookUp( expr , domain , [criteria] )
其中:
expr 為字段名,或以字段名為基礎(chǔ)的表達(dá)式字符串
domain 為記錄集,可以是表名,也可以是不需要參數(shù)的選擇(聯(lián)合)查詢(xún)
[criteria] 為取值范圍,即數(shù)據(jù)的限定條件
3. DLookUp函數(shù)最終的運(yùn)行結(jié)果為:domain記錄集中,符合[criteria](范圍)條件的,expr字段的值或基于expr字段值的表達(dá)式的運(yùn)算結(jié)果。
例題:
表[學(xué)生]中有[學(xué)號(hào)]和[姓名]2個(gè)字段,其中[學(xué)號(hào)]為唯一主鍵,現(xiàn)要求獲取表[學(xué)生]中[學(xué)號(hào)]為“XS001”的學(xué)生的[姓名]
解答:DLookUp("姓名","學(xué)生","學(xué)號(hào)= 'XS001' ")
二、DLookUp函數(shù)中的SQL查詢(xún)邏輯
通過(guò)對(duì)DLookUp函數(shù)的運(yùn)算邏輯進(jìn)行分析,我們可以將DLookUp函數(shù)中的各個(gè)參數(shù)轉(zhuǎn)化為SQL查詢(xún)語(yǔ)句的構(gòu)成部分。
其中:
expr 為SQL語(yǔ)句的 SELECT 部分,即指定的唯一字段
domain 為SQL語(yǔ)句的 FROM 部分,即選定的記錄集(表來(lái)源)
[criteria] 為SQL語(yǔ)句的 WHERE 部分,即特定的數(shù)據(jù)范圍
如此一來(lái),上文中例題的DLookUp語(yǔ)句則可以理解為以下SQL語(yǔ)句:
SELECT 姓名 FROM 學(xué)生 WHERE 學(xué)號(hào)= "XS001"
當(dāng)然,這是一種簡(jiǎn)單化的理解。假設(shè)表[學(xué)生]中的[學(xué)號(hào)]不是唯一主鍵的情況下呢?也就是說(shuō),可能存在[學(xué)號(hào)]相同的多個(gè)[姓名],但是DLookUp函數(shù)又必須只返回一個(gè)值,這種情況是如何處理的?
微軟在Access中關(guān)于DLookUp函數(shù)的處理邏輯是返回第一個(gè)值。
因此,上述SQL語(yǔ)句可以進(jìn)一步完善為:
SELECT TOP 1 姓名 FROM 學(xué)生 WHERE 學(xué)號(hào)= "XS001"
轉(zhuǎn)化為通用格式,則是:
DLookUp(expr, domain, [criteria])
等價(jià)于
SELECT TOP 1 expr FROM domain WHERE [criteria]
三、將SELECT子查詢(xún)轉(zhuǎn)化為DLookUp運(yùn)算結(jié)果的VBA邏輯
基于DLookUp函數(shù)中的SQL查詢(xún)邏輯分析,我們可以逆向推導(dǎo)微軟在將VBA封裝進(jìn)Access中時(shí),關(guān)于DLookUp函數(shù)的運(yùn)算過(guò)程如下:
Public Function DLookUp(ByVal expr As String, ByVal domain As String, ByVal criteria As String) As Variant
On Error GoTo DLookUp_err
Dim SQL As String, rst
SQL = "SELECT TOP 1 " & expr & " FROM " & domain & " WHERE " & criteria
Set rst = CurrentDb.OpenRecordset(SQL)
DLookUp = rst(expr)
Exit Function
DLookUp_err:
DLookUp = "#錯(cuò)誤"
End Function
四、DLookUp函數(shù)的發(fā)散運(yùn)用
在Access數(shù)據(jù)庫(kù)中,微軟通過(guò)VBA封裝DLookUp函數(shù)為我們提供了獲取SELECT子查詢(xún)語(yǔ)句結(jié)果的快捷方式。
而在SQL Server等其他數(shù)據(jù)庫(kù)中沒(méi)有DLookUp函數(shù)可以使用,雖然可以使用SELECT子查詢(xún)的方式來(lái)解決,如此一來(lái)在編寫(xiě)SQL查詢(xún)時(shí),SQL語(yǔ)句將會(huì)顯得十分冗長(zhǎng)和復(fù)雜。
但基于上文分析,我們已經(jīng)掌握了將SELECT子查詢(xún)語(yǔ)句轉(zhuǎn)化為DLookUp函數(shù)運(yùn)算結(jié)果邏輯,據(jù)此我們?cè)赩B.Net、C++、ASP、PHP等程序語(yǔ)言中,其實(shí)可以自行封裝一個(gè)類(lèi)DLookUp函數(shù),在連接SQL Server(或其他數(shù)據(jù)庫(kù))時(shí)方便調(diào)用,簡(jiǎn)化SQL語(yǔ)句。
總結(jié)
以上是生活随笔為你收集整理的access函数_ACCESS中的DLookUp函数是如何运算的?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: arraylist从大到小排序_经典排序
- 下一篇: for in for of区别_Pyth