AccessとLinux

中小企業での販売管理プログラムの作成についての所感

コードが削除されてしまう

2017年09月30日 09時05分10秒 | Weblog
昨日(2017/9/29)から突然、給与計算ソフトがまともに開かなくなってしまった。給与計算ソフトはパスワードを設定している。パスワードを設定していない販売管理ソフトはいつも通り開く。

給与計算ソフトを開こうとすると、パスワードの入力画面が表示されたあと、暗号化されたコードが解析できないような表示が出て、「コードを全削除するか?」というメッセージボックスが開く。うっかり、「OK」してしまうと、コードが全て削除される。「キャンセル」すると、コードはそのままで閉じてしまう。

この給与計算ソフトはAccess97で作成したものをAccess2003、Access2007、Access2016とバージョンアップしたもの。現在はWindows10 + Access2016(64bit)で、今年の1月から問題なく使っていた。

パスワードを設定していない販売管理ソフトの方はコードが削除されたりしないので、「パスワード+暗号化」の部分が自動更新されたOffice2016でうまく引き継ぎされなかったのだと思う。

残したままになっているXP環境で問題の給与計算ソフト(accdb)を開いてみると、普通に開く。調べてみると、本来表示されないはずの「データベースツール」のリボンに「データベースのエンコード/デコード」が表示されている。

https://answers.microsoft.com/ja-jp/msoffice/forum/msoffice_access-mso_winother/%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89/f9ecc396-1365-48c0-8d7e-a95b5123e04e?auth=1

おそらく、Accessのバージョンアップの過程で暗号化がうまく引き継ぎされていないためにコードがうまく認識されないていないのだろう。ちゃんと動作はするのに。ちなみに「データベースのエンコード/デコード」をクリックしても「エンコード/デコード」が完了しない。また、パスワードを設定しているにもかかわらず、「パスワードを使用して暗号化」と表示されていて、解除ボタンは表示されない。

困ってしまった。WindowsXP+Access2007では動作はするものの、パスワードは解除できないし、Windows10+Access2016(64bit)ではコードが削除されてしまう。結局、WindowsXP+Access2007で開いて新たに作ったaccdbファイルに全てのオブジェクトをエクスポートした。新たに作ったaccdbにはパスワードを設定していないので、Windows10+Access2016(64bit)で開いてもコードは削除されないのではないかと思う。月曜日に会社に行って確認してみる。(2017/10/2 パスワードが外れて、コードも削除されなかった。)

全くひどい話しだ。バックアップを取っていたから良かったものの、もし、バックアップがなかったら、全てのコードを失ってしまうところだった。

Access97の時はパスワードの設定だけで、暗号化といった動作はしていなかったように思うのだが、どのバージョンからそうなってしまったのか。暗号化するならするで、ちゃんと動作するようにしてもらいたいものだ。だいたい、パスワードを設定するようなファイルは機密性の高い大事なファイルなのだから。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Access64bit化の続き

2017年09月23日 13時36分00秒 | Weblog
dllの呼び出しでWindowsハンドルが引数だったり、戻り値だったりすることが結構ある。大抵、変数名はhnd。この型が何になるのかよくわからなかった。
今回、これまで使っていたリコーのifxapi32.dllからifxapi64.dllに変更するのに、64bit版Accessでhndの型を指定しなければならなかった。
リコーの64bitサンプルプログラムはCかC++かC#かよくわからないのだが、hndはLongになっていた。64bit版のLongが何ビットになるのかこれまた、よく知らない。やってみた結果、Access64bit版ではLongLong型でうまくいった。hndは8バイト(64bit)ということのようだ。

現状ではAccessの32bit版と64版を併用していて、32bit版ではLongLong型は定義できないので、Dimする時はコンパイル定数VBA7を使って、64bit版ではLongLong型、32bit版ではLong型としておかなければならない。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする