![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
>テーブル内の一番大きいシリアル番号を求め、新規テーブルのシリアル番号に「最大シリアル番号 + 1」にしたい。
途中削除したシリアル番号は欠番のままでよい。
「新規レコード作成、今作成したレコードを削除」と連続操作したとき、新しいシリアル番号が生成されてしまうのを防ぎたい。
結論から言って、シリアル番号(以下「SN」と略)の自動入力による全置換も併用し、なおかつ削除レコードのSNは欠番のままでよい、というご希望なら、削除レコード以降のレコードのみを対象として全置換でSNを振り直すしかありません。
なぜならば削除後全レコードを対象にSNを振り直せば、削除分のSNは必ず削除分の次のレコードで穴埋めされるからです。
だから、レコードの新規作成、削除を頻繁に行うなら自動入力はあきらめて、その都度手入力するしかないと思います。
>テーブル内のシリアルの最大値の求め方もわかりません。
SNフィールドなど数値フィールドの最大値(MAX)を求めるのは、例えば「MAXSN」等新規フィールドを作り、タイプは「集計」にしてオプションで最大値にチェックし、SNを指定してOKすれば全レコードSMの最大値は出ます。
だからそのフィールドを画面のどこかに出しておいて、新規レコードを作成したときその数+1の数値をSNフィールドに手入力する方がよいでしょう。
これをまた別に計算フィールドを作って「=MAXSN+1」などと式を設けても、それをSNフィールドにCopy&Pasteするならともかく、自動的に入力しようとすれば再帰定義を起こすので、式自体が定義出来ません。
またレコード数がどれくらいあるか分かりませんが、仮に10万台としてもコピペするぐらいなら手入力が早いでしょう。
そもそも全レコードを増分1で自動入力して、しかも欠番OKというのは論理矛盾です。
一つ理解できないのは、現レコード数以外に必要というMAX番号とはどういう目的・性質のものでしょうか。
削除してもそれまでに一旦データ化したレコードの総数をどこかに記録して置きたいということでしょうか。でないと欠番OKの意味も分かりません。
残念ながら私の知識では、削除→欠番OK、かつMAX番号自動入力という矛盾した作業は、Excelならマクロで可能かも知れませんが、ファイルメーカーでは不可能というしかありません。
アドバイスありがとうございます。
> 一つ理解できないのは、現レコード数以外に必要というMAX番号とはどういう目的・性質のものでしょうか。
このソフトを使用している方からの希望です。
> 削除してもそれまでに一旦データ化したレコードの総数をどこかに記録して置きたいということでしょうか。でないと欠番OKの意味も分かりません。
レコードの総数を記録しておきたいのではありません。
本来DBでは「削除」せず、削除フラグなどを利用し
削除したように見せかけるのが一般的です。
しかし、このソフトを実際使っている方々は
「以前のデータなんて要らない」という考えなのです。
(というとDBの役割はって感じなのですが)
こういった流れから「欠番OK」ということになっています。
仕様自体を考え直してみたいと思います。
今のところ自己リレーションを使用しできました。
しかし、私の中でもっと簡単なやり方があるのでは
と今も考え中です。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_02.png?e8efa67)
No.7
- 回答日時:
今、出先なのでFM7で確認できませんが、それ以前のバージョンにはMAX関数というのがありました。
ですのでFM7にも同じ名前か、同じ機能の関数があるはずです。
後は以下を参考にしてみてください。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=111972
参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=111972
No.6
- 回答日時:
NO.1 の回答者です。
ファイルメーカー4.0を使っています。
フィールド定義についての御質問にお答えします。
1.最終レコードを削除してしまった。
2.次の新規レコードを作成する前にファイルからフィールド定義を立ち上げます。
3.シリアル番号をふってあるフィールドを選択。
4.オプションボタンを押して中身を立ち上げる。
5.「次の値」という番号に、削除してしまった最終レコードの番号を入力し直す。
6.保存をする。
7.新規レコードを作成してみると、削除してしまった最終レコードの番号になる。
と、いうわけです。
面倒ではありますが…。
No.5
- 回答日時:
私の回答の意味を取り違えてらっしゃるようですね。
私はまず、TODAY関数によって必ずデータが入る「作成日」というフィールドを作り、別に例えば「シリアルナンバー」というフィールドを設けてそのタイプを「集計」にし、オプションをクリックして「カウント」と「現在のカウント」にチェックを入れることによって、最初のレコードから選択したレコードまでの「作成日」フィールドの個数をカウントし、それによってレコードが現在何番目にあるかということを表すということを言っている訳ですから、この数値が重複するなんてことは絶対にあり得ません。
フィールド内容の全置換のダイアログボックスでいうシリアルナンバー(初期値1、増分1という)とは全く意味が違うのです。
だからレコードがNO1から5まであるとすれば、NO3のレコードを削除して新たにレコードを追加するなら、当然今までのNO4のレコードはNO3に、NO5のレコードはNO4にそれぞれ繰り上がり、新しいレコードがNO5になる訳で、コンピューターが計算間違いをしない限り「シリアルナンバー」フィールドの値が重複するなんてことがあり得る筈がありません。
ただこの番号(数値)はステータスエリアの番号と常に一致する訳ですから、新たに設ける必要があるかどうかということをNo.4でお尋ねしている訳です。
ついでにちょっと訂正しておきますが、作成日フィールドをTODAY関数にしていましたが、TODAY関数では常にその日の日付に更新されますから、それでなく、フィールド定義のオプション画面の入力値の自動化にチェックを入れ、「作成日」を選択した方がレコード作成日も記録されるので画面に表示する意味もあり、よりベターだと考えます。
この回答への補足
#3で回答いただいた内容を取り違えて理解していました。
せっかく回答していただいたのに本当にすみません。
#5の方法を試してみました。
回答どおりの動作をしました。
ありがとうございます。
しかし、実現したい動作とは違います。
テーブル内の一番大きいシリアル番号を求め、
新規テーブルのシリアル番号に「最大シリアル番号 + 1」
にしたいのです。
途中削除したシリアル番号は欠番のままでよいのですが、
「新規レコード作成、今作成したレコードを削除」
と連続操作したとき、新しいシリアル番号が
生成されてしまうのを防ぎたいのです。
テーブル内のシリアルの最大値の求め方もわかりません。
いろいろ調べているのですが、なかなかわからなくて。
実現したい動作の説明が足らなくて本当にすみません。
No.4
- 回答日時:
No.3 zenjeeです。
一つ言い忘れていましたが、No.3で私が説明したような意味でのシリアル番号なら、左のステータスエリア(日めくりカレンダーのようなもの)に全レコード数と現在レコードの順番が必ず表示されるので、別にシリアルナンバーフィールドを設ける必要もないような気がしますが、いかがでしょうか。
もし私がご質問の意味を取り違えたのなら、よければ補足説明をお願いします。
ありがとうございます。
早速試してみました。
しかし、この方法ですとシリアルが重複してしまいます。
例えば「1、2、3、4、5」とシリアル番号があって、
シリアル番号3のレコードを削除し、
新規レコードを追加すると、シリアル番号は「5」となってしまいます。
シリアル番号はユニークとしたいのですが。
既存のMax(シリアル番号)+1 をとりたいのですが、
どうやったらよいかわかりません。
何か良い方法がありましたらアドバイスよろしくお願いします。
No.3
- 回答日時:
こういう方法はいかがでしょうか。
ウインドウに表示しないフィールド1個とシリアル番号が表示されるフィールドを1個作ります。
非表示のフィールド名は、例えば「作成日」としてタイプは計算、式は「=TODAY」とします。
次にシリアルナンバーのフィールドです。
名称は例えば「シリアルナンバー」とし、タイプは集計です。
オプションをクリックすると『集計フィールド「シリアルナンバーのオプション』というダイアログボックスが現れますので、左側の「カウント」と下の「現在のカウント」にチェックを入れOKをクリックします。
レイアウトモードに戻り、「シリアルナンバー」フィールドを画面に表示します。
するとデータの順に応じた番号(数値)が常に表示されます。データを追加・削除しても常に「作成日」フィールドの個数(COUNT)が反映されますから、シリアルナンバーとしての機能が果たされる訳です。
なお、「作成日」フィールドは表示しても特に支障がある訳ではありませんし、何らかの役に立つ場合があるかも知れません。
要するにどこかのフィールドには必ず何らかのデータが入っている(特定のフィールドが空白ということがない)と仮定すれば、別にこのフィールドを作る必要はなく、それをカウントすればいい訳で、そうでない可能性もあるかから、TODAY関数で必ずデータが入る非表示のフィールドを作り、その現在カウント数(順番)をシリアルナンバーとして活用する訳です。
No.2
- 回答日時:
私は5.5です。
あるフィールドの最大値に1足したものを同じフィールドに自動入力
しようとすると、再帰定義でエラーになりますね。
レコードの追加や削除をスクリプト経由で行なう仕様にしておい
て、スクリプトの中で数値フィールドに「計算結果を入力」で最大
値を格納するようにすれば、自動入力は単なる数値フィールドを参
照するだけになるから、出来るかも。でも面倒くさそう…
回答ありがとうございます。
今のところ、ショートカットでレコードの新規作成・削除
ができることを前提として考えています。
どちらにしても面倒な作業になりそうなんですかね・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ゆるやかでぃべーと タイムマシンを破壊すべきか。
これはディベートの論題だと仮定したうえでの回答お願いします。あなたは、その末にタイムマシンを壊してしまうのか、使い道を探すのかどうかを考えてもらいたいです。
-
ファイルメーカーでユニークなシリアル番号を自動入力させる方法
その他(データベース)
-
ファイルメーカーのMax関数について教えてください。
その他(データベース)
-
ファイルメーカーで2つのデータを1つにしたい!
その他(ソフトウェア)
-
-
4
ファイルメーカーでCountifの様な方法ありますか?
その他(データベース)
-
5
ファイルメーカーの集計方法を教えて下さい。
その他(データベース)
-
6
Filemakerで検索フォームを作りたい
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
差込印刷で顧客別に複数行のデ...
-
ファイルメーカーで該当件数を...
-
「ファイルメーカー」で宛先の...
-
accessのマクロで「一時変数設定」
-
ACCESSのフォームで次のレコー...
-
ファイルメーカーで最大シリア...
-
アクセスデータベースのUnicode...
-
日付の加算・減算ってできますか?
-
Accessのフォームへ、記録者の...
-
ファイルメーカーPro7での印刷...
-
ADOで現在のレコードの次のレコ...
-
FileMakerで特定のレコードのみ...
-
Accessで最終レコードの削除に...
-
差し込み文書のルールで if the...
-
Accessのレポート上のテキスト...
-
「フィールド更新」が表示されない
-
FileMakerで6桁の数字を1桁づつ...
-
filemaker 7 「関連レコードへ...
-
accessのフィールドに10桁の数...
-
Accessのレポート機能で空白に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
差込印刷で顧客別に複数行のデ...
-
ACCESSのフォームで次のレコー...
-
Accessのレポートの集計に条件...
-
ADOで現在のレコードの次のレコ...
-
accessのマクロで「一時変数設定」
-
ACCESSのレコード操作で1つ前...
-
日付の加算・減算ってできますか?
-
ACCESSでオフセットを求める方法
-
Accessで最終レコードの削除に...
-
ファイルメーカーで該当件数を...
-
PSQLで-- More --を表示しない方法
-
ファイルメーカーでレコード複...
-
「ファイルメーカー」で宛先の...
-
access レポートで罫線...
-
Docmd.Findrecordで空白の検索方法
-
アクセスでのエクセルでいう行...
-
VSAM
-
Accessのフォームへ、記録者の...
-
Accessフォーム上でレコードご...
-
ファイルメーカーの画像のリン...
おすすめ情報