- ベストアンサー
ファイルメーカ7の関数の使用法について
現在ファイルメーカ7を使用している初心者です。 あるフィールドにAAAのような文字を入力した時だけ、あるフィールドの数字が121から1増えて、122になるようデータベースを作成するには、どのようにすれば良いのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
まず、同一レコード内での処理のお話か、そうではないのかをはっきりさせてください。説明を読むと、どちらとも取れてしまいます。 もし複数レコードということであれば、No.2でできるはずです。 ちなみに、補足説明は質問の文章を何回も繰り返しているだけで、ほとんど追加情報がありません。 役に立つアドバイスを得るには、ご自分の状況をもう少し詳しく説明する必要があると思います。 何のためのシステムなのか、作ったフィールドはどのようなものなのか、くらいは質問に関連する範囲でオープンにしないと、ご自身も回答者も解決までに遠回りをすることになりますよ。
その他の回答 (2)
- bucchukun
- ベストアンサー率43% (18/41)
通常、レコードというものは抽出や並べ替えをするのが前提の、並びの順番が不安定なものなので、「前のレコードの値を取得」する計算式はありません。 例えばスクリプトを使用します。 例) ・用意するフィールド 「数値」フィールド 「計算結果」フィールド 「一時保存」フィールド(グローバルフィールド) レコード/検索条件/ページへ移動 [前の] コピー [選択; 数値] レコード/検索条件/ページへ移動 [次の] 貼り付け [選択; 一時保存] 計算結果を挿入 [計算結果; IF(文字列="AA";一時保存+1;一時保存)] 本来は並べ替えやエラー処理等が必要なのですが、情報がないので、コアの部分だけです。なお、当然ですが、あくまでやり方の一例です。他にも自己リレーションを活用する方法などが考えられますので、一度考えてみてください。 ちなみに、AAでなくBBの時はどうするのですか?AAAの時はどうするのですか?他の選択肢はないのですか?条件分岐によって、式であれスクリプトであれ複雑さがまったく変わってきます。 例え話も結構ですが、どうしてそのような設定にしてあるのかも含めて説明すると、違ったアプローチの提案があるかもしれませんよ。
補足
bucchukun様本当にありがとうございます。 ちなみについて補足説明です 数値フィールドが121から始めると仮定します。AAではない場合は、数値フィールドは121のままで、また入力していき、AAを入力したときは数値フィールドが121から122となるようなデータベースを作りたいです。
- bucchukun
- ベストアンサー率43% (18/41)
もう少し法則性を明らかにしないと、答えようがありませんが、参考だけ。 例)「文字列」に文字が入力されたときに「数値」に入力された数値に+1する。 別途フィールド定義が”計算”の「計算結果」フィールドを用意し、以下の式を設定します。 IF(文字列="";数値+1;数値)
補足
bucchukunさま、ご回答ありがとうございました。 説明不足で申し訳ありませんでした。 例にあげていただいたIF文試しました。 私の能力では教えていただいた方法では、現在考えているデータベースは出来ませんでした。 補足で教えてください。 例)最初のレコードでAAを入力したら数値フィールドが1増え、次のレコードでまたAAを入力したら、1足した数値フィールドにまた1足す方法です。 申し訳ありませんが教えてください。 よろしくお願いします。
お礼
bucchukun様 適切なご指導何度も本当にありがとうございました。 データベース初心者の私では、現在構想中のデータベースまではたどりつけそうにありません。 これにめげず、ファイルメーカについてもう少し勉強をし、データベース作りを続けたいと思います。 質問もまとえた形でないのに、ご指導いただき本当ありがとうございました。