初心者のFileMaker pro Q&A

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

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

ログインしていません。

アナウンス

Claris FileMaker Pro 19 ヘルプ
新しい質問は、新規トピック から投稿して下さい。


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

koko009
ゲストユーザー

[解決] 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
ゲストユーザー

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

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

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

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

qb_dp
メンバー

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

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

オフライン

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

koko009
ゲストユーザー

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
ゲストユーザー

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
ゲストユーザー

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()の計算式に使う方法を考えます。有り難うございました。

クィック投稿

メッセージを書いて送信してください。
登録の確認

実在の人物による登録であることを確認します。

Board footer