みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
スクリプトトリガで下記のようなスクリプトでバックアップデータを取るように
したところ、現場からi-Padの動きが遅くなるとのクレームが出ました。
速くする方法はありませんか?
「A工程入力」(工程) のレイアウトで検査結果を入力するとバックアップデータを
とるようにしています。
よろしくお願いします。
変数を設定 [ $code ;値:工程::IDNo ]
If [ $code = "" ]
カスタムダイアログを表示 [ タイトル: "IDNoなし" ; メッセージ: "IDNoを入力してください。" ;
デフォルトボタン 「OK」 , 確定 ; 「はい」]
現在のスクリプト終了
Else
フィールド設定 [ 値:工程::IDNo ; $code ]
全レコードを表示
レコードを対象外
対象外のみを表示
レイアウト切り替え [ 「A工程(バックアップ)」(A工程)]
レコードのインポート [ ソース: 「file:工程」;ターゲット: 「A工程(バックアップ)」;方法: 追加: 文字セット:
「シフトJIS」; ・・・・・・
レイアウト切り替え [ 「A工程入力」(工程)]
End If
毎回バックアップする必要あるの?
iPadのローカルのファイルだったら、バックアップもやっぱりローカルだろうから、あんまり意味ないような気がするし、ServerのファイルをiPadで開いているのであれば、iPadでわざわざバックアップ(というかデータのコピー)させることないし…
とおりすがりさん
ありがとうございます。参考にさせてもらいます。
全レコードを表示しないで、ユニークキーで関連レコードへ移動にする。
timさん
ありがとうございます。Tryしてみます。
timさん
スクリプトを下記のように変更して試してみました。できるようになりました。ありがとうございました。
前回のスクリプトでは「工程」と「A工程」のIDNoをリレーションしていなくてもバックアップできましたが
今回はリレーションをしていないと「ターゲットが関連テーブルの一部ではないため、この処理は完了できません。」
というメッセージが出て出来ませんでした。
リレーションをすると出来るようになりました。
変数を設定 [ $code ;値:工程::IDNo ]
変数を設定 [ $ind ;値:Get ( 対象レコード数 ) ]
If [ $ind > 1]
カスタムダイアログを表示 [ タイトル: "対象レコード過多" ; メッセージ: "対象レコード数が多すぎます。
バックアップを中止します。" ; デフォルトボタン 「OK」 , 確定 ; 「はい」]
現在のスクリプト終了
Else
フィールド設定 [ 値:工程::IDNo ; $code ]
関連レコードへ移動 [ テーブル: 「A工程」; 使用するレイアウト「A工程(バックアップ)」(A工程)]
レコードのインポート [ ソース: 「file:工程」;ターゲット: 「A工程(バックアップ)」;方法: 追加: 文字セット:
「シフトJIS」; ・・・・・・
レイアウト切り替え [ 「A工程入力」(工程)]
End If
ん?ほんとにできてますか?
工程の現在のレコードだけをA工程にバックアップするんですよね。
リレーションは工程の自己リレーションです。バックアップ先は関係ありません。
timさん
ありがとうございます。リレーションを組むとバックアップに書き込むことができました。
どこに問題があるのかよくわかりません。
ダイアログメッセージ 「ターゲットが関連テーブルの一部ではないため、この処理は完了できません。」
の「関連テーブルの一部ではない」ということが気になります。
「関連テーブルではない」ならわかるのですが、どういう意味か分かれば教えてください。
よろしくお願いします。
前半のIfの内容も変えてるのに気付かなかった。最初はIDNoの入力チェックだったのに、しなくていいんですか?
対象レコード数が1の場合にだけバックアップ実行するなら、関連レコードへ移動も必要ありません。
最初のスクリプトで、
全レコードを表示
レコードを対象外
対象外のみを表示
この3行が「現在のレコードのみを対象レコードにする」という操作なので、その代りに関連レコードへ移動を使うという提案です。
timさん
ありがとうございます。
File Makerをあまり深く理解できていないので、ちぐはぐなことを
やっています。
もう一度考え直してみます。
timさん
下記のようにスクリプトを変更したらリレーションを組まなくても、バックアップできました。
ありがとうございました。時間も短縮できました。
変数を設定 [ $code ;値:工程::IDNo ]
変数を設定 [ $ind ;値:Get ( 対象レコード数 ) ]
If [ $code = "" ]
カスタムダイアログを表示 [ タイトル: "IDNoなし" ; メッセージ: "IDNoを入力してください。" ;
デフォルトボタン 「OK」 , 確定 ; 「はい」]
現在のスクリプト終了
Else
If [ $ind > 1]
カスタムダイアログを表示 [ タイトル: "対象レコード過多" ; メッセージ: "対象レコード数が多すぎます。
バックアップを中止します。" ; デフォルトボタン 「OK」 , 確定 ; 「はい」]
現在のスクリプト終了
Else
フィールド設定 [ 値:工程::IDNo ; $code ]
レコードのインポート [ ソース: 「file:工程」;ターゲット: 「A工程(バックアップ)」;方法: 追加: 文字セット:
「シフトJIS」; ・・・・・・
End If
End If
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 528.31 KiB (Peak: 548.85 KiB) ]