<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000--昨日の2倍の宝石をください
   1 2 3 4



レポートでのイベントの書き方、考え方、だいぶ慣れてこられたんじゃないでしょうか?
じゃあ・・・今度は、フォームを使って、「○日は、いくつ?」という具合にスポット的に値を得る仕組みを作ってみましょう。
今度は「前の日の2倍」っていう考え方は通用しないので・・・ちょっとばかりロジックを考えておきましょう。

ええと・・・1日目はゼッタイに「1」なんですよね。これはよいとして・・・。
2日目から数字が動き出すわけですが・・・・。2日目の「2」は「2の一乗」、3日目の「4」は「2の二乗」、4日目の「8」は「2の三乗」ですね。。。いわゆるべき算というやつで出すことができそうです。「2の([何日目]から1引いた数)乗」です。

「今までもらった数の合計」はどうでしょう。
2日目は「3」です。3日目は「7」、4日目は「15」・・・・・。2の4乗が「16」なので、そこから1引いた数ですね。初日が「1個」ですから、ここで帳尻合わせます。
「(2の[何日目]乗)-1」ですね。

こういう式が動くようなテキストボックスを作ります。
まずは・・・無地なフォームを作って、そこに非連結のテキストボックスを5つ、配置してください。

↑全部非連結です。フォームも無地フォームで、レコードソースを持ってません。
テキストボックスの名前は、テキスト0、テキスト2、テキスト4、テキスト6、テキスト8ってなりました。

まずは・・・ちょっとややっこしいですけど、もらう数は・・・

=IIf([テキスト0]=1,1,2^([テキスト0]-1))

べき算って、顔文字でよく使う記号ですね。(^^;
もし[テキスト0]に入力された数字が1だったら、問答無用でその日は1個なので1と表示し、それ以外の場合は2を○乗する」という式になります。IIF文というやつを使ってちょっとした条件分岐ができるんですね。

今までの合計は、もうちょっとシンプルかな。


=2^[テキスト0]-1

多分、「1日目かそうじゃないか」という判断をしなくても、これだけで計算できると思いますよ。

姉さんたちの数は、問題ないですよね。

で、フォームビューに切り替えればちゃんと計算すると思いますけど・・・どうでしょう?

ためしに61日目はどうかな・・・とか入れてみると、ありゃりゃこんな表示になっちゃった。いわゆる「指数表示」ってやつですね。
18桁くらいの数値になっちゃうみたいですね。うーんすごい。2ヶ月以上続けてたら、大変なことになりますよ。だいたいこんな数の宝石、誰が数えるんでしょう。

指数というのは、桁の多い数値を表記する方法のひとつです。

1.15292150460685E+18だと、1.15292150460685にゼロ18個分、ええと、1京?倍?
115292150460685000個、っていうことかな。。。
指数の表記の仕方は、パソコン用語辞典かなにかに載ってると思いますので、興味ある方は調べてみてくださいね。


さて・・・では、「こういう↓テーブルを作りたい」場合は???

今まで考えてきたことを総合して、テーブルに値を追加(更新)していくプロシージャを作ってみましょうか。
でも・・・最初にお話したとおり、あんまりAccess向きのお仕事じゃないと思うんです。その辺は皆さんご自身で判断なさってみてくださいね。