十二支の最後はブタ?

ネットで「中国人女性とのデートで、「中華食べに行こうよ」がNGな理由」という記事の中の、「中国人との会話のツカミは「干支」」というページで次のような一覧が出ていた。
鼠:細心、情熱、感情豊富
牛:正直、勤勉、着実
虎:勇敢、きっぱり
兎:静かな、温和
龍:こころざし強く、頭が良い
蛇:賢い、意思強い
馬:決断力ある、独立
羊:温和、善良、忍耐力強い
猿:明るく、頭が良い
鳥:積極的、進取的
犬:忠実、情熱
豚:純真、正直
日本では血液型で「A型の人は・・・・」とか、星座で「牡羊座の人は・・・」というカテゴリー化をよくするが、中国ではこれが十二支になるっていう話。
それで最後が「ブタ」?「イノシシ」ではないのか?と思って調べてみた。
十二支のルールは中国にあるのだが、その中でも「牛・馬・羊・鳥・犬・豚」は六畜と呼ばれ、古代中国における代表的な家畜を当てたらしい。漢字の「猪」も本来の意味は「ブタ」を意味する漢字だそうだが、日本では古来ブタを家畜として飼っておらず、なぜかイノシシの意味になったようで、そのまま今日最後が「イノシシ」になったのだとか。
しかし、日本でイノシシは猪突猛進、勇ましくまっすぐ印象があるが、あなた「ブタ」年生まれですね、と言われるとちょっと・・・・

Windows 7 SP1で作成したAccessADPがWindowsXPでクラッシュする

Windows 7 SP1にアップデートしたOSでAccessADPプログラムを作成すると、SPなしWindows7やWindowsXPなどでファイルを開いたときにクラッシュする現象。
すでにブログを書いていたと思ったら、書いていなかったので報告しておく。
現象は、ADPファイルの起動時に、「クラスはオートメーションまたは予測したインターフェースをサポートしていません。」というエラーが出るというものだ。
ヒントはこちらから
KB2517589:ADOを使用しているアプリケーションの再コンパイルで互換性に問題が発生する
ADPはデータベース接続オブジェクトしてADOを使用しているが、参照設定のADOバージョンがたとえ同じでも、MDACのADOバージョンが違うために出ているエラーらしい。
なぜこんなことが起こるのかというと、Windows7 SP1でADOが勝手にバージョンアップされ、ファイル名が一緒なのに、バージョンが変わるため、SP1でコンパイルされたプログラムは下位互換がなくなる。
解決方法は、Windows7SP1でコンパイルしたAccessファイルは、それ以外のOSで参照設定のADOを一度外して閉じ、再度参照設定でADOを選択してコンパイルする。これだけ。
ADPでは必ずADOを使用するので関係するが、MDBやACCDBでもADOを使用する場合は注意が必要!

Office 2010 SP1でAccess2010が壊れる現象について

