みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
バグじゃないのかあ。
計算式でやります。
ありがとうございました。
計算値だと問題ないのですがカスタム値だとダメなのです。
数字フィールドのシリアルを全置換する単純なスクリプトです。
変数を設定 [$serial ; 値:1000]
フィールド内容の全置換 [ダイアログなし ; シリアル ; シリアル番号]
ここでカスタム値の初期値に$serial、増分に1を設定。
v11で、初期値に$serialのような変数を指定すると$serial、$serial1... のような結果になります。
変数は使えないということ?
レイアウトモードでbodyが用紙サイズより大きいとそうなりますね。
逆に用紙に余裕があれば2レコード表示されたり。
確かに。
40000レコードから検索結果が2000になるような状態で色が変わらないレコードがあります。
変数を初期化してないからかなあ。
これくらいのレコードでも値一覧方式は重くて実用になりません。10秒以上CPUが100%になってしまいます。
V11では集計フィールドの新機能は使えないので、最初に提案頂いたフィールドの全置換方式が最適と思われます。
2000レコードくらいなら1秒くらいで終わるので問題ありません。
Loopは再帰で置き換えられると以前の投稿で書かれていたのでどんなものかと。
今回は上記の方法でやることにします。
皆さんありがとうございます。自分には新しい考え方を習得できました。
なるほど、値一覧にこんな使い方があるとは。
また、Evaluateを使う再帰式だとどうなりますか? なんとか再帰式も使えるようになりたいと思っています。
前から疑問だったのですが、全置換や条件付き書式はレコードの上から順番に処理してるのでしょうか?
速度は条件付き書式の方が圧倒的に速いですね。
Hiroさんのをベースに条件付き書式と値一覧で以下のように実現出来ました。
[条件付き書式]
Let(
$grp=$grp + (GetNthRecord(日付カラー::日付; Get(レコード番号)-1)<>日付カラー::日付) ;
Mod($grp;2)
)
[動的値一覧]
自己リレーション日付カラー::日付 ≧ 日付を設定
リレーションした日付テーブルから値一覧changedateを設定
条件付き書式を定義
Mod ( ValueCount ( ValueListItems ("日付カラー" ; "changedate" ) ) ; 2 )
日付でソートした状態で、日付が変わるごとに文字色を変更したくて次のようなスクリプトを作りましたが、いちいちスクリプトを走らせるのは面倒なので、フィールドの計算式か条件付き書式で実現出来ないでしょうか? 再帰計算で出来そうだけど、どうやってレコードを移動するのかなどよく分かりません。
よろしくお願いします。
[テーブル内容]
日付 データ 実行結果
2017/04/21 *** 青
2017/04/21 *** 青
2017/04/22 *** 黒
2017/04/22 *** 黒
2017/04/23 *** 青
2017/04/23 *** 青
[スクリプト]
変数を設定 [$ChangeDate; 値:0]
レコード/検索条件/ページへ移動 [最初の]
Loop
If [日付カラー::日付 ≠ GetNthRecord ( 日付カラー::日付 ; Get ( レコード番号 ) - 1 )]
変数を設定 [$ChangeDate; 値:not $ChangeDate]
End If
計算結果を挿入 [選択; 日付カラー::日付; If ( $ChangeDate = 1 ; TextColor ( 日付カラー::日付 ; RGB ( 0 ; 51 ; 255 ) ) ; 日付カラー::日付 )]
レコード/検索条件/ページへ移動 [次の; 最後まできたら終了]
End Loop
ありがとうございます。15になっても直ってないとは。
計算結果を挿入でやってみます。
確認のために新規ファイルを作ってテストしているので他のスクリプトの影響は考えられません。
フィールド指定も完全修飾です。動作環境を書き忘れましたがmac、11advancedです。
別のmacの12advancedでも同じ症状でした。
日付からテキストに変更してみると、スクリプトは正常に動作します。
試しに手動で赤に変更してスクリプトを実行すると黒(デフォルト)になります。
GetAsTextを入れてみましたが変わらずです。
GetAsDate ( TextColor ( GetAsText ( 日付カラー::日付 ) ; RGB ( 0 ; 0 ; 255 ) ) )
不思議です。
日付フィールドは条件付き書式やフィールド内容の全置換では文字色を変更出来るのに、
スクリプトでフィールド設定で変更しようとするとデフォルトカラーになってしまいます。
TextColor ( 日付 ; RGB ( 0 ; 0 ; 255 ) )
なにか他に処理が必要なのでしょうか?
おー
軽くなりました。
Pages: 1
[ Generated in 0.006 seconds, 6 queries executed - Memory usage: 550.76 KiB (Peak: 571.73 KiB) ]