2012年6月、
お客様に提供している「Access2000」で作成した「業務管理システム」をWindows XPで運用していましたが、いよいよ「Windows 7」にOSのバージョンを上げるお話があり、慌てて、Access2010を購入して、自分で使用している「見積・請求管理システム」の変換作業を初めて実施しましたので、覚書ですが、記載します。
「Windows XP」上で、動作している「Access 2000」のmdbファイルは安定していますが、XPのサポートも来年4月で切れてしまいますので、「Access」もバージョンアップの準備をする必要があります。
「Windows XP」の寿命が余りにも長すぎましたので、怠けていましたが、助かっていました。
バージョンアップは宿命です。。。そろそろバージョンアップをしないと、「まずい」です。
<Accessのバージョン履歴とAccessのバージョンで大きく変化のあったのは>
95——>97—–>2000—–>2002——>2003——–>2007——>2010——>2013
1)97—–>2000のとき :
まだ「97」の場合は、もう手遅れに近いです。 早く2000以上のバージョンへ
2)2003——–>2007 :
リボンインターフェースの採用で、機能がどこにあるのか、旧バージョンのユーザーは戸惑う。
3)2010——>2013 :
SQLサーバーへの接続関連が大きく変更されています。
選んだのは、「Access 2010」のアップグレード版です。 1万円ちょっとでした。
私は、パッケージ版を購入しました。 インストールはAccess 2000が入っていましたので、Access 2000を自動で削除して、Access 2010をインストールする方法を選択してインストールです。
・「Access 2010」の情報は、下記記事を参照してみて下さい。
第9回 ACCESS 2010の情報
– 全 体 目 次 –
1.Access2000(mdb)からAccess2010(accdb)に変換する方法
2.変換後のエラー対処方法
Sponsored Links
1.Access2000(mdb)からAccess2010(accdb)に変換する方法
Access2000で作成したmdbをAccess2010で起動します。
右上の「ファイル」をクリックして、左ペインの「保存して発行」をクリックすると、「データベースに名前を付けて保存」が表示されますので、データベースファイルの種類 .accdbを選択して、「名前を付けて保存」のボタンをクリックすると変換して保存されます。
<変換作業前の注意事項1>
尚、データmdbとシステムのmdbに分けて使用している場合は、データ側とシステム側と2回変換作業が必要です。
Accessは、昔からデータとプログラムを分離して管理する機能を有していて、分離させることが可能です。
データのみ格納したmdb 、 オブジェクト(プログラム)のみ格納したmdb の2つの変換作業という意味です。
<変換作業前の注意事項2>
ただ、Access2000とAccess2010が混在しているシステムで、ファイル共有でデータmdbを使用している場合、データmdb を.accdbに変換してしまうと、Access2000側のシステで、.accdbにアクセスできなくなってしまいますので、こんな場合は、データ側は 変換せずにmdbのままで運用します。
他のバージョンも共通ですが、データmdbとプログラムmdbを分割(分離)して使用している場合、プログラムmdbからデータmdbへリンクをとる必要が有りますが、新バージョンから旧バージョンのデータmdbへとリンクを取るのは可能ですが、この逆はできませんので注意が必要です。
変換作業は簡単です。 すぐ終了します。
ここまでは、だれでも、簡単に作業を実施できますが。。。。。。これからです。 エラーが発生しますよ!!
次のページは、2.変換後のエラー対処
Sponsored Links
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