みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
画像(オブジェクト)一括で削除したいのですが、できますでしょうか。
1レコードに1画像で1000レコード中30レコードに画像を一時的に挿入しています。
印刷を行えば画像を削除したいのですが、画像が挿入されたレコードを探すのも大変ですし
スクリプトで一括削除できると便利なのですが。
宜しくお願い致します。
印刷後に、対象レコードのオブジェクトに「フィールド内容の全置換」で空データに置換で出来ます。
レコードを残す必要がなければ、レコードごと削除してしまっても良いと思います。
素人さん、アドバイスありがとうございます。
レコードは残し、画像のみ削除したいのです。
教えていただいた「フィールド内容の全置換」オブジェクトフィールドを指定のみで実行してみました。
オブジェクトフィールドの画像がすべて消えました。
目的は達成できたのですが、スクリプトに「フィールド内容の全置換」のみで実行したので
何か問題はないのでしょうか。
良ければ、スクリプトの具体的な書き方を教えて下さい。
すみません。何度か試してみたらすべてのレコードへ画像が挿入されていました。
フィールド内容の全置換
は、やり直しができません。
試される前にバックアップを取るなり、慎重にした方がいいですよ。
計算フィールド・テキストタイプで
オブジェクトフィールド
とするとそのファイル名か、ファイルパスを返します。
また、
計算フィールド・数字タイプとして
Length ( オブジェクトフィールド )
とすると、オブジェクトフィールドに入っているファイルのサイズをバイト数で返します。
このフィールドでオブジェクトフィールドに入力が有るか否かが分かりますね。
Offline
元のスクリプトが、どのように書かれているかわかりませんので、注意が必要かどうか判断はできません。
画像をすべて空にしたいのであれば、
まず、対象を見つけたい場合、計算フィールドを追加して、画像の有無で判別できるようにすると良いです。Case(IsEmpty=1;0;1)、空欄は0で、画像アリは1
検索で、=1で画像のあるレコードだけ抽出が可能です。(計算フィールド使うと、やや処理に時間かかるので、他の方法でも良いですが)
該当レコードがあるときだけ、置換すれば良いです。
If[Get(対象レコード)>0]
「フィールド内容の全置換」で空データに置換
EndIf
処理時間を気にしないなら、全レコード表示して全置換する方法もあります。
印刷したレコードのみ空にしたいのであれば、印刷後に全置換をスクリプトに設置すれば良いかと思います。
なぜ削除する必要があるのですか。
画像そのものを挿入しないで、パスを挿入しておけば、容量も食わないので、放置しておいてもいいのでは。
Offline
そもそも疑問なのですが…
・画像の挿入対象となる30レコードはどうやって抽出しているのか?
→抽出条件があるのだから「画像が挿入されたレコードを探すのも大変」ということはないのでは?
全置換は便利ですが、ひとりで使うデータベースならともかく、複数人で同時使用するデータベースの場合
うっかり全置換すると他の人が印刷中のレコードまで変更してしまいそうというのは杞憂でしょうか?
テンポラリー(一時使用)のデータだからといって、安易な変更・削除は危険で、対象レコードに注意しながら使う必要があります。
Last edited by koeda (2019-09-10 10:15:19)
Offline
削除しても良いということで、印刷用の作業テーブルかと思いましたが、残しておくようなデータであれば、使い方を変えた方が良いと思います。
私も、レコード残して画像だけ消すという用途が理解しかねますが。
>何度か試してみたらすべてのレコードへ画像が挿入されていました。
「フィールド内容の全置換」の使い方がわかっていないと思われます。
置換:選択フィールドの内容を使用して置き換えます。ですので、画像の入ったレコードを元に行うと、他のレコードにも画像が入ってしまいます。画像が空のレコードを元に行うと、他のレコードも空になります。
計算結果で置き換える:計算指定に「""」で空を挿入することで、画像が消えます。
皆様、貴重なご意見ありがとうございます。
画像削除が安易な考えでした。
画像をパスで検討してみようかと思います。
ありがとうございます。
適性かどうかわからないけど、出来るって方法を。
まず画像が入ってるかの判定。画像を入れるオブジェクトフィールド名を 画像a として
別で[画像判定]とかの名前で計算フィールドを作る。フィールドのタイプは数字。
計算式は IsEmpty ( 画像a )
画像判定が0なら画像あり。1なら画像入ってない。
これで画像が入ってるかどうかの判定を検索で行います。
画像を消す方法は画像入りを検索した後に
レコード/検索条件/ページへ移動 [最初の]
Loop
消去 [選択;画像a]
レコード/検索条件/ページへ移動 [次の; 最後まで来たら終了]
End Loop
これで消えます。
1レコードに消したい画像が複数ある場合は
消去 [選択;画像a]
消去 [選択;画像b]
消去 [選択;画像c]
と増やすだけ。
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 523.83 KiB (Peak: 528.37 KiB) ]