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

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

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

You are not logged in.

Announcement

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


#1 2021-07-14 16:39:34

koko009
Guest

ExecuteSQL("select・・の列名(フィールド名)を自動設定する方法

いつもお世話になっております。今回は、フィールド名の取得によって作成した改行リストから下記の式の列名(フィールド名)を自動設定する方法はないかと悩んでいます。
ExecuteSQL("select \"回数\",\"国語\",\"数学\" from \"成績\"","","")
例えば「\"回数\",\"国語\",\"数学\"」を作りExecuteSQL に挿入しても
Let([ins0= "\\\""& Substitute ( $lst1 ; ¶ ;"\\\",\\\"");len=Length ( ins0 );ins1=Left(ins0;len-3)];ExecuteSQL ("select &ins1& from \"成績\"";Char(9);""))
では不成立となり
せいぜい成立したのは、下記の式だけです。
ExecuteSQL ("select \""& GetValue ( $lst1 ; 1 )&"\",\""& GetValue ( $lst1 ; 2 )&"\",\""& GetValue ( $lst1 ; 3 )&"\",\""& GetValue ( $lst1 ; 4 )&"\",\""& GetValue ( $lst1 ; 4 )&"\" from \"成績データ\"";Char(9);"")
もし何か方法があればご教授お願いいたします。

#2 2021-07-15 07:57:34

himadanee
Guest

Re: ExecuteSQL("select・・の列名(フィールド名)を自動設定する方法

列名を囲うのは””だけでいいんで、¥が出てくるのは""の中に書くからであって計算式で生成する必要ありません。
Substitute ( $lst1 ; ¶ ;"\\\",\\\"")
でなく
Substitute ( $lst1 ; ¶ ;"\",\"")

それと
ExecuteSQL ("select &ins1& fr
だと連結になってませんので、
ExecuteSQL ("select " & ins1 & "fr

#3 2021-07-15 08:57:15

qb_dp
Member

Re: ExecuteSQL("select・・の列名(フィールド名)を自動設定する方法

すべてのフィールドで良いなら、
SELECT * FROM テーブル名

Offline

#4 2021-07-15 09:44:14

koko009
Guest

Re: ExecuteSQL("select・・の列名(フィールド名)を自動設定する方法

himadanee様 ご指摘の計算式では、
Substitute ( $lst1 ; ¶ ;"\",\"")
結果
試験回","国語","数学","理科","英語","
となりExecuteSQL ("select・・の列名としては使えないと思いますが・・
また私の方法で「\"回数\",\"国語\",\"数学\"」を作り
ExecuteSQL ("select " & ins1 & " fr
でも不成立でした。何か勘違いしているのでしょうか?

qb_dp様
別にidフィールド等が有り今後はsum(),count()の計算になるので「SELECT * FROM テーブル名」では無理です。

#5 2021-07-15 11:12:24

himadanee
Guest

Re: ExecuteSQL("select・・の列名(フィールド名)を自動設定する方法

ああ、連結の仕方も直さないとだめですね。

Let([ins0= Substitute ( $lst1 ; ¶ ;"\",\"");len=Length ( ins0 );ins1=Left(ins0;len-2)];ExecuteSQL ("select \"" & ins1 & " from \"成績\"";Char(9);""))
かな。


先に書いた通り、
「\"回数\",\"国語\",\"数学\"」を作り
ではだめなんです。\"と書くのはあくまで全体が""の中にあるからです。

ExecuteSQL("select \"回数\",\"国語\",\"数学\" from \"成績\"","","")
の、SQL文の計算結果を見てください。
"select \"回数\",\"国語\",\"数学\" from \"成績\""
この値の中には¥という文字はありません。

#6 2021-07-15 11:59:10

koko009
Guest

Re: ExecuteSQL("select・・の列名(フィールド名)を自動設定する方法

himadanee様 ご教授してもらいました式
Let([ins0= Substitute ( $lst1 ; ¶ ;"\",\"");len=Length ( ins0 );ins1=Left(ins0;len-2)];ExecuteSQL ("select \"" & ins1 & " from \"成績\"";Char(9);""))
で成立しました。
勝手な解釈ですが、ExecuteSQL ("select・・で\"で列名を囲む場合はエスーケープ処理で使うのでありテキストの中で\を使えば文字列として認識されるためエスーケープ処理で使えないと思えばいいのですかね・・ダブルクォートを含め目に見える文字がデジタル処理では使えないものがあったり未だよく理解できない
今後sum(),count()の計算式に使う方法を考えます。有り難うございました。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.004 seconds, 9 queries executed - Memory usage: 515.11 KiB (Peak: 519.65 KiB) ]