Accessの扱い方

第10回 Access2000(mdb)からAccess2010(accdb)に変換する

Sponsored Links




2.変換後のエラー対処方法

1)OpenRecordset メソッドを実行すると “型が一致しません” というエラー メッセージが表示される。

実行時エラー ’13’: 型が一致しません    (登録処理用の画面フォームを開いたときに表示されました)

この問題を解決するには、「Visual Basic Editor」を使用して、オブジェクトコードを記述している方のみの対処方法です。

<レコードの新規登録時のオブジェクトコード>

原因
 Data Access Objects (DAO) ライブラリと ActiveX Data Objects (ADO) ライブラリの両方に対する参照がプロジェクトに含まれている場合、Recordset オブジェクトを宣言すると、複数の Recordset エントリが一覧に表示されることがあります。

このエラーは、どちらの Recordset エントリを一覧から選択するかに関係なく、「参照設定」 ダイアログ ボックスで ADO ライブラリの優先順位を DAO ライブラリよりも高くした場合に発生します。

補足説明
Accessの「参照設定」 ダイアログ ボックスって、はじめ、知らずに使用していますが、結構、大事な部分ですので、覚えておいた方が良いと思います。

特に、「ADO」と「DAO」の違いです。
スタンドアロンで、Accessを使い続けるなら、どうでもよいのですが、将来、SQLサーバーにアップグレードする場合は、「DAO」のオブジェクトは使えません。 「ADO」でコーディングしておく必要が有ります。

スタンドアロン又はファイル共有で、Accessを使い続けるなら、「DAO」でOKです。
安定したJETエンジン(昔からあるデータベースエンジン)が使用できます。
詳細は、下記の記事を参照願います。
第7回 ACCESSで Jet 4.0 データベースの動作環境を最適に保つ方法

 

参照設定 画面

補足説明
「参照設定」 ダイアログ ボックスを開くには、Visual Basic Editor で、「ツール」 メニューの「参照設定」 をクリックすると開けます。 Visual Basic Editorは開けますよね?

対処方法> 1)又は、2)のどちらかを選択する。

1) ActiveX Data Objects (ADO) ライブラリを参照設定から外す。

2) Dim  Rst  As  DAO.Recordset
下線のようにdao.をRecordsetの前に付加するとエラーは表示されなくなります。

3)日付選択カレンダーがテキストボックスの横に関連して表示されない

独自に、カレンダーフォームを作成して、入力できるようにしていましたが、Access2007から「日付選択カレンダ」という機能が追加されいますので、独自のカレンダーフォームの処理機能が使えなくなっています。
それで、このオブジェクトコードを記述している部分を削除し、プロパティから設定ました。

シンプルになって、こりゃいいや!。。と思いきや。。。「日付選択カレンダー」が表示されない入力項目があります。
なんで?

上図のように、日付選択カレンダーが表示されない場合の問題
該当のフォームを開き、編集モードにして、日付を入力する項目のプロパティを表示します。

(1)日付選択カレンダーがテキストボックスに関連して表示される条件は、
・コントロールソースが日付/時刻型
・非連結コントロールの場合、書式が日付系書式のいずれかが設定されている。

(2)コントロールなどに何らかの「定型入力」プロパティが設定されていると動作無効となり、カレンダは表示されません。

「書式」タブではなく、「データ」タブの定型入力です。。ここに書式が設定されていると表示されませんので注意です。

なお、使用しない場合は、「書式」タブの日付選択カレンダーの表示/ShowDatePickerプロパティで設定できます。

本日の変換後のデバック作業はこれで終了しますが、もう少し、システムの機能を動作させて、不具合が無いかチェックしたいと思いますので、問題があった場合には、また記載します。

——————————————————————————
追記1> 2013年5月
——————————————————————————
今回の訪問の目的は、会社のパソコンの入れ替え作業とAccess2000で作成したアプリケーションをAccess2010
にアップグレードすることでした。

