
ファイルメーカー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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Visual Basic(VBA) 【ExcelVBA】Powerクエリーでいうピボット解除と同じ処理をVBAで 4 2022/07/06 17:09
- Excel(エクセル) Excelの操作方法を教えてください!頭文字2~8文字で特定の値に返す方法 8 2022/07/14 11:26
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- 教育ソフト・学習ソフト マイクロソフトのシリアル番号と自分のアカウント解除 2 2023/07/19 08:27
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- その他(プログラミング・Web制作) バッチファイルでPCのモデル名を取得したい 1 2022/03/31 10:58
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Outlookの連絡先の中に項目を増...
-
ファイルメーカーについて
-
ExcelからAccessデータを検索す...
-
ファイルメーカーでの質問
-
ACCESSの型変換(日付型)について
-
Accessについて質問です
-
ファイルメーカーの印刷について
-
エクセルのDSUM関数について教...
-
Access2003で全文検索文書管理...
-
FileMakerで画像をまとめて書き...
-
[Access2003]メイン・サブフォ...
-
分数の入力
-
INSERT INTO table(DATE) VALUE...
-
ACCESS フォームに入力した文字...
-
Wordでの数式の入力
-
LOTUS NOTESについて
-
FileMakerでのテキスト処理
-
フィールド、インスタンス変数...
-
ワードでスペースを保護する方法
-
FileMakerの文字の一括変換につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「#エラー」の回避
-
アクセスで入力したデータの順...
-
accessのフィールドに10桁の数...
-
ExcelからAccessデータを検索す...
-
差し込み文書のルールで if the...
-
MS-WORDで、あるフィールドに入...
-
ACCESSでデータ変更箇所が分か...
-
WORD差し込み印刷:日付の処理 ...
-
「フィールド更新」が表示されない
-
フィールドの中のテキストを分...
-
FileMakerで特定フィールドを空...
-
Accessでボタンを押すと今日の...
-
Accessで値がnullの場合は計算...
-
FileMakerで画像をまとめて書き...
-
FileMakerで、フィールドの値が...
-
MS-ACCESSで中央値(ME...
-
Access フィールド内の値で、...
-
FileMakerで繰り返しフィールド...
-
access フィールドのサイズ(文...
-
A1、A2、A3・・・とデータを増...
おすすめ情報