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

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

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

You are not logged in.

Announcement

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


#1 2016-12-25 12:43:13

中田
Guest

複数行の行毎に"円"などを入れたい

どなたか教えて頂けないでしょうか?
宜しくお願い致します。

ExecuteSQLにて見よう見まねで何とか商品毎の売上など抽出出来るようになりました。

大根,2,1200
人参,1,100
タマネギ,3,90

のように複数行でなっている物を

大根      2個    1,200円
人参      1個      100円
タマネギ  個      3,90円

のように"個"や"円"スペース等を付け対したいです。

どのような方法がありますでしょうか?
ExecuteSQLの中に
&"円"
等とやっても出来ませんでした。

宜しくお願い致します。

FMA14
MacOS 10.11.16

#2 2016-12-25 13:16:31

Hiro
Member

Re: 複数行の行毎に"円"などを入れたい

FM標準機能を使わず、わざわざ低機能のSQLインターフェースを使う理由は?

Offline

#3 2016-12-25 14:29:09

中田
Guest

Re: 複数行の行毎に"円"などを入れたい

Hiro様
返信有り難うございます。

SQLにした理由は単に商品毎等に集計する方法が簡単そうだったからです。

他にもっと良い方法がありそうですが、教えて頂けたら幸いです。

宜しくお願い致します。

#4 2016-12-25 14:31:23

中田
Guest

Re: 複数行の行毎に"円"などを入れたい

補足ですが用途は表示だけで無くテキストでまとめてメールで送れるようにしたいです。
なので集計フィールドは避けた方が良いと思いました。
(自分が理解していないだけと思いますが)

宜しくお願い致します。

#5 2016-12-25 15:03:03

Hiro
Member

Re: 複数行の行毎に"円"などを入れたい

集計はFM標準でサポートされていますので、オフィシャル解説をご覧ください。
例えば、この Webヘルプ とか。

> 補足ですが用途は表示だけで無くテキストでまとめてメールで送れるようにしたいです。
なら、集計結果を「pdfファイルとして保存」で、「ファイルを添付した電子メールの作成」オプション指定すれば良いでしょう。

Offline

#6 2016-12-25 15:18:03

中田
Guest

Re: 複数行の行毎に"円"などを入れたい

Hiro様

返信有り難うございます。

集計フィールド使用を勉強したいと思います。

その上で可能性や学習としてお聞きしたいのですが上記複数行のテキストの場合、行毎に任意の場所に任意の文字を入れる事は出来ますでしょうか?

前述の大根等の場合
行毎に左から2個目のスペースに"個"末尾に"円"
のような。

宜しくお願い致します。

#7 2016-12-25 15:25:21

Hiro
Member

Re: 複数行の行毎に"円"などを入れたい

レイアウト上のフィールドの表示書式指定は、インスペクタのデータタグで設定出来ます。

Offline

#8 2016-12-25 18:22:12

旅人
Member

Re: 複数行の行毎に"円"などを入れたい

単位マスタを作って小計パートの品名の右にマージフィールド<<マスタ::単位>>を置けば
大根       2本
人参       1本     
タマネギ 1個     
もできるかも?

Offline

#9 2016-12-25 18:33:33

シャチ
Member

Re: 複数行の行毎に"円"などを入れたい

どうしても書き出しは テキスト ということになると
それぞれの数値フィールドに対して 個のフィールド &"個" 円のフィールドには 円のフィールド &”円”
と計算フィールドにして
それらを書き出せばいいとも思うけど

Last edited by シャチ (2016-12-26 09:16:24)

Offline

#10 2016-12-26 09:08:51

tim
Guest

Re: 複数行の行毎に"円"などを入れたい

SQLでの連結は+か|| 文字定数はダブルでなくシングル’個'
だけど、SUM()など集計関数の結果に対しての演算ができない(FMの制限)ので、この場合は無理そう。
3ケタカンマも、ほぼ不可能だし。

#11 2016-12-26 09:20:43

シャチ
Member

Re: 複数行の行毎に"円"などを入れたい

どうも、フィールドに関しての解釈が違うようにおもうのですが。
計算は集計フィールドのもの扱えますが。
FMPにはFMPの考え方があると思うのですが。