パソコンのOSは、Windows XPからWindows 7に上げて、Access2010のRUNTIMEで動かそうとしたのですが、1台購入したパソコンが、Windows7の64ビットマシンでした。  32ビットマシンは 問題なく、動くのですが、64ビットマシンの方はエラーが発生します。

Access2010の Runtime も64ビット版を使用しているのですが、だめです。
どうやら、32ビットのWindows APIが含まれているせいなのか?  とうとう時間切れで、札幌に戻ってから調査する予定です。  最悪、OSを64から32ビット版にインストールしなおす覚悟でいます。

皆さんも、Accessをアップグレードする時、Windowsの64ビット版は、まだ選択しない方が無難ではと思います。
同じ、マイクロソフトの製品なので、大丈夫だろうと、軽く考えていたのが、間違いでした。

問題
「エラー メッセージ “データベースに含まれている VBA プロジェクトを読み取れないため、データベースを開くことができません” が、Access 2010 でコンパイル済みの Microsoft Access MDE、ACCDE、または ADE ファイルを開くと表示される。」

・Microsoft サポートを参照して下さい。
http://support2.microsoft.com/kb/2533794

この問題は、Access 2010 SP1 が新しいバージョンの VBE7.dll ファイル (Version 7.00.1619) を使用することが原因で発生します。

・Access 2010 RTM で作成された MDE、ACCDE、または ADE ファイル

 
ファイルの種類 Access 2010 RTM Access 2010 SP1
32 ビット MDE、ACCDE、または ADE 使用可能 使用可能
64 ビット MDE、ACCDE、または ADE 使用可能 エラーが発生

・Access 2010 SP1 で作成された MDE、ACCDE、または ADE ファイル

 
ファイルの種類 Access 2010 RTM Access 2010 SP1
32 ビット MDE、ACCDE、または ADE エラーが発生 使用可能
64 ビット MDE、ACCDE、または ADE エラーが発生 使用可能

 

——————————————————————————
追記2> 2013年5月
——————————————————————————
「Microsoft Office 2010 Service Pack1」をインストール(適用)するとAccessに不具合が発生します。
壊れて起動しない。

・Office 2010 SP1 全パッケージ一覧 サイト
http://support.microsoft.com/kb/2510690

上記サイトで、Accessに関連する個別のパッケージです。
・Microsoft Office 2010 Service Pack 1(KB2460049)
・Microsoft Office 2010 Language Pack Service Pack 1(KB2460043)
・Microsoft Access 2010 Runtime Service Pack 1(KB2460015)
・Microsoft Access Database Engine 2010 Service Pack 1(KB2460011)

解決方法としては、デコンパイルするという方法がありました。
デコンパイルの手順
1)該当ファイルのバックアップを取っておく。
2)コマンドラインスイッチ /decompileを使って、「スタート」メニューの「ファイル名を指定して実行」からデコンパイル
ファイルフルパス /decompile
例えば、 C:\Users\yh\Desktop\顧客管理.accdb /decompile と「ファイル名を指定して実行」に入力してOKをクリック
3)データベースが起動しますので、データベースを閉じる。
4)通常の方法でデータベースを開く。

・「Microsoft Office 2010 Service Pack 1」KB2460049が公開されています。

——————————————————————————
追記3> 2013年5月
——————————————————————————
私の場合、Office 2010 SP1を適用していませんが、起動すると突然.accdeが、下記のエラーになり動作しなくなりました。

「データべースに含まれているVBAプロジェクトを読み取れないため、データべースを開くことができません。データべースを開くには、VBAプロジェクト を削除する必要があります。VBAモジュール、フォーム、およびレポートからすべてのコードが削除されます。データべースを開いてVBAプロジェクトを削 除する前に、バックアップコピーを作成することをお勧めします。」

無理矢理、フォームが起動するようにエラーを潜り抜けると、フォームは開きますがモジュールが全部、吹っ飛んでいました(エラーの警告通りになっていました)。

