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

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

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

You are not logged in.

Announcement

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


#1 2014-08-24 05:42:45

見習い
Member

LIST関数の結果を集計

いつもお世話になっております。
下記、行き詰まり、ご相談させてください。

Win7 FM11ProAdv  FM11server

あるリレーションより取得したLIST関数でテキストフィールドに改行にて取得しています。

1 関西
1 関西
1 関西
1 関西
1 関西
1 関西
1 中部
1 中部
2 東北
2 東北
2 東北
2 東北
2 北陸
2 北陸
2 北陸
2 北陸


という結果なんですがこの結果を違うテキストフィールドで
1 関西、6台/中部、2台  2 東北、4台/北陸、4台
という1行で表記したいです。

関西や中部などは日本のエリアを表示しており
値一覧より各エリアを選択しています。

各エリアのグローバルフィールドを作成して台数をカウントする方法は構造上できません。

あくまで現状あるLIST関数の結果を上記1行の結果に表すことは可能でしょうか。


よろしくお願いします。

Offline

#2 2014-08-25 09:51:55

SQLExecuter
Guest

Re: LIST関数の結果を集計

BaseElementsプラグイン(無料)をインストールして、SQL関数でやる。

#3 2014-08-25 11:51:14

見習い
Member

Re: LIST関数の結果を集計

SQLExecuter wrote:

BaseElementsプラグイン(無料)をインストールして、SQL関数でやる。

ありがとうございます。

改行の重複する個数を数えるのはファイルメーカーに備わった機能では無理ということでしょうか。

SQLとか全くわからないもので・・・

Offline

#4 2014-08-25 13:27:42

チポ
Member

Re: LIST関数の結果を集計

FM11ですから、
ExecuteSQL関数
はないですね。

書かれた順になるようにソートして、
スクリプトで最初から順に数えてゆけばできるでしょう。
と言っても、細かいところで面倒そうですが。。

Offline

#5 2014-08-25 14:31:47

SQLExecuter
Guest

Re: LIST関数の結果を集計

カスタム関数でもできるけど、Listにする前のデータを集計するのがデータベースというものですが・・・

こんな感じで2個定義
List_Delete_Values(values;value)
Let ( [
    v = Char(1) & value & Char(2) ;
    vl = Char(1) & Substitute ( values ; ¶ ; Char(2) & Char(1) ) & Char(2) ;
    r = Substitute ( Substitute  ( vl ; v ; "" ) ; Char(2) & Char(1) ; ¶ )
] ;
Middle ( r ; 2 ; Length ( r ) - 2 )
)

List_Count(values;colsep;rowsep)
Case (
    values = "" ; "" ;
    Let ( [
        v = GetValue ( values ; 1 ) ;
        vl = Char(1) & Substitute ( values ; ¶ ; Char(2) & Char(1) ) & Char(2) ;
        vs = Char(1) & v & Char(2) ;
        re = List_Delete_Value ( values ; v )
    ] ;
        v & colsep & PatternCount ( vl ; vs ) & Case ( re <> "" ; rowsep & List_Count ( re ; colsep ; rowsep ) )
    )
)

Char(1)Char(2)は、そんな文字は使わないだろうという前提です。
List_Count(フィールド;"、";"/")
のように使う。

#6 2014-08-25 14:36:05

見習い
Member

Re: LIST関数の結果を集計

みなさまありがとうございます。
なかなか難しそうなのでリレーション先の照合でカウントしていく形にシフトしようと思います。

めんどうなこと、というのがわかっただけでも助かりました。
ありがとうございました。

Offline

#7 2014-08-25 14:56:35

SQLExecuter
Guest

Re: LIST関数の結果を集計

こうした方が少し速かった。
Case (
    values = "" ; "" ;
    Let ( [
        v = GetValue ( values ; 1 ) ;
        re = List_Delete_Value ( values ; v )
    ] ;
        v & colsep & ( ValueCount ( values ) - ValueCount ( re ) )
         & Case ( re <> "" ; rowsep & List_Count ( re ; colsep ; rowsep ) )
    )
)

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 515.18 KiB (Peak: 519.72 KiB) ]