質問編集履歴
7
test
CHANGED
File without changes
|
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
VBAのDAO.RecordsetオブジェクトにMySQLのリンクテーブル
|
13
|
+
VBAのDAO.RecordsetオブジェクトにMySQLのリンクテーブル経由でSQLを渡して操作する際に、
|
14
14
|
|
15
15
|
Accessが異常終了してしまいます。
|
16
16
|
|
@@ -98,9 +98,9 @@
|
|
98
98
|
|
99
99
|
* MySQLの最新版(8.0.13→8.0.20)へのバージョンアップ
|
100
100
|
|
101
|
-
* Office更新オプション
|
101
|
+
* Office更新オプションを使ってAccessを最新化
|
102
|
-
|
102
|
+
|
103
|
-
* ODBCドライバの削除・再インストール
|
103
|
+
* MySQL ODBCドライバの削除・再インストール
|
104
104
|
|
105
105
|
* 別のクライアント(Windows 10 2004)のAccess 2016から
|
106
106
|
|
@@ -116,7 +116,7 @@
|
|
116
116
|
|
117
117
|
|
118
118
|
|
119
|
-
|
119
|
+
サーバ側
|
120
120
|
|
121
121
|
- OS:Microsoft Windows Server 2016 64bit バージョン1607 (OSビルド 14393.2639)
|
122
122
|
|
@@ -124,7 +124,7 @@
|
|
124
124
|
|
125
125
|
|
126
126
|
|
127
|
-
|
127
|
+
クライアント側
|
128
128
|
|
129
129
|
- OS:Microsoft Windows 10 64bit 2004 (OSビルド 19041.329)
|
130
130
|
|
@@ -162,7 +162,7 @@
|
|
162
162
|
|
163
163
|
`・WindowsUpdateを6/13日前後で実行しているのか`
|
164
164
|
|
165
|
-
→いいえ。
|
165
|
+
→いいえ。履歴を見ましたがありませんでした。
|
166
166
|
|
167
167
|
|
168
168
|
|
@@ -192,9 +192,9 @@
|
|
192
192
|
|
193
193
|
1. `!SEQNUM = !SEQNUM + 1` をコメントアウト
|
194
194
|
|
195
|
-
2. `get
|
195
|
+
2. `getno = Format(!SEQNUM, "0000")` の行にブレークポイントを設定
|
196
|
-
|
196
|
+
|
197
|
-
3. イミディエイトウィンドウで `?get
|
197
|
+
3. イミディエイトウィンドウで `?getno()` を実行し、ブレークポイントで中断する。
|
198
198
|
|
199
199
|
4. `RS.Fields("SEQNUM")` で変数の内容を出力する都度、内容が変わる。
|
200
200
|
|
6
ODBCドライバ設定の参考URLを追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -230,7 +230,7 @@
|
|
230
230
|
|
231
231
|
|
232
232
|
|
233
|
-
* ODBCドライバの設定は以下の手順です。
|
233
|
+
* ODBCドライバの設定は以下の手順です。[参考URL](https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-usagenotes-apptips-microsoft-access.html)
|
234
234
|
|
235
235
|
1. 32bit版ODBCデータソースアドミニストレータを開く。`%windir%\SysWOW64\odbcad32.exe`
|
236
236
|
|
5
ODBCドライバの設定内容を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -186,7 +186,7 @@
|
|
186
186
|
|
187
187
|
|
188
188
|
|
189
|
-
|
189
|
+
* イミディエイトウィンドウで操作していると、以下のようなメモリの参照が誤っているような、異常な挙動が確認できました。
|
190
190
|
|
191
191
|
|
192
192
|
|
@@ -222,6 +222,30 @@
|
|
222
222
|
|
223
223
|
|
224
224
|
|
225
|
-
|
225
|
+
### 再現用情報
|
226
|
-
|
226
|
+
|
227
|
+
|
228
|
+
|
227
|
-
https://drive.google.com/file/d/150voL25yWJFjbevG4s0TsPwCyTCz9nwL/view?usp=sharing
|
229
|
+
* [再現用.accdb](https://drive.google.com/file/d/150voL25yWJFjbevG4s0TsPwCyTCz9nwL/view?usp=sharing) をつくりました。
|
230
|
+
|
231
|
+
|
232
|
+
|
233
|
+
* ODBCドライバの設定は以下の手順です。
|
234
|
+
|
235
|
+
1. 32bit版ODBCデータソースアドミニストレータを開く。`%windir%\SysWOW64\odbcad32.exe`
|
236
|
+
|
237
|
+
2. `システムDSN` を追加
|
238
|
+
|
239
|
+
3. `MySQL ODBC 8.0 ANSI Driver` を選択
|
240
|
+
|
241
|
+
4. MySQLサーバの`IP:port,User/Password,database` を入力して`test`ボタンで接続が通ることを確認
|
242
|
+
|
243
|
+
5. `Connection`タブの`Allow big result sets`にチェック
|
244
|
+
|
245
|
+
6. `Connection`タブの`Character Set` を `cp932`
|
246
|
+
|
247
|
+
7. `Metadata`タブの`Treat BIGINT columns as INT columns`にチェック
|
248
|
+
|
249
|
+
8. `Cursors/Results`タブの`Return matched rows instead of affected rows`にチェック
|
250
|
+
|
251
|
+
9. `OK`ボタンで保存
|
4
`再現用.accdb`を作成して添付
test
CHANGED
File without changes
|
test
CHANGED
@@ -76,7 +76,7 @@
|
|
76
76
|
|
77
77
|
.Update
|
78
78
|
|
79
|
-
get
|
79
|
+
getno = Format(!SEQNUM, "0000")
|
80
80
|
|
81
81
|
End With
|
82
82
|
|
@@ -219,3 +219,9 @@
|
|
219
219
|
??????????
|
220
220
|
|
221
221
|
```
|
222
|
+
|
223
|
+
|
224
|
+
|
225
|
+
・`再現用.accdb`をつくりましたので添付します。
|
226
|
+
|
227
|
+
https://drive.google.com/file/d/150voL25yWJFjbevG4s0TsPwCyTCz9nwL/view?usp=sharing
|
3
イミディエイトウィンドウで操作していると、以下のようなメモリの参照が誤っているような、異常な挙動が確認
test
CHANGED
File without changes
|
test
CHANGED
@@ -60,7 +60,7 @@
|
|
60
60
|
|
61
61
|
```Visual Basic For Applications
|
62
62
|
|
63
|
-
Public Function getno(
|
63
|
+
Public Function getno() As String
|
64
64
|
|
65
65
|
Dim RS As DAO.Recordset
|
66
66
|
|
@@ -183,3 +183,39 @@
|
|
183
183
|
);
|
184
184
|
|
185
185
|
```
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
・イミディエイトウィンドウで操作していると、以下のようなメモリの参照が誤っているような、異常な挙動が確認できました。
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
1. `!SEQNUM = !SEQNUM + 1` をコメントアウト
|
194
|
+
|
195
|
+
2. `getdno = Format(!SEQNUM, "0000")` の行にブレークポイントを設定
|
196
|
+
|
197
|
+
3. イミディエイトウィンドウで `?getdno()` を実行し、ブレークポイントで中断する。
|
198
|
+
|
199
|
+
4. `RS.Fields("SEQNUM")` で変数の内容を出力する都度、内容が変わる。
|
200
|
+
|
201
|
+
文字列型ではないのに文字列や文字化けした内容が返ってくる。
|
202
|
+
|
203
|
+
```
|
204
|
+
|
205
|
+
?RS.Fields("SEQNUM")
|
206
|
+
|
207
|
+
ツール
|
208
|
+
|
209
|
+
?RS.Fields("SEQNUM")
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
?RS.Fields("SEQNUM")
|
214
|
+
|
215
|
+
??潮
|
216
|
+
|
217
|
+
?RS.Fields("SEQNUM")
|
218
|
+
|
219
|
+
??????????
|
220
|
+
|
221
|
+
```
|
2
依頼情報を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -131,3 +131,55 @@
|
|
131
131
|
- Microsoft Access 2016 32ビット
|
132
132
|
|
133
133
|
- MySQL ODBCドライバ 8.0.20(Windows X86)
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
### 追加情報
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
`・上記コードの何行目でエラー落ちるのか`
|
142
|
+
|
143
|
+
→以下の行をコメントアウトするとおちません。
|
144
|
+
|
145
|
+
VBAのイミディエイトウィンドウから、行をコメントアウトしながら、関数を実行しました。
|
146
|
+
|
147
|
+
落ちる瞬間に「型が一致しません。」とエラーが表示されることもあります。
|
148
|
+
|
149
|
+
```
|
150
|
+
|
151
|
+
!SEQNUM = !SEQNUM + 1
|
152
|
+
|
153
|
+
```
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
`・どのリンクテーブルでもDAOで開くと落ちるのか`
|
158
|
+
|
159
|
+
→はい。他のリンクテーブルでも同様の現象が起きます。
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
`・WindowsUpdateを6/13日前後で実行しているのか`
|
164
|
+
|
165
|
+
→いいえ。
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
`・SYS_DENPYO_SEQの定義(create table文)`
|
170
|
+
|
171
|
+
→以下の通りです。
|
172
|
+
|
173
|
+
```sql
|
174
|
+
|
175
|
+
CREATE TABLE SYS_DENPYO_SEQ(
|
176
|
+
|
177
|
+
SEQNUM DECIMAL(4,0) NOT NULL DEFAULT 0,
|
178
|
+
|
179
|
+
INS TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
180
|
+
|
181
|
+
UPD TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
182
|
+
|
183
|
+
);
|
184
|
+
|
185
|
+
```
|
1
クライアントOSの誤りがあったため訂正。
test
CHANGED
File without changes
|
test
CHANGED
@@ -118,7 +118,7 @@
|
|
118
118
|
|
119
119
|
* サーバ側
|
120
120
|
|
121
|
-
- OS:Windows Server 2016 バージョン1607 (OSビルド 14393.2639)
|
121
|
+
- OS:Microsoft Windows Server 2016 64bit バージョン1607 (OSビルド 14393.2639)
|
122
122
|
|
123
123
|
- MySQL Community Server 8.0.20(Windows X64)
|
124
124
|
|
@@ -126,8 +126,8 @@
|
|
126
126
|
|
127
127
|
* クライアント側
|
128
128
|
|
129
|
-
- OS:Windows
|
129
|
+
- OS:Microsoft Windows 10 64bit 2004 (OSビルド 19041.329)
|
130
130
|
|
131
|
-
- Access 2016 32ビット
|
131
|
+
- Microsoft Access 2016 32ビット
|
132
132
|
|
133
133
|
- MySQL ODBCドライバ 8.0.20(Windows X86)
|