Microsoft Access2013 環境依存文字が文字化け
Microsoft Access2013 のaccdbファイルをテーブル用、フォーム用と分けて作成してDB操作を以下のようにしたとき、環境依存文字(「立法メートル」等)が文字化けしてしまいました。
- VBAにてADOを使用
- 接続はODBC
- パラメータクエリを使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
Dim sql As String Dim oCon As ADODB.Connection Dim command As ADODB.command Dim param As ADODB.Parameter Dim count As Integer ' 新規追加クエリ作成 sql = "INSERT INTO m_tani(" _ & " kbn_id" _ & ", tani" _ & " ) VALUES (" _ & ", ?" _ & ", ?" _ & ")" ' DB接続する Set oCon = New ADODB.Connection Call connect_db(oCon) ' コマンドオブジェクト生成 Set command = New ADODB.command command.ActiveConnection = oCon command.CommandText = sql ' パラメータの設定 Set param = command.CreateParameter("kbn_id", adInteger, adParamInput, , 1) command.Parameters.Append param Set param = command.CreateParameter("tani", adVarChar, adParamInput, 255, "㎥") command.Parameters.Append param ' クエリ実行 command.Execute count oCon.Close Set oCon = Nothing Set command = Nothing ' 登録完了メッセージ If (count > 0) Then MsgBox "登録しました。", vbInformation ' 一覧を表示 DoCmd.BrowseTo acBrowseToForm, "単位一覧" Else MsgBox "登録できませんでした。", vbInformation End If |
- 接続をOLE DBに変更
1 2 3 4 5 |
Function connect_db(oCon) oCon.ConnectionString = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};" _ & "DBQ=" & CurrentProject.Path & "\テーブル用ファイル.accdb;" oCon.Open End Function |
OLE DB接続
1 2 3 4 |
Function connect_db(oCon) oCon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" _ & "Data Source=" & CurrentProject.Path & "\テーブル用ファイル.accdb;" End Function |
なお、OLE DBに変更したとき、(上記とは別の箇所ですが)ADOでデータにアクセスする記述の部分でODBCでは出ていなかった、予約語のエラーが出ました。
1 |
SELECT COUNT(*) AS count FROM m_jigyosho WHERE id=0 |
1 |
SELECT COUNT(*) AS row_count FROM m_jigyosho WHERE id=0 |