- 締切済み
Access2000での日数の計算
データベースの素人です。訳あって、データベースを作成することになりました。 ソフトはAccess2000を使用しております。 例えば「本体」というテーブルのフィールド項目に ID 荷物の受注日 荷物の発送日 所要日数 という項目があります。 同じくフォームにもこのとおりの項目があります。 「荷物の受注日」と「荷物の発送日」を手入力するのですが、「所要日数」だけは自動で計算をしたいのです。 マニュアル本とにらめっこをしながら、当初、フォーム上の「所要日数」の入力場所のプロパティ→データタブのコントロールソースに DateDiff("y",[荷物の受注日],[荷物の発送日]) と入力しました。 これで確かにフォームに入力した日付データに対して「所要日数」も表示されました。 しかし、「本体」テーブルのデータには、手入力した日付データは登録されているものの、「所要日数」は登録されていませんでした。 手入力した日付データを残したまま、今度はクエリを用いて「本体」テーブルのクエリを作ってみました。 クエリにて「所要日数」のところのフィールドに 所要日数: DateDiff("y",[本体]![荷物の受注日],[本体]![荷物の発送日]) と入力して、クエリを実行すると、確かにクエリの中の「所要日数」のところにはデータが出てきます。 しかしながら「本体」テーブルにも、フォーム上にもデータは出てきません。 いったいどのようにすれば、フォーム上にて手入力をした日付データに対して、所要日数を自動で計算し、そのデータが「本体」テーブルにも記録されるのでしょうか? どなたかお分かりになるかた、宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- O_cyan
- ベストアンサー率59% (745/1260)
フォーム上で演算した結果をテキストボックスに表示するようにしてもフォーム上 でのみ有効でテーブル自体には反映されません。 フォーム上の演算結果をテーブルに保存するにはイベントの記述が必要になります。 「所要日数」のテキストボックスの名前を変更して「所要日数1」にしてください。 テーブルのフィールド名と同じだとエラーになります。 「所要日数1」のテキストボックスのプロパティの更新後処理に me![所要日数]=me![所要日数1] と記述すればテーブルの「所要日数」に書込みに行きます。 又はレコードの保存ボタンや新しいレコードの追加ボタンのイベントの途中に me![所要日数]=me![所要日数1]と追加記述すればそのボタンをクリックした時に テーブルに書込みに行きます。
- oneworld
- ベストアンサー率29% (17/58)
テーブル テーブルには入力のみですので、自動計算はできません。 データ元と考えて下さい。 クエリ クエリはデータ元の影武者的な存在です 影武者に対してのみ加工編集します。 クエリを複数作成する場合、データ元テーブルが変化するとえらいこっちゃになります。 フォーム フォームにもクエリの結果が反映されました。 クエリのフィールド名が「所要日数」になってますか?
- oka123
- ベストアンサー率31% (69/219)
こんにちわ フォームでの名前がそれぞれ 荷物の受注日 荷物の発送日 所要日数 としますと 荷物の発送日のプロパテイでの イベントの更新後イベント機能で イベントプロシジアーとして その中に Me.所要日数 = Me.荷物の発送日 - Me.荷物の受注日 と記載すればいいと思います
- nobunojo
- ベストアンサー率29% (122/407)
更新クエリーって知ってますか? 選択クエリーとの違いが判らないと、 ここじゃ簡単には説明できませんよ。 まずはオンラインヘルプや、マニュアル本を読んでみましょう。
補足
いちおう、ヘルプなども見てみたのですけど、何がどうなっているのかが分かりませんでした…
お礼
回答、どうもありがとうございます。 フムフム…と読みつつも、計算式(?)の意味が分かりませんでした… 更新後処理のところをクリックすると、「式ビルダ」、「マクロビルダ」、「コードビルダ」などと表示され、いったい何を、どうすればいいのか分からずじまいでした。 仕方なくコピペにてやってみましたが…やり方が悪いのか、意味を理解していないからか、やっても出来ませんでした。 何とか自分でいじくり、フォーム上に「所要日数ダミー」という項目を作り、そのフォーム上にて質問で述べた計算式を入れ、それをマクロでフォーム上の正規の「所要日数」項目に代入する方法を行ったら、何とかできました。 大変お騒がせいたしました。