フォームを起動せずに、データベースウインドウだけ開いて、最適化処理で直りましたが。。。。何だか不安です。
いつ、Access DBが破損するか分からず、厄介です。

Access2002—>Access2010に変換して、Access2010の環境で使用しています。

 

——————————————————————————
追記4> 2014年1月
——————————————————————————
Access2002で作成したmdbは、Access2007の「RunTime」で起動すると、上記、Access2010で発生するエラーが発生しません。

ですので、Access2002で作成したmdbをとりあえず、そのまま動かすなら、Access2007のRunTimeをインストールすることをお勧めします。

・Access2007のRunTime ダウンロード サイト
http://www.microsoft.com/ja-jp/download/details.aspx?id=4438

 

AccessのVBAのコーディング例でしたら、下記の書籍が、私も使っていますが、大変参考になります。
■(アクセス書籍の「Access2002 表現百科」がお奨めの一冊です)

 

Accessマクロ&VBAのプログラミングのツボとコツがゼッタイにわかる本


マクロとVBAの違いなど、基本的に覚えておきたいことから、サンプルアプリを作成しながら学べる一冊です。

 

Access VBA 実践マスターガイド~仕事の現場で即使える


付属のCD-ROMには、カスタマイズすることで、読者の環境でも利用できるアプリケーションが収録されています。

 

AccessVBA逆引き大全 600の極意  Office365/2019/2016/2013/2010対応

この処理、どう記述すれば良いんだっけ?という時、コピペで使用に耐えうるサンプルがたくさん掲載されていますので、一冊は持っていたい、欲しい参考書です。 多分、ずーっと使うでしょう。

関連記事
「Office 2019」に入っている データベース作成 Access 2019 の新機能について

Microsoft社のデータベース作成ソフト「Accessの勧めと言いたいけれど。。。」

32Bit版から、64Bit版の「Windows 10」にパソコンごと入れ替えた時に、Office365(Office2016)のAccess2016を使用する場合の注意点。

先月末、ある日、突然、Windows10で使用している「Access 2016」で動かしているアプリケーションが動かなくなるです。「Access 2010」でも起こっている問題でもあります。

マイクロソフト「Access」の便利な機能を使って、業務アプリケーションを作成して活用する。
Access 2013 の新機能とAccess 2013 で廃止、変更された機能とバージョンアップの必要性について

Accessについて 連載記事
第1回 ACCESS(アクセス)データベース作成ソフトを使ってみたいと思っている方へ
第2回 Accessのバージョン、コンポーネンツ、EXCELからの移行、配布形態、拡張性について
第3回 ACCESS 2007の情報
第4回 ACCESS トラブル対処の情報1「mdbが壊れてしまった時」
第6回 ACCESS トラブル対処の情報2 「メモリ不足」エラーについて
第7回 ACCESSで Jet 4.0 データベースの動作環境を最適に保つ方法
第8回 Access 2000とMSDEを利用してクライアント/サーバーシステムを構築する
第9回 ACCESS 2010の情報
第10回 Access2000(mdb)からAccess2010(accdb)に変換する

 

Accessデータベース作成講座
第1回 ACCESS(アクセス)データベース作成ソフトについて
第2回 Accessで、「得意先マスター保守」処理画面を作成してみる。
第3回 Accessで、「得意先マスター保守」処理画面を作成してみる。
第4回 マイクロソフト ACCESS(アクセス)でデータベースを作成 検索・抽出処理
第5回 Access2010でパスワード管理データベースを作成してみよう。
第6回 EXCELで作成した住所録をAccessに取り込んではがき宛名印刷をしてみる。
第7回 郵便局の郵便番号簿データをダウンロードして、郵便番号・住所検索用のアプリをAccessで作成してみる。
第8回 マイクロソフト ACCESSでデータベースを作成する時のプログラムソースのコーディングについて

Sponsored Links




コメント