語法: DLookup(expr, domain, [criteria])
參數解釋:
expr:要取得值的字段名稱
domain :要取得值的表或查詢名稱
criteria:用于限制 DLookup 函數執行的數據範圍。如果不給 criteria 提供值,Dlookup 函數將返回DOMAIN中的一个随機值。
正常用法:-
用於數值型條件值:
DLookup("字段名稱" , "表或查詢名稱" , "條件字段名 = n")
用于字符串型條件值:(注意字符串的單引號不能丢失)
DLookup("字段名稱" , "表或查詢名稱" , "條件字段名 = '字符串值'")
用于日期型條件值:(注意日期的"#"號不能丢失)
DLookup("字段名稱" , "表或查詢名稱" , "條件字段名 = #日期值#")
从窗體控件中引用條件值用法:-
用於數值型條件值:
DLookup("字段名稱" , "表或查詢名稱" , "條件字段名 =" & forms!窗體名!控件名)
用於字符串型條件值:(注意字符串的單引號不能丢失)
DLookup("字段名稱" , "表或查詢名稱" , "條件字段名 = '" & forms!窗體名!控件名 & "'")
用於日期型條件值:(注意日期的"#"號不能丢失)
DLookup("字段名稱" , "表或查詢名稱" , "條件字段名 = #" & forms!窗體名!控件名 & "#")
混合使用方法(支持多條件):-
在這種方法中也可以在條件中寫入固定的值。
DLookup("字段名稱" , "表或查詢名稱" , "條件字段名1 = " & Forms!窗體名!控件名1 _
& " AND 條件字段名2 = '" & Forms!窗體名!控件名2 & "'" _
& " AND 條件字段名3 =#" & Forms!窗體名!控件名3 & "#")
Access一些指令之一
Option Compare Database
Const DB_Text As Long = 10
Const DB_Boolean As Long = 1
'禁止全部菜單
ChangeProperty "AllowFullMenus", DB_Boolean, False
'允許全部菜單
ChangeProperty "AllowFullMenus", DB_Boolean, True
'清除啟動窗口
ChangeProperty "StartupForm", DB_Text, "(none)"
'禁止查看代碼
ChangeProperty "AllowBreakIntoCode", DB_Boolean, False
'禁止數據庫窗口
ChangeProperty "StartupShowDBWindow", DB_Boolean, False
'禁止使用[shift]鍵
ChangeProperty "AllowBypassKey", DB_Boolean, False
'禁止特殊鍵
ChangeProperty "AllowSpecialKeys", DB_Boolean, False
'禁止狀態欄
ChangeProperty "StartupShowStatusBar", DB_Boolean, False
'禁止內置工具欄
ChangeProperty "AllowBuiltinToolbars", DB_Boolean, False
****************************
以下為為ACCESS檔進行資料壓縮及修復的指令(適合繁體中文)。
使用時, ACCESS都是需要獨佔(沒有第二者使用之下)才可以運作。
Private Sub repairbtn_Click()
CommandBars("Tools"). _
Controls("資料庫公用程式(&D)"). _
Controls("壓縮及修復資料庫(&C)..."). _
accDoDefaultAction
End Sub
****************************
Const DB_Text As Long = 10
Const DB_Boolean As Long = 1
'禁止全部菜單
ChangeProperty "AllowFullMenus", DB_Boolean, False
'允許全部菜單
ChangeProperty "AllowFullMenus", DB_Boolean, True
'清除啟動窗口
ChangeProperty "StartupForm", DB_Text, "(none)"
'禁止查看代碼
ChangeProperty "AllowBreakIntoCode", DB_Boolean, False
'禁止數據庫窗口
ChangeProperty "StartupShowDBWindow", DB_Boolean, False
'禁止使用[shift]鍵
ChangeProperty "AllowBypassKey", DB_Boolean, False
'禁止特殊鍵
ChangeProperty "AllowSpecialKeys", DB_Boolean, False
'禁止狀態欄
ChangeProperty "StartupShowStatusBar", DB_Boolean, False
'禁止內置工具欄
ChangeProperty "AllowBuiltinToolbars", DB_Boolean, False
****************************
以下為為ACCESS檔進行資料壓縮及修復的指令(適合繁體中文)。
使用時, ACCESS都是需要獨佔(沒有第二者使用之下)才可以運作。
Private Sub repairbtn_Click()
CommandBars("Tools"). _
Controls("資料庫公用程式(&D)"). _
Controls("壓縮及修復資料庫(&C)..."). _
accDoDefaultAction
End Sub
****************************
ACCESS表單放大縮小指令
DoCmd.Restore 回復原本大小
DoCmd.Maximize 最大化
DoCmd.Minimize 最小化
DoCmd.MoveSize [right][, down][, width][, height] 自訂大小
以上是用在VBA程式碼中,(可以放在form 的 on open事件裡)
也有相對應的巨集可用.(去掉docmd,就是它們的原本的巨集名稱)
這些方法只能改自身表單,不能改 非[程式碼模組所屬表單] 的其他表單.
DoCmd.Maximize 最大化
DoCmd.Minimize 最小化
DoCmd.MoveSize [right][, down][, width][, height] 自訂大小
以上是用在VBA程式碼中,(可以放在form 的 on open事件裡)
也有相對應的巨集可用.(去掉docmd,就是它們的原本的巨集名稱)
這些方法只能改自身表單,不能改 非[程式碼模組所屬表單] 的其他表單.
利用DLOOKUP()函數在ACCESS表單中做查詢
我想要做一個可以在執行表單時,在表單裡面做輸入我要的值然後查詢並直接從資料表中找到資料。
--------------------------------------------------------------------------------------------------------------------------------------
EX:
資料表----客戶資料
識別碼:35
姓名:某某某
連絡電話:****-****
出生年月日:54/5/6
表單----客戶資料
識別碼:
姓名:
連絡電話:
出生年月日:
在表單中建立查詢>然後我要輸入出生年月日和姓氏就可以跳出以上資料。
--------------------------------------------------------------------------------------------------------------------------------------
EX:
資料表----客戶資料
識別碼:35
姓名:某某某
連絡電話:****-****
出生年月日:54/5/6
表單----客戶資料
識別碼:
姓名:
連絡電話:
出生年月日:
在表單中建立查詢>然後我要輸入出生年月日和姓氏就可以跳出以上資料。
答案:
Private Sub 姓名_AfterUpdate()
If IsNull(DLookup([姓名], "客戶資料", "姓名='" & Me![姓名] & "'")) Then
MsgBox "找不到你輸入的資料"
Exit Sub
End If
Me![識別碼] = DLookup([識別碼], "客戶資料", "姓名='" & Me![姓名] & "'")
Me![姓名] = DLookup([姓名], "客戶資料", "姓名='" & Me![姓名] & "'")
Me![連絡電話] = DLookup([連絡電話], "客戶資料", "姓名='" & Me![姓名] & "'")
Me![出生年月日] = DLookup([出生年月日], "客戶資料", "姓名='" & Me![姓名] & "'")
End Sub
注意,表單上的那4個資料項最好不要和資料庫連接, 要 非結合 狀態,這樣比較不會出其他問題.
因為上面已經用最簡單的方法去做,不想搞大. 單純只有用到 DLookup()函數 來處理.
還有, DLookup()只能給你 1 個資料,多出來的不處理.
If IsNull(DLookup([姓名], "客戶資料", "姓名='" & Me![姓名] & "'")) Then
MsgBox "找不到你輸入的資料"
Exit Sub
End If
Me![識別碼] = DLookup([識別碼], "客戶資料", "姓名='" & Me![姓名] & "'")
Me![姓名] = DLookup([姓名], "客戶資料", "姓名='" & Me![姓名] & "'")
Me![連絡電話] = DLookup([連絡電話], "客戶資料", "姓名='" & Me![姓名] & "'")
Me![出生年月日] = DLookup([出生年月日], "客戶資料", "姓名='" & Me![姓名] & "'")
End Sub
注意,表單上的那4個資料項最好不要和資料庫連接, 要 非結合 狀態,這樣比較不會出其他問題.
因為上面已經用最簡單的方法去做,不想搞大. 單純只有用到 DLookup()函數 來處理.
還有, DLookup()只能給你 1 個資料,多出來的不處理.
ACCESS資料表中輸入重覆資料便會出提示窗口並停止輸入
問:-
在 Access 有一 Custom 的資料表,內有CCard 欄位(設定: 數字,非自動號碼,不可重履).
以下是Afterupdate 的設定:
Private Sub addNewCCard_AfterUpdate()
If DLookup("CCard", "Custom", CCard = Me![addNewCCard]) Then
MsgBox ("This C Card used")
End If
End Sub
但是如果我在Custom資料表CCard中輸入已存在的號碼,郤沒有如設定般出現 MsgBox 內容,
而且還可以繼續跳到下一欄位繼續輸入,請問哪裡出現問題?
答:-
改一下變數條件位置如下所示:
If DLookup("CCard", "Custom", "[CCard]=" & Me![addNewCCard] & "") Then
在 Access 有一 Custom 的資料表,內有CCard 欄位(設定: 數字,非自動號碼,不可重履).
以下是Afterupdate 的設定:
Private Sub addNewCCard_AfterUpdate()
If DLookup("CCard", "Custom", CCard = Me![addNewCCard]) Then
MsgBox ("This C Card used")
End If
End Sub
但是如果我在Custom資料表CCard中輸入已存在的號碼,郤沒有如設定般出現 MsgBox 內容,
而且還可以繼續跳到下一欄位繼續輸入,請問哪裡出現問題?
答:-
改一下變數條件位置如下所示:
If DLookup("CCard", "Custom", "[CCard]=" & Me![addNewCCard] & "") Then
訂閱:
文章 (Atom)