初心者のFileMaker pro Q&A

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。

何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

ログインしていません。

アナウンス


#1 2019-09-09 18:32:28

nao
ゲストユーザー

[解決] 画像(オブジェクト)一括削除

画像(オブジェクト)一括で削除したいのですが、できますでしょうか。
1レコードに1画像で1000レコード中30レコードに画像を一時的に挿入しています。
印刷を行えば画像を削除したいのですが、画像が挿入されたレコードを探すのも大変ですし
スクリプトで一括削除できると便利なのですが。
宜しくお願い致します。

#2 2019-09-09 20:29:41

素人
ゲストユーザー

Re: [解決] 画像(オブジェクト)一括削除

印刷後に、対象レコードのオブジェクトに「フィールド内容の全置換」で空データに置換で出来ます。
レコードを残す必要がなければ、レコードごと削除してしまっても良いと思います。

#3 2019-09-09 21:02:44

nao
ゲストユーザー

Re: [解決] 画像(オブジェクト)一括削除

素人さん、アドバイスありがとうございます。
レコードは残し、画像のみ削除したいのです。

教えていただいた「フィールド内容の全置換」オブジェクトフィールドを指定のみで実行してみました。
オブジェクトフィールドの画像がすべて消えました。
目的は達成できたのですが、スクリプトに「フィールド内容の全置換」のみで実行したので
何か問題はないのでしょうか。

良ければ、スクリプトの具体的な書き方を教えて下さい。

#4 2019-09-10 07:19:48

nao
ゲストユーザー

Re: [解決] 画像(オブジェクト)一括削除

すみません。何度か試してみたらすべてのレコードへ画像が挿入されていました。

#5 2019-09-10 09:07:46

チポ
メンバー

Re: [解決] 画像(オブジェクト)一括削除

フィールド内容の全置換
は、やり直しができません。
試される前にバックアップを取るなり、慎重にした方がいいですよ。

計算フィールド・テキストタイプで
  オブジェクトフィールド
とするとそのファイル名か、ファイルパスを返します。

また、
計算フィールド・数字タイプとして
  Length ( オブジェクトフィールド )
とすると、オブジェクトフィールドに入っているファイルのサイズをバイト数で返します。

このフィールドでオブジェクトフィールドに入力が有るか否かが分かりますね。

オフライン

#6 2019-09-10 09:20:18

素人
ゲストユーザー

Re: [解決] 画像(オブジェクト)一括削除

元のスクリプトが、どのように書かれているかわかりませんので、注意が必要かどうか判断はできません。

画像をすべて空にしたいのであれば、
まず、対象を見つけたい場合、計算フィールドを追加して、画像の有無で判別できるようにすると良いです。Case(IsEmpty=1;0;1)、空欄は0で、画像アリは1
検索で、=1で画像のあるレコードだけ抽出が可能です。(計算フィールド使うと、やや処理に時間かかるので、他の方法でも良いですが)

該当レコードがあるときだけ、置換すれば良いです。
If[Get(対象レコード)>0]
「フィールド内容の全置換」で空データに置換
EndIf

処理時間を気にしないなら、全レコード表示して全置換する方法もあります。

印刷したレコードのみ空にしたいのであれば、印刷後に全置換をスクリプトに設置すれば良いかと思います。

#7 2019-09-10 09:33:23

Shin
メンバー

Re: [解決] 画像(オブジェクト)一括削除

なぜ削除する必要があるのですか。
画像そのものを挿入しないで、パスを挿入しておけば、容量も食わないので、放置しておいてもいいのでは。

オフライン

#8 2019-09-10 10:02:27

koeda
メンバー

Re: [解決] 画像(オブジェクト)一括削除

そもそも疑問なのですが…

・画像の挿入対象となる30レコードはどうやって抽出しているのか?
→抽出条件があるのだから「画像が挿入されたレコードを探すのも大変」ということはないのでは?

全置換は便利ですが、ひとりで使うデータベースならともかく、複数人で同時使用するデータベースの場合
うっかり全置換すると他の人が印刷中のレコードまで変更してしまいそうというのは杞憂でしょうか?
テンポラリー(一時使用)のデータだからといって、安易な変更・削除は危険で、対象レコードに注意しながら使う必要があります。

編集者 koeda (2019-09-10 10:15:19)

オフライン

#9 2019-09-10 10:58:57

素人
ゲストユーザー

Re: [解決] 画像(オブジェクト)一括削除

削除しても良いということで、印刷用の作業テーブルかと思いましたが、残しておくようなデータであれば、使い方を変えた方が良いと思います。
私も、レコード残して画像だけ消すという用途が理解しかねますが。

>何度か試してみたらすべてのレコードへ画像が挿入されていました。
「フィールド内容の全置換」の使い方がわかっていないと思われます。
置換:選択フィールドの内容を使用して置き換えます。ですので、画像の入ったレコードを元に行うと、他のレコードにも画像が入ってしまいます。画像が空のレコードを元に行うと、他のレコードも空になります。
計算結果で置き換える:計算指定に「""」で空を挿入することで、画像が消えます。

#10 2019-09-10 12:52:56

nao
ゲストユーザー

Re: [解決] 画像(オブジェクト)一括削除

皆様、貴重なご意見ありがとうございます。
画像削除が安易な考えでした。
画像をパスで検討してみようかと思います。
ありがとうございます。

#11 2019-09-10 14:48:55

hoge
ゲストユーザー

Re: [解決] 画像(オブジェクト)一括削除

適性かどうかわからないけど、出来るって方法を。

まず画像が入ってるかの判定。画像を入れるオブジェクトフィールド名を 画像a として
別で[画像判定]とかの名前で計算フィールドを作る。フィールドのタイプは数字。
計算式は IsEmpty ( 画像a )
画像判定が0なら画像あり。1なら画像入ってない。
これで画像が入ってるかどうかの判定を検索で行います。

画像を消す方法は画像入りを検索した後に

レコード/検索条件/ページへ移動 [最初の]
Loop
消去 [選択;画像a]
レコード/検索条件/ページへ移動 [次の; 最後まで来たら終了]
End Loop

これで消えます。
1レコードに消したい画像が複数ある場合は
消去 [選択;画像a]
消去 [選択;画像b]
消去 [選択;画像c]
と増やすだけ。

クィック投稿

メッセージを書いて送信してください。
登録の確認

実在の人物による登録であることを確認します。

Board footer