access2016で簡単なシステムを作成して納品した所
お客様から
Officeの導入されていないPCへAccess2016ランタイムをインストールしてテストしたところ
エラーになってしまい、起動すらできない状態です。
エラーになってしまい、起動すらできない状態です。
「実行時エラーが発生したため、このアプリケーションの実行は中断しました。
アプリケーションを続行できません。システムはシャットダウンされます。」
という報告を受けて調査しました。
そもそも今回のシステムは凄く簡単な画面で、メニュー画面と実行ボタンしかないのです。
エラーは起動時に発生するというので起動時の処理を見ても
簡単なことしかしていなくて、しかもそのソースコードは、今まで使いまわして使ってきたソースなのでびっくり。
access2016ランタイムは以前のランタイムよりチェックが厳しくなったのか?
はっきりしたことはわかりません。わからないけれど見直した箇所は以下の通り
Set rec = db.OpenRecordset(strSql, dbOpenDynaset) If rec.EOF = False Then
End If
としていた所を
Set rec = db.OpenRecordset(strSql) If rec.EOF = False Then
End If
に変更したらエラーが発生しなくなりました。
ちなみにaccess本体がインストールされている環境ではエラーになりません。
あくまでもaccessランタイム2016環境のみ
ということは、今まで作成したaccessたち
ランタイム2016環境にしたら動かないのかな~と思うと怖い。
OpenRecordsetの引数を指定しないとdbOpenTableがデフォルトになったと思います(確か)
dbOpenDynasetでEOFってダメなんだっけ?accessではDAOよりADOでやることが多かったから
この辺は本当に記憶曖昧。
コンパイルエラーは発生していないし変数宣言もちゃんとしている
access本体がインストールされている環境では動くのにランタイムでは動かないっていうのは
本当に勘弁してほしい。
コメント