ACCESSエラーとその対処方法

 

ACCESS初心者のために、実際に発生したエラーとその対処方法を書きました。
なお、環境の違い、プログラムロジックの違いなどがあり、
あくまでも問題解決の1例、ヒントとしてとらえて下さい。

開発環境
Access2000〜Access2007
終了は[×](閉じる)
 
ヒント集
ACCESS実行時エラー ACCESSエラー
   
 
よくある質問 パソコントラブル情報
ACCESS実行時エラー
Q:実行時エラー'13' 型が一致しません。
Q:実行時エラー'438' このオブジェクトは、このプロパティまたはメソッドをサポートしていません。
Q:実行時エラー'2102' フォーム名'F_受注登録'が不正です
Q:実行時エラー'2105' 指定したレコードに移動できません
Q:実行時エラー'2110' コントロール'請求NO'にフォーカスを移動することはできません
Q:実行時エラー'2185' コントロールがフォーカスを取得していないときに、コントロールプロパティまたはメソッドを参照することは出来ません。
Q:実行時エラー'2451' レポート名'明細票'の指定が間違っています。または、参照しているレポートが閉じているか、存在しません。
Q:実行時エラー'2465' 指定した式で参照されている'TESD2'フィールドが見つかりません
Q:実行時エラー'2493' このアクションを実行するには[オブジェクト名]引数が必要です。
Q:実行時エラー'3011' オブジェクト"在庫.xls"が見つかりません。
Q:実行時エラー'3051'  ファイル'\\abc001\aaa\abc.mdb'を開くか、書き込むことができませんでした。
他のユーザーが排他的に開いているか、データの表示と書込みを行う権限がありませんでした。
Q:実行時エラー'3070' 'xxx'を有効なフィールド名、または式として認識できません。
Q:実行時エラー'3075' クエリ式'[処理年月] = ##'の構文エラーです。
Q:実行時エラー'3078' 入力テーブルまたはクエリ"在庫クエリ"が見つかりません。そのテーブルやクエリが存在しているか、または名前が正しいことを確認して下さい。
Q:実行時エラー'3101' フィールド'業者コード'とキーが一致しているレコードをテーブル'業者'で探すことができません。
Q:実行時エラー  キー違反です  一般SQLエラーです  [Microsoft][ODBC SQL Server Driver]SSPIコンテキストを生成できません。
 
ACCESSエラー
Q:正しいのに、どうしてもエラーになる時は。
Q:実行すると「パラメータの入力」画面が表示される
Q:このフィールドに入力した値が不正です。
Q:このオブジェクトに値を代入することはできません。
Q:このフィールドのメソッド、データが見当たりません。
Q:セクションの幅がページ幅よりも広く、はみ出す部分に印刷される項目がないため、一部のページが白紙になります。
Q:#Errorが表示される。
Q:イベントプロパティに指定した式クリック時でエラーが発生しました。
Q:MDEが作成できない、MDEが動かない
 



 
■ ACCESS実行時エラーl


Q:実行時エラー'13' 型が一致しません。
A:変数にするには"'" & 変数 & "'" でくくる
 誤:Me![cbo商品].DefaultValue = Me![cbo商品].ItemData(0)
 正:Me![cbo商品].DefaultValue = "'" & Me![cbo商品].ItemData(0) & "'"


Q:実行時エラー'438' このオブジェクトは、このプロパティまたはメソッドをサポートしていません。
A:Filterでテキストを記入すべきが、コマンドボタンを記入していた。
 入力誤りが多い


Q:実行時エラー'2102' フォーム名'F_受注登録'が不正です。
A:フォーム名'F_受注登録'が存在しない。
 入力誤りが多い

Q:実行時エラー'2105' 指定したレコードに移動できません
A1:「更新できないクエリ」だった。クエリを修正する
 「更新できないクエリ」は「このレコードセットは更新できません」と表示される。
「更新できないクエリ」とは
クエリー内で集合関数(SUMなど)を使っている
ユニオンクエリーを使っている
結合しているテーブルで1対多の関係が保たれていない時
結合しているテーブルがあまりに多く複雑な時(一つづつ外すと分かる)

A2:新規レコードの時に、DoCmd.GoToRecord , , acPrevious  を実行した。
If Me.NewRecord = False Thenを入れて抜ける。



Q:実行時エラー'2110' コントロール'請求NO'にフォーカスを移動することはできません
A:'請求NO'のプロパティの使用可能が「いいえ」になっていた
 

Q:実行時エラー'2185' コントロールがフォーカスを取得していないときに、コントロールプロパティまたはメソッドを参照することは出来ません。
A:
Private Sub 在庫区分2_Enter()
    '再クエリ
    Me!在庫区分2.Requery

    'コンボボックスの自動ドロップダウン
    Me!在庫区分2.Dropdown
End Sub

Me!在庫区分2.DropdownがPrivate Sub 在庫区分1_Enter() に入っていた

 

