回答編集履歴
4
修正
answer
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
|
12
12
|
1. 書式プロパティは初期状態では存在していませんか、一度設定した後は存在しています。存在していない状態で設定するとエラーになりますので、その場合は、生成して追加する、という処理にします。
|
13
13
|
|
14
|
-
1. 小数点以下表示桁数プロパティは初期状態で
|
14
|
+
1.~~ 演算フィールドの小数点以下表示桁数プロパティは初期状態で存在しているので、そのまま設定できます。~~演算フィールドの小数点以下表示桁数プロパティは初期状態では存在していないので、同様にエラーチェックしてエラーの場合は生成して追加。
|
15
15
|
|
16
16
|
上記の点に留意してコーディングすると下記のようになります。
|
17
17
|
|
3
修正
answer
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
プロパティ設定はQueryDef(クエリ定義)に対して実行します。テーフルならTableDef。
|
6
6
|
|
7
7
|
1. プロパティには、初期状態で存在しているものと、設定したときに生成されるものがあります。
|
8
|
-
書式プロパティは初期状態では存在しません。小数点以下表示桁数は存在しています。
|
8
|
+
書式プロパティは初期状態では存在しません。小数点以下表示桁数は存在しています(ただし演算フィールドの場合は初期状態では存在しない)。
|
9
9
|
|
10
10
|
1. 存在しているプロパティはそのまま設定できますが、存在していないプロパティは生成(CreateProperty)してから追加します。一度、追加するとその後は必要ありません。存在しているのに追加するとエラーになります。
|
11
11
|
|
2
コード修正
answer
CHANGED
@@ -24,8 +24,6 @@
|
|
24
24
|
End sub
|
25
25
|
|
26
26
|
Public Sub クエリプロパティ変更(qd As DAO.QueryDef)
|
27
|
-
Dim qd As DAO.QueryDef
|
28
|
-
Set qd = CurrentDb.QueryDefs(クエリ名)
|
29
27
|
|
30
28
|
Dim Fld As DAO.Field
|
31
29
|
For Each Fld In qd.Fields
|
@@ -34,24 +32,33 @@
|
|
34
32
|
If .Type = dbDouble Then
|
35
33
|
On Error Resume Next
|
36
34
|
'書式プロパティを標準に設定
|
35
|
+
Dim prp As DAO.Property
|
37
36
|
Fld.Properties("Format").Value = "Standard"
|
38
37
|
'書式プロパティが存在しないとエラーになる
|
39
38
|
If Err <> 0 Then
|
40
39
|
'書式プロパティ生成してフィールドに追加する
|
41
|
-
Dim prp As DAO.Property
|
42
40
|
'書式プロパティのプロパティ値はテキスト型(dbText)
|
43
41
|
Set prp = Fld.CreateProperty("Format", dbText, "Standard")
|
44
42
|
Fld.Properties.Append prp
|
45
43
|
Set prp = Nothing
|
46
44
|
Err.Clear
|
47
45
|
End If
|
48
|
-
On Error GoTo 0
|
49
46
|
'小数点以下表示桁数を3に設定
|
50
47
|
Fld.Properties("DecimalPlaces").Value = 3
|
48
|
+
If Err <> 0 Then
|
49
|
+
'書式プロパティ生成してフィールドに追加する
|
50
|
+
'書式プロパティのプロパティ値はテキスト型(dbText)
|
51
|
+
Set prp = Fld.CreateProperty("DecimalPlaces", dbByte, 3)
|
52
|
+
Fld.Properties.Append prp
|
53
|
+
Set prp = Nothing
|
54
|
+
Err.Clear
|
55
|
+
End If
|
56
|
+
On Error GoTo 0
|
51
57
|
End If
|
52
58
|
End With
|
53
59
|
Next
|
54
60
|
End Sub
|
61
|
+
|
55
62
|
```
|
56
63
|
|
57
64
|
処理するクエリが多数あるとのことなので、プロパティ設定は関数にしました。
|
1
補足追記
answer
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
1. プロパティには、初期状態で存在しているものと、設定したときに生成されるものがあります。
|
8
8
|
書式プロパティは初期状態では存在しません。小数点以下表示桁数は存在しています。
|
9
9
|
|
10
|
-
1. 存在しているプロパティはそのまま設定できます
|
10
|
+
1. 存在しているプロパティはそのまま設定できますが、存在していないプロパティは生成(CreateProperty)してから追加します。一度、追加するとその後は必要ありません。存在しているのに追加するとエラーになります。
|
11
11
|
|
12
12
|
1. 書式プロパティは初期状態では存在していませんか、一度設定した後は存在しています。存在していない状態で設定するとエラーになりますので、その場合は、生成して追加する、という処理にします。
|
13
13
|
|
@@ -56,4 +56,10 @@
|
|
56
56
|
|
57
57
|
処理するクエリが多数あるとのことなので、プロパティ設定は関数にしました。
|
58
58
|
引数を変更するだけで処理するクエリを指定できます。
|
59
|
-
一つのクエリの処理に成功したら、あとは、`For Each qd In CurrentDb.QueryDefs` でループ処理すればすべてのクエリのプロパティを一気に変更できます。
|
59
|
+
一つのクエリの処理に成功したら、あとは、`For Each qd In CurrentDb.QueryDefs` でループ処理すればすべてのクエリのプロパティを一気に変更できます。
|
60
|
+
|
61
|
+
|
62
|
+
補足
|
63
|
+
---
|
64
|
+
クエリでプロパティを変更しても、それをレコードソースとする作成済みのレポートには反映されない場合があります。プロパティ変更後に作成したレポートなら、反映されますが。
|
65
|
+
今後、プロパティ変更が発生する可能性があるなら、レポートに対してプロパティ変更する処理を作成して、それを実行したほうが確実です。
|