• ベストアンサー

accessの計算エラーについて教えて下さい

accessで画面を更新、表示した値を元に計算を行う場合、タイミングによっては計算にエラ-が出ます(結果が0となる)。多分、画面が値を更新して表示するのに時間を要し、それまでは0もしくは空白となっていた数値を元に計算してしまうためだと思います。画面表示を待って計算に進むプログラミングの方法があれば教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

No.1です。今はAccess2003です。Access2000の頃、苦肉の策で作った例です。的外れかも知れませんが参考になれば‥‥ (1)レポートをプレビューし、プレビューを閉じたら次に進む例 ≪イベントプロシージャ≫ Private Sub cmd工程表_Click()   :  DoCmd.OpenReport 工程表, acViewPreview  Do While is_ReportLoaded(工程表): DoEvents: Loop End Sub ≪モジュール≫ '指定したレポートが開かれている場合、Trueを返す。 Function Is_ReportLoaded(Optional argReportName As String = "") As Boolean  Is_ReportLoaded = False  If argReportName = "" Then   If Reports.Count <> 0 Then    Is_ReportLoaded = True    Exit Function   End If   For i = 0 To Reports.Count - 1    If Reports(i).Name = argReportName Then     Is_ReportLoaded = True     Exit Function '見つかった時点で終了する。    End If   Next End Function (2)フォームを素早く開くには‥‥  事前に「非表示」で開いておき、使う時に標準で開き直す。 (3)時間を遅らすモジュールの例 '引数の秒数になるまでDoEventsを連発する Public Function wait_Seconds(ByVal argSec As Long) As Boolean  lngSec0 = CLng(Timer)  Do   lngSec1 = CLng(Timer)   DoEvents  Loop Until Abs(lngSec1 - lngSec0) > argSec  wait_Seconds = True Exit_wait_Seconds:  Exit Function

KEN200908
質問者

お礼

再びありがとうございます。 時間を遅らすモジュールで行けそうな気がしてきました プログラムに組み込み試したいと思います。

その他の回答 (1)

回答No.1

 長年、Accessを使っていますが(今、使っているバージョンは2003)、そういう経験はありません。 Access2.0の頃の話ですが、「マクロで計算させるより、モジュールを使った方がよい」と Micorosft のサポートに言われたことがあります。  もっと具体的に書かれた方が解決が早いと思うのですが‥‥ (“元”と“基”では意味がまるっきり変わりますので、その辺も気を付けて)

KEN200908
質問者

お礼

早速ご回答ありがとうございました。こちらの操作が不慣れでお礼が遅くなりました。現在access2007ですが、質問のプログラムではモジュールを使っているのですが、やはり画面表示が遅くて(いくつかの計算をして表示更新させているため)、表示前に演算の方が先に進んでエラーが出てしまうようです。そうでない場合がほとんどですが。BASICではfor loop などを使って、一息タイミングをとることができたのですが、accessでは適当なものがないかと思って質問してみました。

