ファイルメーカーを勉強中なのですが、
Max関数でIDを自動取得しようとすると「再帰定義」
のメッセージが出てうまくいきません。

Max(ID)+1
↑このような設定にしています。

最大値に+1した値を新規レコードのIDにしたいのですが、
ファイルメーカーではできないのでしょうか?
Max関数以外でもいいのですが、方法がありましたら
教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

ファイルメーカーは「再帰定義」が苦手ですよね。

(^^;;
私は、自動取得にはせず、スクリプトを組んでIDを生成しています。
1)一旦、グローバルフィールドにIDのMAX値を入れます。
2)IDフィールドに上記のグローバルフィールド+1の値を入れます。

ちょっと手間ですけれど、これで一つのファイルで、2000年度、2001年度などそれぞれのMAX値を生成したりしています。
    • good
    • 0
この回答へのお礼

kumfさん、ありがとうございました。
教えてもらった方法で出来ました。(^-^)

ファイルメーカーを使っている人がまわりにあまりいなくて困っていました。本もあまり種類がなくて・・・

本当に助かりました。

お礼日時:2001/08/01 10:02

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QあるカラムのMAX値+1をINSERTしたい。

DB2環境です。

ある列のMAX値+1をINSERTしたいと思っています。

INSERT INTO TableName
(atai1)
Values
((SELECT MAX(BILLSUBNO)+1 FROM TR0400))

このように書いてみたのですが、「入力ホスト変数または
パラメーター*Nで変換エラー」
と言われてしまい、コミットすることが出来ません。
+1を除けば出来るのですが、DB2ではVALUESの中で演算をすることは
できないのでしょうか?
もし方法がありましたら、教えてください。

Aベストアンサー

DB2の環境がないですが。。。

values内でサブクエリを書くより、insert ~ selectを使う方が一般的です。

INSERT INTO TableName
(atai1)
select MAX(BILLSUBNO)+1 FROM TR0400

QSQLインジェクション時の最小値、最大値以外の取得

ascii(substring((select min(TABLE_NAME) from information_schema.tables
where TABLE_SCHEMA != 'mysql' AND TABLE_SCHEMA != 'information_schema'),2,1))>100;

↑MySQLの場合です。

前回ここで疑問に答えていただいて、このようにすることで、tablesというテーブルから、データベースinformation_schemaとmysql以外のデータベースにあるテーブルを取得できるというのはわかったのですが、上のような記述だとmin(TABLE_NAME)にあるとおり、TABLE_NAMEで並べたときの最小のものしか取得できないんです。。。

min(TABLE_NAME)のminをmaxに変えることで最大のものは取得できますが、その2つ以外のテーブル名を取得する記述(例えば2番目を取得するなど)はあるのでしょうか?
データベースの種類はMySQLでなくても良いです。

連続の質問になるのですがよろしくお願いします。。。

ascii(substring((select min(TABLE_NAME) from information_schema.tables
where TABLE_SCHEMA != 'mysql' AND TABLE_SCHEMA != 'information_schema'),2,1))>100;

↑MySQLの場合です。

前回ここで疑問に答えていただいて、このようにすることで、tablesというテーブルから、データベースinformation_schemaとmysql以外のデータベースにあるテーブルを取得できるというのはわかったのですが、上のような記述だとmin(TABLE_NAME)にあるとおり、TABLE_NAMEで並べたときの最小のものしか取得できないんです。...続きを読む

Aベストアンサー

実際にやってませんが、1度目のアクセスで min の TABLE_NAME がわかっていれば、where句に TABLE_NAME != 'xxxx' とすればとれるんじゃないでしょうか。

ダメだったらごめんなさい。

Qファイルメーカー関数 Positionについて

先日こちらのカテゴリーで質問させていただいた者です。
http://oshiete1.goo.ne.jp/qa5515143.html

ご回答をいただいたのですが、解答のPosition関数を今まで
使用したことがなく、ファイルメーカーのヘルプを見たのですが

Position ( テキスト ; 検索テキスト ; 先頭文字位置 ; 回数 )

先頭文字位置 - テキスト文字列の先頭から検索開始位置までの文字数を示す数値式または数値を含むフィールド
の意味が私の頭ではいまいち理解できず先に進めない状態です。

Position ( "Mississippi" ; "iss" ; 3 ; 1 )=5

どうして答えが5なのか疑問です。

柔らかく教えていただける方よろしくお願いします。

Aベストアンサー

先の質問を閉じずに関連質問をするのはマナーが悪いですよ。

「先頭文字位置」はずばり、探し始める位置です。Mississippiで
先頭文字位置が3なら、Mi[s]sissippiから探し始め、Miss[iss]
ippiということで5文字目で発見しましたね。それだけ。

QMAX値の取り方

selectの取得で以下のようなことを実現したいです。
環境は、DB2です。
A B C は、数値です。

SELECT
MAX(A,B,C)
FROM
TABLE_NAME

ご教授 願います。

Aベストアンサー

ANo.2です。
もし、No.2の通り、各行の中の最大値が欲しいという質問だとすると、
CASE WHEN THEN ~~~END 句が使えます。
SELECT
CASE
WHEN (A >= B) AND (A >= C) THEN A
WHEN (B >= A) AND (B >= C) THEN B
WHEN (C >= A) AND (C >= B) THEN C
END as "ANS"
FROM TABLE_NAME

QACCESS サブフォーム MAX関数 テーブル

ACCESS初心者です。
以下のテーブルがサブフォームに表示されています。
メインフォームの名前をmain_frm
サブフォームの名前をsub_frm
テーブルの名前をtable
とします。

テーブルは以下のように構成されています。
文字|値
a|1
b|10
c|3
d|4

メインフォームにテキストボックスを設置して
そこに最大値である10を表示させたい時はどのように関数を組めばよろしいでしょうか?

Aベストアンサー

メインフォーム/サブフォームに分けられるようですが、
サブフォームのフォームヘッダ部分を使って、1つのフォームでやるってことは可能ですか。

順を追って記述します)

1つのフォームでする場合)

(1) サブフォーム sub_frm のフォームヘッダに、テキストボックス txt00 を配置します。
(プロパティで)txt00 のコントロールソースに =Max([値]) を設定します。


メイン/サブフォームにする場合)

上記(1)で作成した txt00 を非表示にします。
メインフォームにテキストボックス txt01 を配置します。
txt01 のコントロールソースに =[FSUB].[Form]![txt00] を設定します。
上記 FSUB は、メインフォームに配置したサブフォーム/サブレポート の名前です。
(プロパティで)FSUB のソースオブジェクトは sub_frm になっています。

※ メインフォームに配置した txt01 のコントロールソースに =DMax("値","table") を設定してもできると思いますが、
txt01 の表示を更新するタイミングをいろいろ考える必要があります。
また、今後サブフォームで絞り込み表示など組み込んだ場合、DMax に同じ抽出条件を組み込まなければなりません。

メインフォーム/サブフォームに分けられるようですが、
サブフォームのフォームヘッダ部分を使って、1つのフォームでやるってことは可能ですか。

順を追って記述します)

1つのフォームでする場合)

(1) サブフォーム sub_frm のフォームヘッダに、テキストボックス txt00 を配置します。
(プロパティで)txt00 のコントロールソースに =Max([値]) を設定します。


メイン/サブフォームにする場合)

上記(1)で作成した txt00 を非表示にします。
メインフォームにテキストボックス txt01 を...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報