- ベストアンサー
お願い!誰か助けてっ!(^⊥^;)
ファイルメーカーについて詳しい方、どなたか「再帰定義」とはどんなことなのか教えていただけませんか?会社の会計ソフトを作っているんだけど、リレーションのデータの取込みの際、再帰定義と表示されたデータがリレーション出来ないの。(決算が近づいてるのに先に進めないよぉ~・・・・・) 「受注」「発注」「仕入」「請求書」と4つのファイルがあって、そのフィールド(商品名)をそれぞれ4つのファイル全部にリレーションさせたいんだけど、「受注」→「発注」→「仕入」まではデータを読込めたのに、再帰定義と表示されて、その先の「請求書」のファイルまでリレーション出来ないの。グスン。(;∧;) お願い!どうすればリレーション出来るようになるのか教えてくださいませませ。 どうか、よろしくお願いしまぁ~す♪
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ファイルメーカーは、まだリレーション機能を持っていなかった頃に使って以来ご無沙汰ですので正確な ことは分かりませんが。 「再帰」の一般的な意味はCranさんの仰る通りでよいと思うのですが、別の例で、鏡を二枚向き合わせると 一方の鏡が他方を映し、映った鏡の中にさらに元の鏡が映り・・・という関係になりますよね。これも 再帰です。恐らくは、例えば請求書レコードを表示しようとするとその中に受注レコードが表示され、 さらにその受注レコードの中で請求書レコードが参照され・・・といったような関係ができてしまって いるのではないでしょうか。 解決策としては、リレーションの必要性を再検討することだと思うのですが、ある程度手っ取り早い方法 として、実データとビューを分けるというやり方が考えられます。例えば受注テーブルと請求書テーブル との間にはリレーションをはらず、別に受注ビューテーブル・請求書ビューテーブルを作って、それらから 受注テーブル・請求書テーブルを参照するようにすれば、再帰というか、循環参照のようなことは起きない と思います。
その他の回答 (1)
Cranです。 ファイルメーカーについて詳しくもなく再帰定義とはなんぞやも知りませんが 再帰と言う言葉の説明でもしましょうか…これが正しいと言い切れないのがつらいですが… 例えばプログラムでですけど再帰処理というのがあって、これは自分自身を内部から呼んでいる処理を言います 良く用いるものにnの階乗を求めるメソッドが有りますが… 階乗:n!=1×2×3×...×n calc(int n){ if(n=1){ return 1; }else{ return x * calc(n-1) } } となります、自分自身を呼ぶので、下手な作り方をすると永遠にループすることがありえます、合わせ鏡のように… 通じるかな… ですので「再帰定義」とは エクセルで言う「循環参照」のように延々に参照が続くので内部で嫌だといっているのではないでしょうか? ですので、「請求書」の参照前後を調べてみて下さい。 役に立ってないですね…すみません(--;)
お礼
sekicです。 再帰定義について教えていただきどうもありがとうです。 本当に困っていたのでたすかりましたm(__)m
お礼
sekicです。 再帰定義&リレーションについて教えていただいて本当に助かりました。 ありがとうございます。 お礼をいうのが遅くなってごめんなさい。m(__)m