Q:実行時エラー'2451' レポート名'明細票'の指定が間違っています。または、参照しているレポートが閉じているか、存在しません。
A:レポートから起動すべきが、直接フォームから起動している
 レポートから起動する。
 

Q:実行時エラー'2465' 指定した式で参照されている'TESD2'フィールドが見つかりません
A:項目名の入力誤り 
 誤:'TESD2'   正:'TESTD2'
 

Q:実行時エラー'2493' このアクションを実行するには[オブジェクト名]引数が必要です。
A:引数がない 
 誤:DoCmd.Close acReport
 正:DoCmd.Close acReport, "明細表"
 

Q:実行時エラー'3011' オブジェクト"在庫.xls"が見つかりません。

A:ファイル名、テーブル名が違っている 
 ファイル名の入力誤り
 エキスポート命令を誤ってインポート命令で実行した。
 
Q:実行時エラー'3051'  ファイル'\\abc001\aaa\abc.mdb'を開くか、書き込むことができませんでした。
他のユーザーが排他的に開いているか、データの表示と書込みを行う権限がありませんでした。
A:
'\\abc001\aaa\abc.mdb'のネットワークがつながっていなかった
 

Q:実行時エラー'3070' 'xxx'を有効なフィールド名、または式として認識できません。
A:    
Me.Recordset.FindFirst "[請求NO]=" & Me.請求一覧
 

Q:実行時エラー'3075' クエリ式'[処理年月] = ##'の構文エラーです。
A:
Me.Filter = "処理年月 = #" & Me![test2] & "#"  で test2がNULLになっていた。

----------------------------------------------------
Q: 実行時エラー'3075'  クエリ式'(([jisekiymd] BETWEEN #20090807# AND #20090807#) and (aacd = '00') and (bbcd = '11')'の日付構文エラーです
----------------------------------------------------

日付抽出を最初は日付形式だったが後で文字形式に変更した時、ここも#20090807#から'20090807'に直し忘れた

これはダメ
DoCmd.OpenReport "R生産日報", acViewNormal, _ , "([生産日] BETWEEN #" & Me!txt開始日付 & "# AND #" & Me!txt終了日付 & "#) and (kouteicd = '" & Me![cbo工程].Value & "')"


これがOK
DoCmd.OpenReport "R生産日報", acViewNormal, _ , "([生産日] BETWEEN '" & Me!txt開始日付 & "' AND '" & Me!txt終了日付 & "') and (kouteicd = '" & Me![cbo工程].Value & "')"



Q:実行時エラー'3078' 入力テーブルまたはクエリ"在庫クエリ"が見つかりません。そのテーブルやクエリが存在しているか、または名前が正しいことを確認して下さい。
A:
Private Sub 在庫区分_BeforeUpdate(Cancel As Integer)
     '在庫区分名の取得
     Me!在庫区分名 = DLookup("在庫区分名", "在庫区分クエリ", _
     "在庫区分ID = '" & Me!在庫区分ID & "'")
End Sub

「在庫区分クエリ」が間違っていた。




Q:実行時エラー'3101' フィールド'業者コード'とキーが一致しているレコードをテーブル'業者'で探すことができません。
Me.Requeryで発生

A:本来の原因はキーの不一致だが、
追加モードのDoCmd.GoToRecord , , acNewRecが実行されていたため、このエラーが出た
CancelのMe.Undoを先に実行すると直った。
(直接のエラーとは関係ないが回りまわってこれが原因となった)
 

Q:実行時エラー  キー違反です  一般SQLエラーです  [Microsoft][ODBC SQL Server Driver]SSPIコンテキストを生成できません。

A: サーバに登録したデータベースユーザが有効になっていない。

SQL Serverを再立ち上げ(停止→開始)することで有効になります。

 

 
■ ACCESSエラー


Q:正しいのに、どうしてもエラーになる時は。
A:
  DBの最適化を行うとうまくいく時がある。
  


Q:実行すると「パラメータの入力」画面が表示される
A:未定義の項目名を使用している時、表示される
 入力誤りが多い 
  


Q:このフィールドに入力した値が不正です。
A:項目にNULLが入っていた。
  


Q:このオブジェクトに値を代入することはできません。
A:数値項目に文字を転送していた。
  


Q:このフィールドのメソッド、データが見当たりません。
A:「txt運搬」の計算式で発生した。
コード記述は別PGの「txt運搬」をコピーした。
「txt運搬」を「txtunpn」に置き換えしたら動いた。

「txtunpn」を「txt運搬」に戻したら動いてしまった。
コードの日本語コピーは危ないのか原因不明で直ってしまった。
  


Q:セクションの幅がページ幅よりも広く、はみ出す部分に印刷される項目がないため、一部のページが白紙になります。
A:規程のページ幅より広く指定している。
 B4の場合、257×364mm なので、
 364> レポートプロパティ幅+ページ設定の余白「左」+「右」である事
例 364 > 333+20+10=363  でOK
  


Q:#Errorが表示される。
A1:コントロールソースの式が間違っている。
A2:コントロールソースの式が正しくてもエラーになる。
  コントロールソース:=IIf([在庫区分]="00","",[在庫区分])
   これは、名前も「在庫区分」にしていた。--->txt在庫区分に変更する。
  


Q:イベントプロパティに指定した式クリック時でエラーが発生しました。

サーバーのAccess(mde、accde)を実行する時、自分のパソコンではエラーが出ないが、 他県のパソコンで実行すると以下のエラーが出てしまう????

--------------------------------------------
イベントプロパティに指定した式クリック時でエラーが発生しました。
クエリ式 'Mid(dbo_t_jssagyo.jituseiymd,1,4) & "/" & Mid(dbo_t_jssagyo.jituseiymd,5,2) & "/" & Mid(dbo_t_jssagyo.jituseiymd,7,2)' の この関数は式では使用できません
--------------------------------------------

原因--------------------------------
2002-2003ファイル形式をAccess2007でMDEを作成したのが原因と思われる

回答A1----------------------------
2003のファイル形式はAccess2003でMDEを作る

Access2003のパソコンに移してMDEを作成する

MDEを実行すると、正常に処理された。OKホッ!!


回答A2----------------------------
新のパソコンはAccess2007なのでAccess2007で動くようにする。

1.ファイル形式を2007にして、Access2007でMDE(accde)を作成する

(1)Access2007のパソコンで立ち上げる
(2)Officeボタン→名前を付けて保存→データベースを他の形式で保存(Access2007データベース)
(3)保存先:xxxxx.accdb→保存
(4)このデータベースはAccess2007ファイル形式にアップグレードされました  →[OK] →閉じる

(5)xxxxx.accdbをWクリックして立ち上げる
(6)「データベースツール」タブ→「ACCDEの作成」→保存先:xxxxx.accde [保存] →閉じる

*xxxxx.accdeをWクリックして実行する

結果、同じエラーが出てダメ!!  2007ファイル変換はダメだ


2.ファイル変換をあきらめて、新規ファイルにオブジェクトをインポートしてファイル形式を2007にする。

(1)Access2007のパソコンで新規に立ち上げる Database1.accdb [作成]
(2)「外部データ」タブ→「Access」(Accessデータベースのインポート)
(3)インポート元ファイル名:xxxxx.mdb ◎現在のデータベースにテーブル〜  [OK]
(4)「オブジェクトのインポート」タブ
「テーブル」タブ→[すべて選択]
「クエリ」タブ→[すべて選択]
「フォーム」タブ→[すべて選択]
「レポート」タブ→[すべて選択]
「マクロ」タブ→[すべて選択]
「モジュール」タブ→[すべて選択]
[OK] 「インポート操作の保存」そのまま[閉じる]
(5)いったん閉じる(保存のため)

(6)Database1.accdbをWクリックして立ち上げる
(7)「データベースツール」タブ→「ACCDEの作成」→保存先:Database1.accde [保存] →閉じる

*Database1.accdeをWクリックして実行する

結果、正常に処理されてOK、無事完了ホッ!!


--------*結論*--------------------
1.MDEを作成する時はファイル形式と同じバージョンのAccessを使用しなければダメだ

----Accessファイル形式-------------Accessバージョン
Access2000ファイル形式    →   Access2000
Access2002-2003ファイル形式  →   Access2003
Access2007ファイル形式    →   Access2007

*「Accessファイル形式」の見方
Access読込→「ナビゲーションウィンドウ(オブジェクトが出ている画面)」の青いバーに表示されている(表示されていない時は「F11」を押す)→
「ABC:データベース(Access2002-2003ファイル形式)」

*「Accessバージョン」の見方
Access読込→ヘルプ→バージョン情報→
「Microsoft Office Access 2003(11.8166.8221) SP3」

2.ファイル形式変換はAccessの「データベースを他の形式で保存」はダメで、「新規ファイルからインポート」の方が良い

3.MDE(ACCDE)を作成する前に必ず、「データベースの最適化/修復」を行う

*「データベースの最適化/修復」の仕方
Access2003の時:ツール→データベースユーティリティ→「データベースの最適化/修復」

Access2007の時:Officeボタン→管理→「データベースの最適化/修復」

  


Q:MDEが作成できない、MDEが動かない
ファイル形式はAccess2003の時で

Access2007でMDEを作成して、MDEを実行したところメニューをクリックしても無反応でAccessを実行できない。
同じAccessを別のパソコンAccess2003でMDEを作成したところ実行中で終了しない。

原因:コンパイルが未完であった

VBA画面で「デバッグ」を見ると「ABCのコンパイル」通常は薄地になっている 
ところがコンパイルが未完の時は「ABCのコンパイル」は薄地になっていない。

薄地になっていなかったので、「ABCのコンパイル」を実行してオブジェクトの保存をしたら直った。

  


 
このページTOPへ
Mhome.gif

Copyright © 2006-2006 s-kitagawa