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

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

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

You are not logged in.

Announcement

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


#1 Re: 初心者のFileMaker pro Q&A » 複数条件検索(Excelシートからインポート)した検索条件テーブルを使った検索スクリプトの作り方 » 2022-03-04 15:51:30

チポさま

トピック投稿者の2022_Feb_QQでございます。
丁寧にご指南賜り、ありがとうございます。

教えて頂きました通り、

   レコード/検索条件/ページへ移動 [ 次の; 最後まできたら終了 ]

の次の行に
   レコード/検索条件確定 [ダイアログあり:オフ]

を追記いたしましたところ、無事、全件検索条件を取得することができました。

なんとか無事にスクリプトを完成できましたのは、
チポさま、himadaneeさまが、
基礎の基礎もわかっていない小生に、諦めずに辛抱強くお付き合いくださり、
ご指南下さったおかげだと心より感謝しております。

本当にありがとうございました。
今後とも、お世話になることもあるかと思いますが、何卒、
よろしくお願い申し上げます。

#2 Re: 初心者のFileMaker pro Q&A » 複数条件検索(Excelシートからインポート)した検索条件テーブルを使った検索スクリプトの作り方 » 2022-03-04 10:42:23

himadaneeさま、チポさま

トピック投稿者の2022_Feb_QQでございます。
御指南ありがとうございます。
変数の$$は、ご指南頂きましたとおり、すべて$に戻しても動くことが確認できました。
ありがとうございました。

前回の投稿スクリプトとのつながりがわかりやすいように、
以下のスクリプトでは、$$を残した形で記載したままにさせて下さい。

himadaneeさま
ご指摘の件、
        Exit Loop If [ $カウント2>$$カウント ] のミスタイプでした。

チポさま
・ フィールドは、一番目のフィールドにレコードIDを追加したので、2番目からの検索で
    OKになりました。前提変更のコメント記載漏れのため、混乱させてしまい申し訳ございませんでした。

・三重ループの件、下記のスクリプトのようにループを二重にしてみましたが、
   仮に記載のあるフィールドが、最初のレコードの3番目のフィールドの場合、
   1つ目のレコードの3番目のフィールドの内容を取得し、
   次のレコードに移動すると、
   次のレコードは、4番目のフィールドからしか検索が始まらない現象が起こっています。

    フィールドの数で制御したかったのですが、途中のフィールドで次のフィールドに移った際に
    最初のフィールドから検索が始まらないため、Exit Loop If もフィールドの数で制御できなかったので、
    フィールド制御のスクリプトを一旦消しました。

ーーーーー
Loop
       Loop
               次のフィールドへ移動
                 Exit Loop If [ not IsEmpty ( Get ( アクティブフィールド内容 ) ) ]
       End Loop

       変数を設定 [ $$リスト; 値:List($$リスト; Get ( アクティブフィールド名 ); Get ( アクティブフィールド内容 ) ) ]

       レコード/検索条件/ページへ移動 [ 次の; 最後まできたら終了 ]
       変数を設定 [ $$カウント2; 値:$$カウント2∔1 ]
       Exit Loop If [ $$カウント2>$$カウント ]
End Loop
ーーーーーー

恐れ入りますが、次のレコードに移動した時に最初のフィールドから検索を始めるには
どうしたらよろしいのでしょうか?
ご指南いただけましたら、幸甚に存じます。

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

#3 Re: 初心者のFileMaker pro Q&A » 複数条件検索(Excelシートからインポート)した検索条件テーブルを使った検索スクリプトの作り方 » 2022-03-03 18:14:45

チポさま、himadaneeさま

トピック投稿者の2022_Feb_QQでございます。
何度も御指南ありがとうございます。

おかげさまで、以下のスクリプトで、とりあえずは、
検索条件テーブルから、テーブル1の検索条件画面に
検索条件をすべてコピーすることができましたが、

チポさまのおっしゃるとおり、
>>入力されたフィールドに行ったらそれ以降のフィールドを見に行きません。
ということで、
入力されたフィールド以降は次のレコードに移動でOKです。

タブ順は設定はしていますが、なぜか、もともと書いていたスクリプトでは、
Loopを抜けてくれず、最後のフィールドまで行ってもまた同じレコードの段を
チェックするエンドレスループになってしまったため、
フィールド数をExit Loop IFの条件に加えて、Loopを脱する記載にしています。

当初、変数は、$で始まる名前にしていたのですが、
$のままだとListでうまく値を取得できなかったり、Loopがうまく動かなかったりしたため
一部の変数を$$で始まる名称にしております。

きっともっと美しい書き方があると思われますので、フィールドの移動の仕方と併せて
どこを修正すればよいのか、御指南頂けましたら、嬉しいです。

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

----

ブラウズモードに切り替え
レイアウト切り替え [ 「検索条件」 (検索条件) ]
レコード/検索条件/ページへ移動 [ 最初の ]