Last edited by シャチ (2016-12-26 09:41:01)

Offline

#12 2016-12-26 09:38:32

tim
Guest

Re: 複数行の行毎に"円"などを入れたい

ああ、引用しないで書いたのでわかりにくかったかもしれませんけど、私のコメントはExecuteSQLでやるとしたらどうなるか、という最初の質問に対する回答です。結論は「無理でしょう」

集計フィールドを計算で使う場合はGetSummary()関数を使いますね。メールならPDFの方がお勧めです。

#13 2016-12-26 09:43:07

シャチ
Member

Re: 複数行の行毎に"円"などを入れたい

集計フィールド & ”テキスト” も計算結果を残せます。

Offline

#14 2016-12-26 09:55:30

Shin
Member

Re: 複数行の行毎に"円"などを入れたい

レイアウト上で書式を設定しておき、エクスポートの際にその書式を適応させれば良いだけでは。数値の単位や3桁カンマも活きますよ。

Offline

#15 2016-12-26 11:01:08

qb_dp
Member

Re: 複数行の行毎に"円"などを入れたい

ExecuteSQLの場合:
単位だけなら、クエリーを

select
"名"
,SUM("数量")
,'_(:3」∠)_個'
,SUM("金額")
,'_(:3」∠)_円'
FROM "テーブル"
GROUP BY "名"

ExecuteSQL ( $query ; "" ; "" )
※フィールド区切り は、デフォルトの コンマ を想定

このようにしておいて、不要な文字列を置換すれば、比較的カンタンに単位がつけられます。

Substitute ( result ; 
		[",_(:3」∠)_個" ; "個"]
	;	[",_(:3」∠)_円" ; "円"] )

Last edited by qb_dp (2016-12-26 11:03:04)

Offline

#16 2016-12-26 13:52:29

qb_dp
Member

Re: 複数行の行毎に"円"などを入れたい

ExecuteSQLの場合:
以下のようにすれば、
スペースも3桁コンマ区切りも処理できました。
書き方のコツをつかめば、場合によっては、ラクです。

クエリーを

