初心者のFileMaker pro Q&A (旧掲示板)

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

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2023-08-25 21:22:34

aries106
Member

【勉強中】検索結果のリストを選択削除する方法

[OS:WIN10,VER:PRO14]

今、検索結果のリスト選択削除する方法を勉強しております。

[フィールド]
選択  数字
項目1 テキスト
項目2 テキスト
項目3 テキスト

[イメージ]※リスト形式
【選択削除】ボタン
選択  項目1 項目2  項目3
□選択 12345 S商店  りんご
□選択 24343 K事務所 いちご
□選択 12345 S商店  ばなな
□選択 24343 K事務所 みかん
□選択 12345 S商店  もも
    ↓
    ↓「12345」を検索実行する
【選択削除】ボタン
選択  項目1 項目2  項目3
□選択 12345 S商店  りんご
□選択 12345 S商店  ばなな
□選択 12345 S商店  もも

そこで りんごとももだけ選択し、【選択削除】ボタンをクリック→リスト削除したい。

【選択削除】ボタン
選択  項目1 項目2  項目3
☑選択 12345 S商店  りんご
□選択 12345 S商店  ばなな
☑選択 12345 S商店  もも
    ↓
【選択削除】ボタン
選択  項目1 項目2  項目3
□選択 12345 S商店  ばなな

スクリプトワークスペースの「選択削除」という名前で、下記に記述しました。

変数を設定[$i ; 値:1]
変数を設定[$cnt ; 値: Get (対象レコード数)]
Loop
      Exit Loop If [$I > $cnt]
      レコード/検索条件/ページへ移動 [ダイアログなし : $i]
      If [テーブル::選択 = "選択"]
      レコード/検索条件削除 [ダイアログなし]
      End If
      変数を設定 [$i ; 値: $i + 1]
End Loop
現在のスクリプト終了[]

上記のスクリプトを実行するとうまくできましたが、シンプル的なスクリプト記述は他にあればご教示いただきたいです。
私はもっと勉強したいし、役に立てることをしてあげたいと思います。

よろしくお願いいたします。

Offline

#2 2023-08-25 22:43:23

himadanee
Guest

Re: 【勉強中】検索結果のリストを選択削除する方法

ほんとにうまくできてますか?
1行目を削除すると次に「残ったレコードの」2行目に移動するので、2行目が削除されないように見えます。

他で編集中だとロックされて削除できないことがあるので、エラー処理を入れた方がいいでしょう。

#3 2023-08-26 01:53:33

Shin
Member

Re: 【勉強中】検索結果のリストを選択削除する方法

2レコード以上を連続でチェックした時に、期待している動きになりませんね。

loop 使って処理するのは結構面倒です。
新規ウインドウ
レコードの絞り込み[選択 ; "選択"]
If ( Get(最終エラー ) = 0 )
   対象レコード削除
end If
ウインドウを閉じる
とするといいでしょう。

Last edited by Shin (2023-08-26 08:49:22)

Offline

#4 2023-08-26 05:10:15

aries106
Member

Re: 【勉強中】検索結果のリストを選択削除する方法

himadanee wrote:

ほんとにうまくできてますか?
1行目を削除すると次に「残ったレコードの」2行目に移動するので、2行目が削除されないように見えます。

他で編集中だとロックされて削除できないことがあるので、エラー処理を入れた方がいいでしょう。

ありがとうございます。
例えば、1行目と3行目、4行目、6行目の選択にチェックを入れた状態で実行してみると、たしかに残りますね...。困りました。
確かにエラー処理を入れる必要があるんですね。最初にエラー処理[オン]、最後にエラー処理[オフ]を入れました。

Offline

#5 2023-08-26 05:22:55

aries106
Member

Re: 【勉強中】検索結果のリストを選択削除する方法

Shin wrote:

2レコード以上を連続でチェックした時に、期待している動きになりませんね。

loop 使って処理するのは結構面倒です。
新規ウインドウ
レコードの絞り込み[選択 ; "選択"]
If ( G絵t(最終エラー ) = 0 0
   対象レコード削除
end If
ウインドウを閉じる
とするといいでしょう。

ありがとうございます。
Loopを使って処理するのが面倒って、知りませんでした。

私のバージョンでは下記に記述します。

新規ウインドウ [スタイル: ドキュメント]
対象レコードの絞り込み [記憶する]
If [Get(最終エラー) = 0]
     対象レコード削除 [ダイアログなし]
End if
ウインドウを閉じる [現在のウインドウ]

※対象レコードの絞り込みの内容
・検索条件の指定 処理:レコードの検索 条件:テーブル::選択: [="選択"]
※Shin先生が記述いただいた「Get(最終エラー ) = 0 0」ですが、その通りに入力すると「Get(最終エラー ) = 0 」になっておりました。

試しに実行しますと「このレコードは既に別のウインドウで変更中のため、このウインドウでは変更できません」というダイアログメッセージが出ております。
どうしたらよろしいでしょうか。ご教示お願い致します。

Offline

#6 2023-08-26 08:50:29

Shin
Member

Re: 【勉強中】検索結果のリストを選択削除する方法

レコードがアクティブのままになっているのでしょう。最初に、レコードを確定 をいれておくといいです。

Offline

#7 2023-08-26 11:02:30

himadanee
Guest

Re: 【勉強中】検索結果のリストを選択削除する方法

元のウィンドウでレコードが確定してないのでは。

絞り込みでエラーが出ることは通常はないと思います。
それよりも共有ファイルの場合は「対象レコード削除」しても他で編集中のレコードは削除できずに残るはずなので、削除後のエラーコード化、対象レコードが0件になってるか確認した方がいいでしょう。

#8 2023-08-26 14:56:51

aries106
Member

Re: 【勉強中】検索結果のリストを選択削除する方法

Shin wrote:

レコードがアクティブのままになっているのでしょう。最初に、レコードを確定 をいれておくといいです。

Shin先生、ご指摘の通りでございます。

レコード/検索条件確定 [ダイアログなし]
新規ウインドウ [スタイル: ドキュメント]
対象レコードの絞り込み [記憶する]
If [Get(最終エラー) = 0]
     対象レコード削除 [ダイアログなし]
End if
ウインドウを閉じる [現在のウインドウ]

これを検証してみたところ問題ないことを確認できました。
すごく勉強になりました。ありがとうございました。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 520.24 KiB (Peak: 524.78 KiB) ]