変数を設定 [ $$カウント; 値:Get ( レコード総数 ) ]
変数を設定 [ $$カウント2; 値:1 ]
変数を設定 [ $$リスト; 値:"" ]
変数を設定 [ $$フィールドの数; 値:1 ]

Loop
       Loop
               Loop
                      次のフィールドへ移動
                      変数を設定 [ $$フィールドの数; 値:$$フィールドの数+1 ]
                      Exit Loop If [ $$フィールドの数>34 ]
                      Exit Loop If [ not IsEmpty ( Get ( アクティブフィールド内容 ) ) ]
               End Loop

               Exit Loop If [ $$フィールドの数>34 ]
               変数を設定 [ $$リスト; 値:List($$リスト; Get ( アクティブフィールド名 ); Get ( アクティブフィールド内容 ) ) ]
       End Loop

       レコード/検索条件/ページへ移動 [ 次の; 最後まできたら終了 ]
       変数を設定 [ $$カウント2; 値:$$カウント2∔1 ]
       変数を設定 [ $$フィールドの数; 値:1 ]
       Exit Loop If [ $カウント>$$カウント ]
End Loop

変数を設定 [ $$リスト要素数; 値:ValueCount ( $$リスト ) ]

レイアウト切り替え [ 「レイアウト1」 (テーブル1) ]
検索モードに切り替え [ ]

変数を設定 [ $n; 値:1 ]

Loop
       新規レコード/検索条件
      フィールドを名前で設定 [ Get ( アクティブフィールドテーブル名 )&"::"&GetValue ( $$リスト;$n); GetValue ( $$リスト;$n+1 ) ]
       変数を設定 [ $n; 値:$n+2 ]
       Exit Loop If [ $n+1>$$リスト要素数 ]
End Loop

#4 Re: 初心者のFileMaker pro Q&A » 複数条件検索(Excelシートからインポート)した検索条件テーブルを使った検索スクリプトの作り方 » 2022-03-02 18:43:26

himadaneeさま、チポさま

トピック投稿者の2022_Feb_QQでございます。
御指南ありがとうございます。

最後のレコードまで移動しても
最後のレコードデータをループして取得し続けてしまい、
Loopから離脱できませんでした。

Loop
    Loop
        Loop
           次のフィールドへ移動
         Exit loop If [Get (アクティブフィールド名 ) = "最後のフィールド名" ]
           Exit Loop If [not IsEmpty ( Get (アクティブフィールド内容 ) )]
        End Loop
        変数を設定 [変数名 ; 値: List ( 変数名 ; Get ( アクティブフィールド名 ) ; Get ( アクティブフィールド内容 ) )]
        次のフィールドへ移動
       Exit loop If [Get (アクティブフィールド名 ) = "最後のフィールド名" ]
    End Loop
    レコード/検索条件/ページへ移動 [次の; 最後まできたら終了 : オン]
End Loop

再度、御指南いただけましたら、嬉しく存じます。
よろしくお願い申し上げます

#5 Re: 初心者のFileMaker pro Q&A » 複数条件検索(Excelシートからインポート)した検索条件テーブルを使った検索スクリプトの作り方 » 2022-03-02 16:00:54

トピック投稿者の2022_Feb_QQでございます。

Loop
  変数を設定 [$リスト; 値:List (Get (アクティブフィールド名 ) ; Get (アクティブフィールド内容 ))]
  次のフィールドへ移動
End Loop

でフィールドデータを取得しようとしましたが、
テストデータでレコード数が4個だったのですが、
なぜか、4番めのレコードの値のみが取得される形で
ループされ、最終的に、最終フィールドの4レコード目の値しか
取得できませんでした。

恐れ入りますが、もう一度、スクリプトの書き方を御指南頂けませんでしょうか?

よろしくお願い申し上げます。

#6 Re: 初心者のFileMaker pro Q&A » 複数条件検索(Excelシートからインポート)した検索条件テーブルを使った検索スクリプトの作り方 » 2022-02-22 18:58:56

チポさま

トピック投稿者の2022_Feb_QQでございます。
トライしましたが、うまく書けませんでした。

