![]() |
||
<HOME <お願い事項 <Access2002 TOP <Access97 TOP <サイト内検索 | ![]() |
|
![]() |
||
MS-Access2000--昨日の2倍の宝石をください |
レポートでのイベントの書き方、考え方、だいぶ慣れてこられたんじゃないでしょうか?
じゃあ・・・今度は、フォームを使って、「○日は、いくつ?」という具合にスポット的に値を得る仕組みを作ってみましょう。
今度は「前の日の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向きのお仕事じゃないと思うんです。その辺は皆さんご自身で判断なさってみてくださいね。
![]() |
![]() |
![]() |