# Access 2013アダプタ制限事項

- サポートする型
- 全処理共通
- テーブル読み取り処理
- 検索系SQL実行処理
- テーブル書き込み処理
- 更新系SQL実行処理
- 主な例外

## サポートする型

本アダプタでサポートする型は以下の通りです。

データ型 | フィールドサイズ | 型名 | サポート | 備考
--- | --- | --- | --- | ---
テキスト型 |  | VARCHAR型 | △ |
メモ型 |  | LONGCHAR型 | △ |
数値型 | バイト型 | BYTE型 | △ |
整数型 | SMALLINT型 | ○ |
長整数型 | INTEGER型 | ○ |
単精度浮動小数点型 | REAL型 | ○ |
倍精度浮動小数点型 | DOUBLE型 | ○ |
レプリケーション ID型 | GUID型 | △ |
十進型 | DECIMAL型 | ○ |
大きい数値型 |  | BIGINT型 | × |
日付/時刻型 |  | DATETIME型 | ○ |
通貨型 |  | CURRENCY型 | ○ |
オートナンバー型 | 長整数型 | COUNTER型 | ○ |
レプリケーション ID型 | GUID型 | △ |
Yes/No型 |  | BIT型 | ○ |
OLE オブジェクト型 |  | LONGBINARY型 | ○ |
ハイパーリンク型 |  | LONGCHAR型 | ○ |
添付ファイル |  | LONGCHAR型 | △ | 添付ファイル名を取得します。

- ○:サポートします。
- △:サポートしますが、制限事項があります。
- ×:サポートしません。

## 全処理共通

### 仕様制限

- テーブルブラウザの[テーブル関連情報]に関連するテーブルは表示されません。
- テーブル名に「{ 」「}」(半角波括弧)を含むテーブルを使用することはできません。

### 注意事項

- Accessファイルロックについて
  Accessアダプタの設定や実行などをする際に、Accessから情報を取得するためにlaccdbファイルまたはldbファイル(ロックファイル)が作成されます。
  ロックファイルの生成と破棄のタイミングは以下の通りです。
  - 生成:アダプタのプロパティでグローバルリソースを選択、またはグローバルリソースが設定されているアダプタのプロパティ設定ダイアログを開く
    破棄:プロジェクトを閉じる
  - 生成:デザイナからスクリプトを実行
    破棄:実行終了時
  - 生成:外部ツール(トリガーやScriptRunnerなど)からサービスを実行
    破棄:実行終了時

## テーブル読み取り処理

### 仕様制限

- レプリケーションID型
  - 読み取ることはできません。
- テキスト型
  - 文字列長ではなくバイト長で取得されます。
- メモ型
  - 全角文字が特定の位置に存在する場合、データを正常に取得することができません。
    問題の詳細、回避策については、Microsoftサポートチームブログ(http://blogs.msdn.com/b/jpsql/archive/2011/09/26/odbc-api-mdb.aspx)の「ODBC API を使用して mdb ファイルからメモ型データを取得する方法」を参照してください。
- 添付ファイル型
  - 添付ファイルがない場合、空文字が取得されます。
- 以下の条件に合致するテーブルから数値型のデータを取得した場合、正しいデータが取得できない場合があります。
  - テーブルの最初のカラムがテキスト型で、フィールドサイズが「9」である。
  - フィールドサイズが「9」のテキスト型のカラムと数値型のカラムのデータを同時に取得する。
- テーブル名が引用符で囲われた状態でもテーブル名の大文字小文字は区別しません。

## 検索系SQL実行処理

### 仕様制限

- レプリケーションID型
  - 読み取ることはできません。
- テキスト型
  - 文字列長ではなくバイト長で取得されます。
- メモ型
  - 全角文字が特定の位置に存在する場合、データを正常に取得することができません。
    問題の詳細、回避策については、Microsoftサポートチームブログ(http://blogs.msdn.com/b/jpsql/archive/2011/09/26/odbc-api-mdb.aspx)の「ODBC API を使用して mdb ファイルからメモ型データを取得する方法」を参照してください。
- 添付ファイル型
  - 添付ファイルがない場合、空文字が取得されます。
- 以下の条件に合致するテーブルから数値型のデータを取得した場合、正しいデータが取得できない場合があります。
  - テーブルの最初のカラムがテキスト型で、フィールドサイズが「9」である。
  - フィールドサイズが「9」のテキスト型のカラムと数値型のカラムのデータを同時に取得する。

### 注意事項

- Accessの仕様により、一部使用できない関数があります。
  使用できない関数の詳細については、Office support(http://office.microsoft.com/en-us/access-help/turn-sandbox-mode-on-or-off-to-disable-macros-HA102749579.aspx)の「Turn sandbox mode on or off to disable macros」を参照してください。

## テーブル書き込み処理

### 仕様制限

- バイト型
  - 書き込む列の型にバイト型が含まれている場合、バッチ更新処理はサポートしていません。
- 添付ファイル型
  - 書き込むことはできません。
- テーブル名が引用符で囲われた状態でもテーブル名の大文字小文字は区別しません。

## 更新系SQL実行処理

### 仕様制限

- バイト型
  - 書き込む列の型にバイト型が含まれている場合、バッチ更新処理はサポートしていません。
- 添付ファイル型
  - 書き込むことはできません。

### 注意事項

- Accessの仕様により、一部使用できない関数があります。
  使用できない関数の詳細については、Office support(http://office.microsoft.com/en-us/access-help/turn-sandbox-mode-on-or-off-to-disable-macros-HA102749579.aspx)の「Turn sandbox mode on or off to disable macros」を参照してください。

## 主な例外

例外名 | 原因 | 対策
--- | --- | ---
java.sql.SQLException | [Microsoft][ODBC Microsoft Access Driver] テーブル '<テーブル名>' はほかのユーザーが排他的に開いているか、すでにユーザー インターフェイスを介して開いているので、プログラムによって操作することはできません。 | ほかのプロセスで対象のaccdbまたはmdbファイルが使用されています。 | ODBCデータソースで指定されたAccessのaccdbまたはmdbファイルを確認してください。
[Microsoft][ODBC Microsoft Access Driver] ファイル '(不明)' が見つかりませんでした。 | accdbまたはmdbファイルが見つかりません。 | ODBCデータソースで指定されたAccessのaccdbまたはファイルを確認してください。
[Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。 | ODBCデータソースが見つかりません。 | グローバルリソースの[ODBCデータソース名]を確認してください。
[Microsoft][ODBC Microsoft Access Driver] 入力テーブルまたはクエリ '<テーブル名>' が見つかりませんでした。 | テーブルが存在しないか、または名前が不正です。 | [テーブル名]で指定したテーブルが存在していること、または名前が正しいことを確認してください。