レイアウト切り替え[ 「検索条件」 (検索条件) ;アニメーション:なし]
レコード/検索条件/ページヘ移動 [最初の]
Loop
変数を設定 [$LIST ; 値:List (Get (アクティブフィールド名) ; get (アクティブフィールド内容)]
次のフィールドへ移動
End Loop

レイアウト切り替え[ 「レイアウト 2」 (GLテーブル) ]
  検索条件を変更
  新規レコード/検索条件
Loop
変数を設定[$n ; 値:1]
レコード/検索条件/ページヘ移動 [最初の]
フィールドを名前で設定 [ Get ( アクティブフィールドテーブル名 )&"::"&GetValue ( $LIST; 2n-1; GetValue ( $LIST; 2n ) )]
End Loop
  検索実行[ ]
レイアウト切り替え[ 「レイアウト 2」 (GLテーブル);アニメーション:なし ]

という風に書こうとしたのですが、
フィールドを名前で設定 [ Get ( アクティブフィールドテーブル名 )&"::"&GetValue ( $LIST; 2n-1; GetValue ( $LIST; 2n ) )]
のところのGet以降の式が入力してもOKがクリックできませんでした。

誠に申し訳ございませんが、スクリプトの書き方を御指南頂けませんでしょうか?

よろしくお願い申し上げます。

#7 Re: 初心者のFileMaker pro Q&A » 複数条件検索(Excelシートからインポート)した検索条件テーブルを使った検索スクリプトの作り方 » 2022-02-22 14:55:50

チポさま

早速、ご説明ありがとうございます!
ご説明頂いた方法で、スクリプトをうまく書けるかどうか不安ですが、
トライしてみて、うまく動かなければ、また追加で質問させて頂きたいと
思います。

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

#8 Re: 初心者のFileMaker pro Q&A » 複数条件検索(Excelシートからインポート)した検索条件テーブルを使った検索スクリプトの作り方 » 2022-02-22 11:59:17

himadanee さま
チポさま

ご提案ありがとうございます。
トピック投稿者の2022_Feb_QQでございます。

タブという機能があるのですね。

チポさまが、面倒と言われるほど難解なスクリプトを理解できるか
自信がありません・・・・。
固有名詞ぐらいは変更できると思うというレベルでございますので、
可能な限り、詳しいスクリプトの記載を教えて頂けましたら、助かります。

よろしくお願い申し上げます。

#9 Re: 初心者のFileMaker pro Q&A » 複数条件検索(Excelシートからインポート)した検索条件テーブルを使った検索スクリプトの作り方 » 2022-02-22 10:36:59

チボ さま
トピック投稿者の2022_Feb_QQでございます。
ご確認ありがとうございます。
また、全角・半角の扱いについて教えて頂きありがとうございました。

ご質問の件、初心者すぎて、理解が追い付いていないかもしれません。。。

GLテーブルと、検索条件テーブルの
フィールドの並び順は同じにしています。

検索条件は、必ずしも左にあるフィールドの方が
上のレコードに条件が入っているとは限らないため、
キーワードの入力位置のイメージの意図が伝わりやすくなるように
当初投稿のキーワードの交際費を2レコード目に移動してみました。

1フィールド目(ID)にレコードがない場合、
2フィールド目(仕訳日)にレコードがあるか判断する を
繰り返して、
どこかのフィールドで、
1行目のレコード行ではなく、
どのレコード行にデータがあっても取得できて、
また、次のレコードがあるフィールドの
1行目にレコードがあっても取得できる

というご提案ならば、小生の作りたいスクリプトになると思われます。

ウィンドウの行き来と対象レコードの拡大で
検索スピードはだいぶ異なるのでしょうか?

GLデータ自体は、1000万行ぐらいあってかなり重たいため、
なるべく検索スピードが速くなる方法を御指南いただけましたら、
幸甚に存じます。

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

#10 Re: 初心者のFileMaker pro Q&A » 複数条件検索(Excelシートからインポート)した検索条件テーブルを使った検索スクリプトの作り方 » 2022-02-22 09:39:32

トピック投稿者の2022_Feb_QQでございます。
みなさま色々、ご質問、ご確認ありがとうございます。

himadenee さま
混乱させてしまって申し訳ございません。
キーワードはあくまでもすべて「or」条件でお願いします。

チボ さま
検索条件の1レコードで複数行に値を入力してしまうと
「AND」条件になるとの理解ですので、
1レコードには、どこか1か所のフィールドのみ
キーワードが入力されている状態を前提で考えております。

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

#11 Re: 初心者のFileMaker pro Q&A » 複数条件検索(Excelシートからインポート)した検索条件テーブルを使った検索スクリプトの作り方 » 2022-02-22 08:59:25

himadanee さま

確かに3年分のGLから検索するという小生の説明では、「AND」と
読めてしまいますね。わかりにくい書き方で申し訳ございませんでした。
3年分のGLだけでなく、一旦、特定の条件で、絞ったGLから検索するときには、
その中のデータで2021と入っているもの、もしくは、 〇〇会社と入っているものという
条件にしたい時もあるというだけで、年度とか会社が「AND」に見えますが、
あくまでも、存在するすべてのフィールドのうち、複数のフィールドに
複数のキーワードを「OR」条件でいれた場合という
前提で御指南いただけましたら、嬉しく存じます。

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

#12 Re: 初心者のFileMaker pro Q&A » 複数条件検索(Excelシートからインポート)した検索条件テーブルを使った検索スクリプトの作り方 » 2022-02-22 08:28:54

himadanee さま

ご確認ありがとうございます。
画面だとわかりにくいですが、
すべてのキーワードは別々の行(レコード)に入れており、
「OR] 条件になっているという理解です。

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