7月分のWindows Updateから「Microsoft Office 2010 Service Pack1:KB2510690」が自動インストール候補に出るようになった。始めは、32ビット版にもかかわらず、32ビット版と64ビット版が2つ出ていたが、8月になってそれは解消された。
が・・・・しかしである。
このOffice 2010 SP1をインストールするとAccessだけは大変なことになる。
今までのAccessファイルをAccess2010で開こうとするとクラッシュするのである。なぜ?と思って、SP1自体アンイストールしていたが、やっと原因がわかった。
まず、そもそも「KB2510690」というパッケージは存在しない。
Office 2010 SP1 全パッケージ一覧 KB2510690
「KB2510690」というのは、Office 2010シリーズすべてのサービスパック1を含む総称であって、個別にパッケージは存在する。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)
っていうところか。
それで、ファイルが壊れる理由というのが、下の記事。
Access2010 SP1適用後に発生する現象について – Microsoft Answers
内容は、SP1の摘要によって、Accessに発生するエラーが3つ。
1) Access 2010 SP1 – You receive random crashes in certain database or when opening the VBA window in those databases after installing Office 2010 SP1
SP1適用後、特定のファイルがランダムにクラッシュ、またはVBEを開くときクラッシュする。
2) Access 2010 SP1 – Reports that are opened programmatically are no longer showing the expected filtered set of records
OpenReportメソッドでWhereConditionが適用されないことがある。
3) Access 2010 SP1 – You receive an error in Microsoft Access using the built-in wizards after installing Microsoft Office 2010 SP1
Access2010/64bitでビルトインウィザードが起動しない。
64ビット版Officeを使用している人は少ないでしょうから、32ビット版で考えると、1のクラッシュするのが最も影響が大きく、今回の原因もまさにこれによるもの。
KB2533794」でVBE7.DLLが更新されるのが根本の問題らしい。
Office2010 SP1 on track for late June (MukkuMuku備忘 頑張るのは明日から)
MukkuMukuさんのブログにはいつもお世話になります。感謝!!
Windows 7 SP1で勝手にADOをアップデートされた現象に似てないか?これは
解決方法としては、デコンパイルするしかないらしい。ADOもコンパイルし直せば問題なかったが、こちらはコマンドを使用しないといけないようだ。
デコンパイルの手順
1.該当ファイルのバックアップをしておく
2.コマンドラインスイッチ /decompileを使ってデコンパイル
 ファイルフルパス /decompile  例えば、 C:\Users\hogehoge\Documents\targetDB.accdb /decompile
3.データベースを閉じる
4.通常の方法でデータベースを開く
ああ面倒だ。結局SP1はインストールできないではないか。早く修正版を出してほしい。
<2011/08/18追記>
もう一度現象を確認しようと思って、Windows UpdateからSP1をインストールしてみた。
パソコンには、RuntimeとVisioも入っているので、インストールされた更新プログラムを確認してみると、
・Microsoft Office 2010 Service Pack 1(KB2460049)
・Microsoft Access 2010 Runtime Service Pack 1(KB2460015)
・Microsoft Viso 2010 Service Pack 1(KB2460061)
の3つがインストールされました。
下の2つはインストールされなかったようです。
・Microsoft Office 2010 Language Pack Service Pack 1(KB2460043)
・Microsoft Access Database Engine 2010 Service Pack 1(KB2460011)
既存のプログラムを起動して、クラッシュ?・・・・クラッシュしません。7月のときは起動するだけでクラッシュしたのに。
前回は32ビット版の他に、64ビット版も出ていて、1回目は両方インストールして失敗、2回目に32ビット版だけになって成功していた。
今回は32ビット版だけになったけど、1回目は一部が失敗(なぜかRuntime SP1のみ成功)、2回目に成功した。
64ビット版の選択が影響しているのか、それとも8月版でこっそり修正されているのか、すぐに現象が出ることはなくなったようなので、しばらくSP1をあてたまま運用を続けてみます。
ちなみに、SP1によってバージョンがどう変わるのかの確認方法は、
Access 2010 SPなし
「ファイル」メニューの「ヘルプ」画面の右側の「Microsoft Access のバージョン情報」では内部バージョン番号しか確認できない。そこで、バージョンの下の「バージョンと著作権の追加情報」というリンクから開く画面で確認することになる。
Access 2010 SPなし
適用前のバージョン番号は、「14.0.5128.5000」
Access 2010 SP1
SP1適用後は「14.0.6023.1000」
Access 2010 SP1
追加情報画面ではSP1の表記が見える。Access 2010とMSOのバージョンがずれるのは何でしょう?と思って調べたら、「MSO」とはOfficeのバージョンのようだ。AccessはOfficeの一部機能として今回はインストールしているので、ExcelやWordともMSOは同じ番号になっている。単体でセキュリティパッチが出るので、それぞれの内部バージョンは別にあるということなるが、今はSP1をあてた直後なので、いずれも「14.0.6024.1000」になっている。