みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
何度かお世話になっております。
テーブルからデータ検索してリスト形式で表示させています。
(1検索で1件から10件ほどリスト表示されます。)
検索したあとデータを追加で入力するのですが、カーソルが移動しません。
最初に1件目のレコードに追加で入力して、2件目のレコードに入力しようとクリックしてもカーソルが移動しません。
試しに検索→検索結果5件
最初に一番下の5件目を入力したあと4件目の入力をしようと入力するフィールドをクリックしましたが移動しませんでした。
どこから入力しても次のレコードへカーソルが移動しません。
ただたまに入力できるときもあります。
原因がわからずにいます。Ver19 Win10
よろしくお願いします。
何かフィールド値に制限をかけてて、それを満たしていないとか、
何もメッセージが出ないなら、トリガが設定してあるとか、
でしょうかね?
フィールドにいくつか制限もありますし、onrecordcomid も設定しています。
何もメッセージはでないです。
あえていうなら、カーソルが移動したと勘違いして入力して「入力する前に・・・」の
メッセージがでるくらいで・・・
onRecordcommid
が原因のような気がします。
ここで登録フラグを判定してfalseなら現在のスクリプト終了にしています。
次のレコードに移動するだけではtureにならないので、そのままスクリプト終了になると
思うのですが、やり方が違っているのでしょうか?
スクリプトが分からないので何ともですが、、
そのトリガを外してみて試されたらいかがでしょうか?
今のレイアウトをいじりたくないのでしたらレイアウトコピーして試せばいいでしょう。
Offline
登録フラグの意味も何をしたいのかもわからないので何とも言えませんが、
「現在のスクリプト終了」に戻り値をtrueで入れない場合はコミット禁止(イベントがキャンセル)になって、レコードから出られなくなります。
検証不足ですが、、
> onRecordcommid
> が原因のような気がします
OnRecordCommit
ですよね?
ならば、
レコード確定時にトリガが働きますが、
フィールド移動だけでは働きませんよ。。
Offline
移動と言ってもレコード内の別のフィールドでなく、別のレコードの(同じ)フィールドへ移動しようとしてますから、コミットのトリガ発生になります。
ですね、
フィールド移動ではなく、
レコード移動ですね、
読み違えていました。
Offline
みなさまありがとうございます。
登録フラグは登録ボタンを押したときにレコード確定させるためのフラグです。
押したらtrueにして、キャンセルボタンはレコード復帰のスクリプトです
「現在のスクリプト終了」に戻り値をtrueで入れない場合はコミット禁止(イベントがキャンセル)になって、レコードから出られなくなります。
>>戻り値はfalseです。これが原因かもですね
そのトリガを外してみて試されたらいかがでしょうか?
>>試してみます
試したところ、やはりOnRecordCommitが原因のようです。
1レコードに対して変更(データ追加)しているので、それを登録なりキャンセルなりしないと次のレコード
へ移動できないといったところでしょうか?
レイアウト上で登録とキャンセルを制御したいのですが、どのようにしたらいいんでしょうか?
OnrecordLoadのほうを使ったほうがいいのでしょうか?
> 登録フラグを判定してfalseなら現在のスクリプト終了にしています
その結果をtrueとすればいいですが、
それで不都合があるかはスクリプトが分からないと。。
Offline
レコード単位でなく、検索結果全体の編集を一括して登録かキャンセルかしたい、ということなのかな。
だとしたら、CommitもLoadもあんまり意味がないですが...
最新バージョンなら「トランザクション」がありますけど、途中で人力で編集するのはスクリプト一時停止になるので色々制限がでてくるかも。
レコード単位でなく、検索結果全体の編集を一括して登録かキャンセルかしたい、ということなのかな。
だとしたら、CommitもLoadもあんまり意味がないですが...
>>その通りです。
やはりそうなのですね・・・いろいろ調べてそうなのかなーと思っていたところです。
最新バージョンなら「トランザクション」がありますけど、途中で人力で編集するのはスクリプト一時停止になるので色々制限がでてくるかも。
>>これも今調べて試してみようかと思っていました。
初心者には難しいでしょうか?一時停止(入力中)は他の作業ができないように(登録かキャンセルを押してから)制限をかけたりできるのでしょうか?
トランザクションは最近できた機能なので、ほとんど使ったことありませんからあんまりアドバイスできませんが、
https://help.claris.com/ja/pro-help/con … ction.html
を見ると、考慮すべき事項がかなり多いので、初心者には難しいのは確かだと思います。
自動的に確定する操作として「ファイルが閉じられた場合」があるので、何か確定に条件がある(登録ボタンのスクリプトを必ず実行させるなど)であれば、onWindowCloseトリガを併用してチェックが必要、かも?
複数のクライアントで同時にトランザクションが始まって、変更がバッティングしたらあとから確定しようとした方が失敗するとか、あるのかな??
それとも、あとから変更しようとした方が「ロックされています」と言われて編集できないのかな。
スクリプト一時停止の際は、自動的にある種の制限がかかりますが、「他の作業」とはフィールド編集以外すべて、ですか?
https://help.claris.com/ja/pro-help/con … cript.html
メニューのカスタマイズが必要かも。
試しにちょっとだけやってみましたが、難しいです。
一時停止してもEnterで解除されてしまうようで、入力→Enterで確定してしまい入力作業は厳しいです・・・
あきらめて自動保存にするしかないかもしれません。
ありがとうございました。
>1検索で1件から10件ほどリスト表示
という事なので、10件程度なら力技で...
編集用のレイアウトのオカレンスは別テーブル(グローバルフィールド)にし、編集先のテーブル(UUIDを入れるフィールド)とをリレーションします。
検索後、UUIDを改行区切りで取得し、グローバルフィールドに挿入します。
これで一応、ポータルツールで表示している先の編集したいテーブルがトランザクションを担保した上で一括編集出来るかと思います。
※勿論、OnRecordCommit をレイアウトに組み込む必要があります。
返信が遅くなりました。
ぎょぼぼ様、アドバイスありがとうございます。
なんとなく言っていることはわかるのですが・・・
グローバルテーブルを作成して検索結果をグローバルテーブルで表示させる
↓
編集
↓
登録ボタンを押すことにより元のテーブルへ転記する
ということでしょうか?
>登録ボタンを押すことにより元のテーブルへ転記する
表現のニュアンスですが、微妙に異なります。
転記するスクリプトを作成するのではなく、編集が確定されるという方が正確です。
サンプルを準備出来れば良いのですが、こちらの都合で直ぐには難しいです。
その上、分かりにくい表現で首を突っ込んでしまいすみません。
[既存レイアウト:検索内容テーブル]
検索の実行。結果の一覧表示
↓
一フィールドで完結するプライマリーキー(若しくはUUID)を取得。
↓
(編集開始ボタン)
編集用レイアウトへ遷移。
↓
[編集レイアウト:新規テーブル:グローバルでリレー]
グローバルフィールドへ、改行区切りでプライマリーキーを挿入。
↓
リレー先の検索内容テーブルが関連レコードとして取得出来る。
ポータルで表示させる。
↓
登録ボタンを押すと、OnRecordCommitの判別結果でレコード確定出来るようにする。
(元のレイアウトへ戻る。また、キャンセルボタンでも同様。)
大まかには、このような流れを想定して投稿しました。
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 601.7 KiB (Peak: 618.6 KiB) ]