"
select
'\"'||\"名\"||'__\"&'
,SUM(\"数量\")
,'&\"個__\"'
,'&NumToJText ('
,SUM(\"金額\")
,'; 1 ; 0 )'
,'&\"円\"'
FROM \"テーブル\"
GROUP BY \"名\"
"

ExecuteSQL ( $query ; " " ; " & Char ( 13 ) & " )
※フィールド区切り は、スペース

このようにしておいて、「Evaluate」を実行。

Evaluate ( $result )




※上記のクエリーは、スクリプト内に記述した場合で、フィールド内に記述した場合は、以下のようになります。(エスケープなし)

select
'"'||"名"||'__"&'
,SUM("数量")
,'&"個__"'
,'&NumToJText ('
,SUM("金額")
,'; 1 ; 0 )'
,'&"円"'
FROM "テーブル"
GROUP BY "名"

Last edited by qb_dp (2016-12-26 13:52:55)

Offline

#17 2016-12-26 13:57:19

tim
Guest

Re: 複数行の行毎に"円"などを入れたい

なるほどー、別の列にしてしまえばいいのか。

#18 2016-12-26 17:53:17

Hiro
Member

Re: 複数行の行毎に"円"などを入れたい

> #16 qb_dpさん、流石!
ここのマスターさんは何時も素敵な♦ヒラメキ♦を披露くださる。

SQLの結果を、関数式の定義にしてしまうとは!!

Last edited by Hiro (2016-12-26 17:59:35)

Offline

#19 2016-12-26 20:13:00

中田
Guest

Re: 複数行の行毎に"円"などを入れたい

レス、遅くなり申し訳ありません。
大変貴重な返信の数々、ありがとう御座います。

qb_dpさんの方法はかなり高度な物と思いますが、時間かけて勉強させて頂きます。
恐らくEvaluateを使うので再帰的に計算すると思うのですが現状では理解できません。。

取りあえずスクリプトで行数を取得、その数までループ、Substituteにて置換、として何とか行毎に装飾できました。

高度且つ有益なご教授ありがとうございました。
まだ理解できていないので1つずつ勉強させて頂きます。

#20 2016-12-26 20:50:51

おけさ
Guest

Re: 複数行の行毎に"円"などを入れたい

>Evaluateを使うので再帰的に計算
再帰ではないですよ。簡単に例えれば、SQLの結果を
1,2
でなく
1+2
になるようにして、結果として3を得るようなものです。

#21 2016-12-27 02:31:37

Hiro
Member

Re: 複数行の行毎に"円"などを入れたい

qb_dpさんのSQL活用の新展開は絶妙ですが、本案件の解法としてSQLはやはりお薦め出来ません。
初心者なら直の事、FMの標準的な集計法である集計レイアウトによる解法をまずはマスターされた方が、...

Offline

#22 2016-12-28 09:22:52

中田
Guest

Re: 複数行の行毎に"円"などを入れたい

確かに、まずは標準機能を学んでいきたいと思います。

ありがとう御座いました。

#23 2016-12-28 11:53:03

qb_dp
Member

Re: 複数行の行毎に"円"などを入れたい

ややこしそうに見えますが、意外と単純ですよ。

select
'"'||"名"||'__"&'
,SUM("数量")
,'&"個__"'
,'&NumToJText ('
,SUM("金額")
,'; 1 ; 0 )'
,'&"円"'
FROM "テーブル"
GROUP BY "名"

フィールド名を変更して「WHERE」を追加すれば、流用は、カンタンかと思ったりします。
私は、結構利用しています。「ExecuteSQL」(^^;)

Offline

#24 2016-12-31 14:22:57

中田
Guest

Re: 複数行の行毎に"円"などを入れたい

qb_dp様
とても高度な方法を教えて下さり有り難うございます。
色々上記を元に試したのですが上手くいきません。

出来ましたら教えて頂けないでしょうか?
現在
ExecuteSQL (
"SELECT \"商品名\", SUM(\"数量\"), SUM(\"金額\")
  FROM \"deta\"
  WHERE \"日付\" = ?
  GROUP BY \"商品名\""
; "" ; "" ; 日付
)
にて単純な集計が出来ています。

これをqb_dp様の式に当てはめようとして
ExecuteSQL (
"select
'"'||"商品名"||'__"&'
,SUM("数量")
,'&"個__"'
,'&NumToJText ('
,SUM("金額")
,'; 1 ; 0 )'
,'&"円"'
FROM "deta"
WHERE \"日付\" = ?
GROUP BY "商品名"
; "" ; "" ; 日付"
)

等々やってみたのですが上手くいきません。
どうか上記項目の場合どうすれば良いかご教授頂けないでしょうか?
何度も申し訳ありません。
宜しくお願い致します。

#25 2016-12-31 21:15:27

Hiro
Member

Re: 複数行の行毎に"円"などを入れたい

#16 qb_dp wrote:

ExecuteSQLの場合:
以下のようにすれば、
スペースも3桁コンマ区切りも処理できました。
書き方のコツをつかめば、場合によっては、ラクです。

クエリーを

"
select
'\"'||\"名\"||'__\"&'
,SUM(\"数量\")
,'&\"個__\"'
,'&NumToJText ('
,SUM(\"金額\")
,'; 1 ; 0 )'
,'&\"円\"'
FROM \"テーブル\"
GROUP BY \"名\"
"

ExecuteSQL ( $query ; " " ; " & Char ( 13 ) & " )
※フィールド区切り は、スペース

このようにしておいて、「Evaluate」を実行。

Evaluate ( $result )


※上記のクエリーは、スクリプト内に記述した場合で、フィールド内に記述した場合は、以下のようになります。(エスケープなし)

select
'"'||"名"||'__"&'
,SUM("数量")
,'&"個__"'
,'&NumToJText ('
,SUM("金額")
,'; 1 ; 0 )'
,'&"円"'
FROM "テーブル"
GROUP BY "名"

> これをqb_dp様の式に当てはめようとして
「"」のエスケープなしの式を適用するなら、そのクエリー式部をフィールド内に記述 にしないと!

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 8 queries executed - Memory usage: 575.2 KiB (Peak: 612.1 KiB) ]