みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
こんばんわ
凄く単純なことなのですが
データベースのフィールド type:数字型というのがありまして、
実際には、0〜2までが格納されます。
画面の表示では
0なら 勝ち
1なら 引き分け
2なら 負け
と表示させたいです。
やはりこの場合は、テーブルに計算フィールド(上記の分岐処理を計算式として)追加するのが正しいのでしょうか?
わざわざ、これだけのために計算フィールドを追加するのが馬鹿らしいので 他に方法があれば教えて下さい
Offline
計算フィールドで
Case ( type=1;"勝ち"; type=2;"引き分け"; type=3;"負け")
とすれば求められすが…
**type は type:数字型 として書きましたが、実際のフィールド名を当ててください。
Offline
計算フィールドで
Case ( type=1;"勝ち"; type=2;"引き分け"; type=3;"負け")
とすれば求められすが…
**type は type:数字型 として書きましたが、実際のフィールド名を当ててください。
やはり、それしか無いですか?
FileMaker って単純なことでも実現するにはいろいろと遠回りな事をしないとダメなんですね?
正直 Accessとか他のDBとの違いに戸惑ってます
Offline
テキストオブジェクトに条件付書式を設定すればいいのでは。
FM12でないと重ねるのがうまくいかないかも。
12でやってみたら、何故か文字色透明に指定しても白くなってしまった。文字サイズを1ptにすれば、だいたい見えないけど。
Offline
12でやってみたら、何故か文字色透明に指定しても白くなってしまった。文字サイズを1ptにすれば、だいたい見えないけど。
文字色透明は設定出来ないですよ。逆に500pt下付きに設定すれば背景がグラデーションでも大丈夫です。
Case ( type=1;"勝ち"; type=2;"引き分け"; type=3;"負け")
ん?type=0;"勝ち"...と一つずれてますよ。0 から始まるので Choose 関数の方がエレガントかも。
Choose ( type ; "勝ち" ; "引き分け" ; "負け" )
他の解として、レイアウトモードで
<<$$勝敗>>
というテキストを置いて、このテキストに条件付き書式を設定します。条件付き書式の計算式は
Let ( $$勝敗 = Choose ( type ; "勝ち" ; "引き分け" ; "負け" ) ; 0 )
結果は必ず 0 なので書式の設定はいりません。
条件付き書式の中でグローバル変数を設定し、マージ変数をレイアウト上に配置すれば計算フィールドはいりません。
ただ描画のタイミングが遅れるので、万全を期すのであれば、ウインドウの再表示が必要になったりします。
FM12から条件付書式では文字色透明(不透明度0)が設定できるようになってるんですが、文字のデフォルトの書式には指定できないですね。
条件付書式の設定ダイアログのバグなのかな?
Offline
タイプが数字でもテキストを表示できますから、
フィールド値の0・1・2を他に使用しないのなら、
入力値の自動化・既存値置き換え
でいいのでは。
でも、
一つフィールドを増やすことにそれほど問題が有るとは思えませんが。。
・・郷に入れば郷に従え・・
Offline
>入力値の自動化・既存値置き換え
それなら、フィールドタイプを数字にしておく理由もなさそうですが。
1桁数字と2~4文字テキストでは、4:9ぐらいでファイルサイズは大きくなるみたいです。
>正直 Accessとか他のDBとの違いに戸惑ってます
Accessも他のDBも持っていないのですが、どんな感じで出来るのですか。
表示だけテキストで数値データは隠れていて、計算にはその数値が使える
のでしょうか。
Offline
そうです。FMでいうと、インスペクタのフィールドを選択するところで、任意の計算式を書けるようなイメージです。
変数名だけの場合はその変数値を入力もできる、とか。
そうなのですか。と言ってもピンと来ません (;_;)
>何故か文字色透明に指定しても白くなってしまった。
確かに、透明にはなりませんね。
>ただ描画のタイミングが遅れるので、万全を期すのであれば、ウインドウの再表示が必要になったりします。
マージ変数の塗りを白にして数値フィールドはトリガにして
スクリプトで変数内容を書き換えるとか・・・
Offline
{{日付}}でGet(日付)と同じ値を表示しますが、そうでなくGet(日付)とそのまま書けるイメージ、かなあ。
Get(日付)+1なら明日の日付になる。
スクリプトで書き換えだと、リスト表示ではどうなるかな。
フィールドでないと、表形式には対応できませんね。。。
>Get(日付)と同じ値を表示しますが、そうでなくGet(日付)とそのまま書けるイメージ、かなあ。
何となくわかりました。
マージ変数のスクリプト、ダメですね。大体マージ変数を使った事が無い・・・
普通のフィールドにしてトリガで。
Offline
フィールド追加でいいのなら、計算値自動入力のフィールドを作って
重ねるだけでいいのか・・・
1フィールドと2フィールドで比べてみましたけどファイルサイズは
少し増えたくらいでした。600レコードで。
Offline
こういう「値のコード化」では、別にテーブル(対応表)を作るのが普通ですよね。
そのテーブルのフィールドを配置すれば。
それを値一覧にして、数字フィールドはポップアップメニューにするとかでも。
フィールド追加なら、非保存計算フィールドにすれば、レコード数と関係なくほとんど増えないでしょう。
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 529.69 KiB (Peak: 550.23 KiB) ]