#13 初心者のFileMaker pro Q&A » 複数条件検索(Excelシートからインポート)した検索条件テーブルを使った検索スクリプトの作り方 » 2022-02-21 21:30:28

2022_Feb_QQ
Replies: 28

3年分の総勘定元帳(GL)データから、キーワードに一致する取引を検索したいと
考えております。

例えば、下記、フィールドの並びで
GLそのものの入っている 「GLテーブル」 と キーワード検索をするブランクの「検索条件テーブル」があります。
<フィールドの並び>
ID | 仕訳日 | 仕訳番号 | 仕訳枝番 | 勘定科目番号 | 勘定科目名 | 通貨名 | 借方金額 | 貸方金額 | 摘要1 | 摘要2 | 相手先コード | 相手先名 | 備考     |
1| 2021/10/31 | A000011 | 001 | 0001-00    | 現金           | JPY    |     2,000 |         0  |  支払 | 顧客 | C00001  |〇〇会社| 10月分xx費 |

検索条件は、「検索条件テーブル」に同じフィールドの並びのExcelに入力したものを使いたいと考えております。
(実際にはキーワードが沢山あるため手入力は難しいため)

<検索条件テーブル インポート条件例>
ーーーーーーーーーーー
ID | 仕訳日 | 仕訳番号 | 仕訳枝番 | 勘定科目番号 | 勘定科目名 | 通貨名 | 借方金額 | 貸方金額 | 摘要1 | 摘要2 | 相手先コード | 相手先名 | 備考 |   
                                                                                                                                   飲食
                                                                         交際費
                                                                                                                                   喫茶
                                                                                                                                              ギフト
                                                                                                                                              贈答
                                                                                                                                              寄付
                                                                       販売促進費
                                                                                                                                   贈答
                                                                                                   >=10000
                                                                                         JPY
                                                                                                                                                              ○○会社
     2021
ーーーーーーーーーー
(上記は表示が崩れる可能性があるため、条件に入っている内容をテキスト表示)
勘定科目名:交際費、販売促進費
摘要欄1:飲食、喫茶、贈答
摘要欄2:ギフト、贈答、寄付
借方金額:>=10000
通貨名:JPY
相手先名:〇〇会社
仕訳日:2021



のように、各フィールドにランダムに入っています。
どこのフィールドにいくつ条件を入れるかは、検索の都度変わります。


検索条件が例えば「摘要1」にしか入っていない場合は、
この掲示版の過去のQ&Aを参考にさせて頂き、
以下のスクリプトを使って検索することができました。

<スクリプト ”テスト”>

レイアウト切り替え[ 「検索条件」 (検索条件) ;アニメーション:なし]
レコード/検索条件/ページヘ移動 [最初の]
Loop
  コピー[ [ 選択;検索条件::摘要1 ]
  レイアウト切り替え[ 「レイアウト 2」 (GLテーブル) ]
  検索条件を変更
  新規レコード/検索条件
  貼り付け[ 選択;[ GLテーブル::摘要1 ]
  検索実行[ ]
  レイアウト切り替え [ 「検索条件」 (検索条件) ;アニメーション:なし]
  レコード/検索条件/ページヘ移動 [ 次の; 最後まできたら終了:オン]
End Loop
レイアウト切り替え[ 「レイアウト 2」 (GLテーブル);アニメーション:なし ]

ーーーここまでスクリプト

上記のように複数フィールドにまたがった条件の場合は、
スクリプト ”テスト” のコードでは検索できませんでした。

条件欄にブランクがあると
スクリプト ”テスト” をフィールド名毎につくって、つなげたスクリプトにしても
1フィールド目(ここではID)がブランクなので、
最初にキーワードが入っているキーワード(上記でいえば、交際費)が
IDの欄のキーワードのような設定になってしまうなど、うまくいきません。

検索条件で抽出されたデータを無事に抽出できましたら
抽出されたデータの仕訳番号を含むデータを3年分のGLから抽出し、
Excelシートにエクスポートしたいと考えております。
(キーワード検索の場合は、仕訳の借方、貸方が片方しか抽出されないこともあり、
借方、貸方が同じ金額にならないため)

恐れ入りますが、まだ使い始めたばかりなので、どうしたら解決できるのか
全く分かりかねますので、お手数をお掛け致しますが、
細かいスクリプトの書き方も含めて、御指南いただけましたら、
幸甚に存じます。
よろしくお願い申し上げます。

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.011 seconds, 7 queries executed - Memory usage: 697.48 KiB (Peak: 780.98 KiB) ]