teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

説明の改善

2020/07/15 15:10

投稿

hatena19
hatena19

スコア34367

answer CHANGED
File without changes

3

説明の改善

2020/07/15 15:10

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -14,6 +14,10 @@
14
14
 
15
15
  外部データベース用のDCount関数、DLookup関数
16
16
 
17
+ DCount関数、DLookup関数とまったく同じ仕様なので、
18
+ 下記のコードを標準モジュールにコピーして、
19
+ VBAエディターで DCount を MyDCount に置換、DLookup を MyDLoouup に置換するだけです。
20
+
17
21
  ```vba
18
22
  Option Compare Database
19
23
  Option Explicit

2

コード追記

2020/07/15 15:10

投稿

hatena19
hatena19

スコア34367

answer CHANGED
File without changes

1

コード追記

2020/07/15 15:07

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -8,4 +8,40 @@
8
8
 
9
9
  下記で紹介している方法だとリンクテーブルは使用しないので、上記よりは安全です。
10
10
 
11
- [テーブルデータを保護する - hatena chips](https://hatenachips.blog.fc2.com/blog-entry-351.html)
11
+ [テーブルデータを保護する - hatena chips](https://hatenachips.blog.fc2.com/blog-entry-351.html)
12
+
13
+ ---
14
+
15
+ 外部データベース用のDCount関数、DLookup関数
16
+
17
+ ```vba
18
+ Option Compare Database
19
+ Option Explicit
20
+ Const Inku = " IN '' [Ms Access;PWD=1234;DATABASE=C:\DBProtectBackEnd.ACCDB;]" '外部データベース接続文字列
21
+
22
+ Public Function MyDCount(Expr As String, Domain As String, Optional Criteria As String)
23
+ Dim strSQL As String
24
+ strSQL = "SELECT Count(" & Expr & ") FROM " & Domain & Inku
25
+ If Criteria <> "" Then
26
+ strSQL = strSQL & " WHERE " & Criteria
27
+ End If
28
+
29
+ Dim rs As DAO.Recordset
30
+ Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenForwardOnly, dbReadOnly)
31
+
32
+ MyDCount = rs(0)
33
+ End Function
34
+
35
+ Public Function MyDLookup(Expr As String, Domain As String, Optional Criteria As String)
36
+ Dim strSQL As String
37
+ strSQL = "SELECT " & Expr & " FROM " & Domain ' & Inku
38
+ If Criteria <> "" Then
39
+ strSQL = strSQL & " WHERE " & Criteria
40
+ End If
41
+
42
+ Dim rs As DAO.Recordset
43
+ Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenForwardOnly, dbReadOnly)
44
+
45
+ MyDLookup = rs(0)
46
+ End Function
47
+ ```