関連するQ&A

  • アクセスのクエリで空白を0として計算したい

    アクセスのクエリで1・2列目に数値データを入れておき、3列目で合計を表示させたいのですが、1・2列目に空白セルがある場合には0(ゼロ)として計算したいのです。(データが空白だと、3列目も空白になってしまいます。) 1列目 2列目 3列目(合計)  3   2   5 (空白)  2  (空白) ←これを2と表示したい! (空白) (空白) (空白) ←これを0と表示したい! わかりにくい文章ですみませんが、教えてください。

  • Accessの集計クエリで計算

    Microsoft Access2016において、クロス集計クエリに表示される数値を使って計算をするには、どこにどんな数式を入力すれば良いですか。テーブルに表示される数値ではなく、クロス集計クエリで計算された合計の値を使 います

  • アクセスのクエリで

    アクセスのクエリで、テーブルAのフィールド1が空白の場合は、0と表示し、(数値型)そうでない場合はフィールド1の値を表示するにはどの様にしたら良いですか? 誰か教えて下さい。よろしくお願いします。

  • [EXCEL]二つの計算式

    同一シートに (1)A1+B1=C1 (2)A2+B2=C2 で、A1の数値を変えてもC1は元の計算結果のまま。 A2の数値を変えたらC2の計算結果は更新される というように、自動計算と手動計算の混合のようなことはできますか?!

  • アクセスのエラー表示

    アクセスで各項目に計算値を入れてフォーム作成しています。  項目にデータが不要な部分がありますが,どうしてもその部分も計算して   ますので,結果的に「#Error」と言うのが表示されるのです。  この「#Error」を表示させない方法ってあるのでしょうか??

  • 元のファイルを開かないと正しく計算されない

    Excel2013でファイル1のセルを参照してファイル2で計算結果を表示するということをしています。 ファイル1を閉じたままでファイル2をひらくと、リンクを更新するかどうか聞かれ、更新すると計算結果が#VALUE!と表示されます。 ファイル1を開くと正しい数値が入ります。 ファイル1を閉じたまま、ファイル2に正しい数値を返すにはどうすればよいのでしょうか。

  • ACCESSでのデータ登録について教えてください

    ACCESSのテーブル項目に数値型(十進型)の項目があります。 この項目に計算結果を登録するのですが、 桁数が大きくなると、指数(0000E+000)で登録されてしまいます。 指数での登録ではなく、直値の値を登録する方法はないでしょうか? 登録方法は、クエリを使用しています。 プロパティの書式の設定で「固定」にしようと思いましたが、 登録される数値の内容が、少数点以下があったりなかったりで出来ません。 登録内容を変更出来ないようであれば、帳票表示に直値の値を表示する方法はないでしょうか? ご回答宜しくお願いします。

  • accessで数値の表示桁数を指定する方法

    access2007使用です。 テーブルでは数値の指定が出来ますが、それによって計算結果を出すクエリを作ったところ、小数点で表示されてしまいます。 小数点2桁で全て表示を揃えたいのですが、どこの画面でどのような設定をしたらいいのか分かりません。 その設定の画面と設定方法を教えてください。

  • LibreOfficeCalc VALUEエラー

    LibreOffice 3.4 の表計算 Calc を使っています。 LibreOffice を 3.3 から 3.4 に更新したところ ある特定の場合に数値計算の結果、#VALUE! (エラー:519)が でるようになりました。 特定の場合とは、セルに式を入力し、その結果が 0 のとき空白("") を返すとし、このセルを別のセルの式で参照した場合です。 例えば A1 に 0 A2 に 1 A3 に =if(A1*A2>0,A1*A2,"") A4 に =A2+A3 とした場合で、A4の計算結果で #VALUE! がでます。 A4 で =A2+N(A3) としてもダメでした。 A3 が式でなくて、ただの空白("")であれば、これで #VALUE! が回避できましたが、A3 が式でその結果が 空白("")の場合は N関数を使ってもダメでした。 A3 の計算結果で 0 をそのまま表示させれば問題ないのですが、 計算結果が 0 になるセルが大量にあって、 それらの 0 を表示させたくないのです。 なお LibreOffice 3.3 や StarSuite では問題なく計算できていました。 LibreOffice 3.4 の Calc で、式で計算した結果を 空白("")にしたとき、このセルを別のセルの式で参照した場合に 和のときは 0 とみなす方法はないのでしょうか。 あるいは、セルの式で書式を設定して計算結果の 0 を透明にして 出力する方法はないのでしょうか。

  • エクセルでの時間計算について

    時間計算について質問です。 図のような仕事上にかけた時間の計算をしたいのですが。終了時刻と休憩時刻で空白のセルがあるとマイナスになってしまします。 計算としてはC行の終了時刻からB列の開始時間を引き、休憩があればさらにマイナスで計算してみています。 終了時刻と休憩時刻で空白のセルがあるときには計算をせずすべてのセルが埋まったら計算結果を表示することは可能でしょうか? 現在ですと合計時間のところでマイナスになってしまい、すべて入力 がされていないと正確な数値になりません。 作業時間はその後の計算の都合上時間表示ではなく数字として表示させています。

専門家に質問してみよう