みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
いつも大変お世話になっております
バージョン19.6.3.302になります。
案件名、場所という2つのフィールドがあり、諸々品物を入力して、最終的に印刷orPDF化しています。
案件名or場所に/(スラッシュ)が入ると印刷できず、スクリプトの設定を変更すると手間なので、フィールドに/を入力不可にしたいのですが、可能でしょうか?
何卒よろしくお願いいたします。
Offline
フィールド値の制限を計算式で
Filter ( Self ; "\\" ) = ""
とか?
あれ?なぜかバックスラッシュだと思い込んで"¥¥"と書いてしまいましたが、"/"です。
スラッシュが印刷できないというのは、謎ですが。。。
himadaneeさん
ありがとうございます。試してみます。
とても端折った説明ですが、
Get (デスクトップパス)を使用しています。
Offline
himadaneeさん
計算式で制限にチェックマークを入れ、下記の計算式を入力しました。
Filter ( Self ;"/" ) = ""
カスタムダイアログは出るのですが、入力できてしまいます。
問答無用で入力不可にはできないでしょうか・・・?
何か間違っていたら教えていただけるとありがたいです。
申し訳ありませんが、何卒よろしくお願いいたします。
Offline
入力値の制限で、
データの入力時にユーザーによる上書きを許可する
のチェックを外すと絶対に入力できなくなります。
入力値の自動化ではなく、
スクリプトトリガ
OnObjctExit
のスクリプトで、制限にかかるとそのフィールドから抜けられなくできますよ。
Offline
Offline
さすらいのダンサーさん
おっしゃる通り、このスクリプトです。
「:」「¥」はほぼ使われないので放っておこうかなと思いました。ですが、そうなのですね。大変参考になります。
OnObjctExitは別のスクリプトを使用しているので、上書きを許可するのチェックを外すで対応しようかなと思っております。
/も頻度は多くはありませんので・・・
Offline
絶対に入ってはいけない文字なんでしょうから、Substitute() で消してしまう処理を行えばいいのでは。
ダイアログを出しておけば、ちょっと親切でしょうね。ダイアログをださなくてもいいのでしたら、自動入力で強制的に取り除いてしまいましょう。
Last edited by Shin (2023-05-10 18:32:04)
Offline
Shinさん
ありがとうございます。
この場合のSubstitute() はどのようにスクリプトを設定すればよろしいでしょうか?
「/」と、「:」「¥」も入力できないようにできればと思います。
カスタムダイアログも出そうと思います。
ご教授願えますでしょうか?
Offline
ファイル名に使えない文字ということなら、入力禁止にしなくても、ファイル名にするときに除去すればいいのでは?
Substitute(
テキスト ;
[“/“ ; “”] ;
[“:“ ; “”] ;
[“¥“ ; “”]
)
Offline
Windowsだと他に*とか?とかもファイル名には使えないです。
「ファイル名には次の文字は使えません」と出てくる記号類は「半角」で、
「全角」なら使用できるはずです。(Macは知りません←無責任 笑)
ファイル名に使えないより前に、
デスクトップパスが意図したものと変わってしまうのが原因なので、
Shinさんの提案のように置き換えて消してしまうか、
RomanZenkaku(案件名)で強制的に全角にしてしまうかでしょう。
(ただし、半角スペースや半角数字も全角になってしまう)
"file:"&Get(デスクトップパス)&Substitute(RomanZenkaku(案件名);Char(65340);Char(65509))&".pdf"
""マークは曲者なので、
https://fm-aid.com/bbs2/viewtopic.php?id=2424
このあたりも参考にした方がいいかもです。
Last edited by さすらいのダンサー (2023-05-12 10:20:57)
Offline
皆様
ありがとうございます。
試させていただきます。
結果ご報告いたします。
引き続き、何卒よろしくお願いいたします。
Offline
申し訳ございません。
on object saveを利用して、/ ¥ :などが入ったらカスタムダイアログを表示して再入力を促す。
といった処理を考えているのですが、その場合はどのように設定すればよろしいでしょうか?
変更前の案件名を変数に設定
入力禁止の文字が入ったらダイアログ表示→変更前のものにフィールド設定
などと考えております。
ご教授願えますでしょうか。
Offline
過去に、入力されたそのままをダイアログに再表示して、修正を求める、という処理をしたことがあるのですが、ユーザー側の間違いが非常に多く発生します。一番は、全て削除しきれないで再び指摘される、面倒だというクレームです。次に、削除文字の前後の文字を合わせて削除してしまい、ファイルが行方不明になる、という事故が結構発生します。
それでもいいですか。
お薦めは。入力禁止文字を自動削除して、それでダイアログで確認させる。という動きです。
Last edited by Shin (2023-05-12 11:42:12)
Offline
Shinさん
経験をもとにした提案ありがとうございます。
Shinさんのお薦めの動きの設定を教えていただけると大変ありがたいです。
何卒よろしくお願いいたします。
Offline
OnObjectExit で、
Loop
exit Loop If ( PatterCount ( target ; "/" ) = 0 )
フィールド設定 ( target ; Substitute ( target ( target ;[ "/" ; "" ]) )
カスタムダイアログ[ target へ変更しました]
end Loop
おそらく毎回ダイアログが表示されるので、鬱陶しい、と言われると思います。
確認させるだけですので、自動入力で変更してしまうのと、特別な違いは無いと思いますが。
Last edited by Shin (2023-05-12 12:20:29)
Offline
Shinさん
ありがとうございます。
自分のファイルで試してみました。
/が入力されたらダイアログが出る。
といった動作になりました。
/自体稀にしか入力されないので、これで良いのかと思いました。他の文字は・・・今の所入力されてないので一旦これでやってみようと思います。
Offline
同じ動作を、数十回行ってみてください。最後には、単にOKをクリックするだけの意識しか無くなります。
ダイアログを出す意味があるのでしたら、出せばいいでしょうね。
ダイアログを出す意味がなければ、自動入力での削除で十分でしょう。
Offline
Shinさん
ありがとうございます。
たしかにおっしゃるとおりかもしれません。
自動で削除の設定で様子をみてみます。
ありがとうございました、
Offline
管理側でなく使用側の立場で考えると、意味なく「/」は使用しませんよね?
案件名で使用する場合、
「1/3」「2/3」「3/3」のような区別
5/12のような日付
これらのように案件名に入れておきたい場合かと思います。
それが強制的に無くなって良いのかどうかですね。
また、スラッシュが使えないことによって違う記号を使用されたら元の木阿弥ですよ。
ダイアログなしにするなら
"file:"&Get(デスクトップパス)&Substitute(案件名;"/";"/")&".pdf"
でも同じな気がします。
Offline
さすらいのダンサーさん
ありがとうございます。
少し考えます。
結果ご報告いたします。
Offline
私がよくやるのは、_ に置き換えます。これ以外にも使える記号はいくつかあります。
Offline
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 574.09 KiB (Peak: 595 KiB) ]