ファイルメーカーProでは、フィールドに対し「入力値の自動化・シリアル番号」のオプション設定を行った場合、新規レコードを作成するとフィールドに連続した番号が自動入力できます。このシリアル番号機能に似た方式で、特定のフィールドの内容を参照し、その内容ごとにシリアル番号を自動入力する機能を実装させようと試行錯誤しているのですが、どうにもいい方法が思いつきません。
【実装したい機能の例】
・「商品名」「シリアル番号」の2つのフィールドを持つDBがあります。
・「商品名」を入力または修正すると、「シリアル番号」のフィールドへ「商品ごとに異なるシリアル番号」が自動入力されていきます。
【実装時の例】
レコード1:商品名=みかん、シリアル番号=1
レコード2:商品名=みかん、シリアル番号=2
レコード3:商品名=リンゴ、シリアル番号=1
レコード4:商品名=みかん、シリアル番号=3
レコード5:商品名=リンゴ、シリアル番号=2
レコード6:商品名=バナナ、シリアル番号=1
エクセルでは、countif関数を使っていとも簡単に実装できたのですが、「最初のレコードから現在入力中のレコードの間で、現在入力中のフィールドと内容が同じレコードの数を取得する」方法が、ファイルメーカーProでは見つかりません。
良き解決方法をご教示いただけますでしょうか。
No.2ベストアンサー
- 回答日時:
ちょっと複雑かつ原始的?な方法ですが、ご希望のようなシリアルナンバー(ナンバーというより数値ですが)を表示することは可能です。
その方法は
1、商品名フィールドが「りんご、みかん、梨、バナナ、メロン」と仮定します。
2、画面表示が不要な計算用のフィールドを次のように作ります。
(1) 「りんご」というフィールドを作ります。フィールドタイプは「計算」で、式は
「IF(商品名="りんご",1,"")」とします。
以下、ミカン、梨、バナナ、メロンも同様に定義します。
(2) 次に「りんご計」というフィールドを作ります。フィールドタイプは「集計」で、「カウント」及び「現在のカウント」にチェックを入れ、フィールド「りんご」を選択します。
以下、ミカン計、梨計、バナナ計、メロン計も同様に定義します。
この2種類(合計10個)のフィールドは計算用ですから、画面に表示する必要はありませんが、参考のため欄外に表示してみると経過が分かります。
3、最後に「シリアルナンバー」フィールドです。
フィールドタイプは「計算」で、計算式は
Case(商品名 = "りんご" , りんご計, 商品名 = "みかん" , みかん計,商品名 = "梨",梨計,商 品名 = "バナナ",バナナ計,商品名 = "メロン",メロン計 )
とします。
以上です。データを入力して試してみてください。
(私も20件ほど入力し、OKでした。)
ありがとうございます。
ご教示いただいた方法で上手くいきました。
とはいうものの、一番最初にテストした時は、「メロン計」のカウントに不具合があって、思いっきりつまづいてしまいました。
計算式の設定も何度か再確認したのですが、さっぱり原因がわからず、それならばと新規にファイルとデータベースを作り直したら、あっさり動いてしまい、妙な脱力感を感じています。
最後に、夏期休暇でご教示いただいた手法を試すことができずご返答が遅くなってしまいましたことお詫びいたします。ごめんなさい。
No.3
- 回答日時:
文字の変換ミスですが、ANo2の記述内容に1か所誤りがあったので訂正します。
2、(2)の、以下「ミカン計」は「みかん計」です。
なお、シリアルナンバーの計算式設定に際し、商品数が多数あり、一つの式にはめ込むのが容易でないときは、商品名及び集計フィールドを別表(FM7の場合、FM6なら別ファイルにしてリンク)に設けることにより、リレーションを組むことも可能かと思われます。(忙しくて試してはいませんので今のところ「自信なし」としておきます)
No.1
- 回答日時:
fmp7形式で説明します。
fmp6以下ならテーブルをファイルと読み替えてください。
「カウンター」というテーブルを作成し、「商品名」と「カウント」フィールドを作成します。
そして、いま使っているDB(テーブル)と商品名でリレーションを張っておきます。
「シリアル番号」フィールドの計算式を
------------------------------------
IF(MAX(カウンター::カウント)<1 ; 1 ; MAX(カウンター::カウント)+1)
------------------------------------
にします。
頭の中だけなので外しているかもしれません。
要はシリアル番号を別に保管しておき、リレーションの中で一番大きい番号に1を足したものをシリアル番号として使用する、ということです。
この回答への補足
bucchukunさん、すばやいご回答ありがとうございました。
なるほど、ファイルメーカーを触って3日程度の半端な知識では、リレーションシップ機能を使うことにまたく思い至りませんでした。
さっそく、ご教示いただいたように新規テーブルを作成し、「商品名」フィールドにリレーションシップを設定した後、「シリアル番号」フィールドに計算式を設定してみた……のですが、残念ながら思う結果が得られませんでした。
私のやり方がまずいのかもしれませんが、ご教示いただいた方法だけでは、「カウンター」テーブルの「カウント」フィールドを、「商品名」フィールドの入力にあわせてカウントアップさせていないため、正しい結果が得られていないのだと思われます。
せっかく良いヒントを与えていただいたので、もう一度冷静にカウントアップの方法を考えてみたいと思います。
とはいうものの実際には、1番目のレコードから現在のレコードの間で、フィールドに記入された項目と同じ項目がいくつあるか数える関数があれば、私の望む処理が実現できるのですが、うまくヘルプの中に見つけることができませんでした。もしかすると、フィールドに設定する計算式ではなく、ボタンを押してスクリプトを実行させて自動記入させるほうが良いのでしょうか。
ちなみにエクセルを使った場合、A列に商品名を記入するとB列にシリアル番号が自動記入される手法は、B2のセルに「=COUNTIF($A$2:A2,A2)」と記載し、B3以降のセルには同じように「=COUNTIF($A$2:A3,A3)」とすることで実装できています(下図参照)。
____A______B____
+----------+----------------+
1|_商品名_|_シリアル番号_|
2|_みかん_|___1____|
3|_みかん_|___2____|
4|_リンゴ_|___1____|
5|_みかん_|___3____|
6|_リンゴ_|___2____|
7|_バナナ_|___1____|
過去に所有ソフト管理などで、カード型データベースを使ったことはあったのですが、データベース作成の経験は少なく、何か基本的なところで見落としをしているような気がしてなりません。
引き続き、情報をお待ちしております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
字面がカッコいい英単語
あなたが思う「字面がカッコいい英単語」を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
ファイルメーカーで最大シリアル番号+1を自動入力
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスで入力したデータの順...
-
「#エラー」の回避
-
WORD差し込み印刷:日付の処理 ...
-
ExcelからAccessデータを検索す...
-
accessのフィールドに10桁の数...
-
差し込み文書のルールで if the...
-
ACCESSでデータ変更箇所が分か...
-
WORDのIFにEqフィールドは使えない
-
Accessで値がnullの場合は計算...
-
MS-WORDで、あるフィールドに入...
-
access フィールドのサイズ(文...
-
Accessでボタンを押すと今日の...
-
FileMaker Pro7 カレンダーの作...
-
FileMakerで読み込んだファイル...
-
「フィールド更新」が表示されない
-
ファイルメーカー複数フィール...
-
ファイルメーカー(FileMaker)...
-
accessのVBAで変数名でフィ...
-
ファイルメーカーの集計方法を...
-
ファイルメーカー:ピクチャに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「#エラー」の回避
-
アクセスで入力したデータの順...
-
差し込み文書のルールで if the...
-
accessのフィールドに10桁の数...
-
ExcelからAccessデータを検索す...
-
「フィールド更新」が表示されない
-
Accessでボタンを押すと今日の...
-
WORD差し込み印刷:日付の処理 ...
-
ACCESSでデータ変更箇所が分か...
-
access フィールドのサイズ(文...
-
Accessで値がnullの場合は計算...
-
Wordでページ番号を計算式で入...
-
FileMakerで、フィールドの値が...
-
FileMakerで画像をまとめて書き...
-
MS-WORDで、あるフィールドに入...
-
フィールドの中のテキストを分...
-
Access フィールド内の値で、...
-
A1、A2、A3・・・とデータを増...
-
WORDフィールドコード一括編集
-
アクセス Access 時間の引き算
おすすめ情報