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

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

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

You are not logged in.

Announcement

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


#1 2023-04-28 10:23:39

ガストン
Guest

動的に作成した変数の値を返したい

$responseという変数内にXML形式のデータが格納されている状態で、
$targetに取り出したい値を入力するとその値を変数名としタグ内の値を取り出す関数を作成しました。

$response; 値:
・・・・・・・・・・・・・・・・・・
  <Status>承認待ち</Status>
・・・・・・・・・・・・・・・・・・
$target; 値:"Status"
$d; 値:
Let(
[
  変数名 = "$" & Lower ( $target ) ;
  値 = Let ([
$p1 = Position ( $response ; "<" & $target & ">" ; 1 ; 1 );
$p2 = Position ( $response ; "</" & $target & ">" ; 1 ; 1 );
$tn = $p2 - $p1];
Middle ( $response ; $p1 + Length ( "<" & $target & ">" ) ; $tn - Length ( "<" & $target & ">" ) )
) ;
関数 = "Let(" & 変数名 & "=" & Quote (値) & ";" & Quote ( "" ) & ")"
];
Evaluate (関数)
)
を実行することで
$status; 値:承認待ち の変数が出来上がります。

動的に作成した変数と値を戻す作業も動的に変化させたいのですが、その方法がわからず困っています。

現在のスクリプト終了[テキスト結果: "$" & Lower ( $target )]とすると
$statusが戻ってきて中身は何も無い変数が返ってきます。

解決方法をご存じの方おられましたら教えて頂きたいです。

#2 2023-04-28 13:09:46

himadanee
Guest

Re: 動的に作成した変数の値を返したい

作ったのは関数なのに、スクリプトで返すという点が意味がよくわかりませんが、
「$statusが戻ってきて中身は何も無い変数が返ってきます。」変数名を文字列として返しているだけなので、変数値はそれとは特に関係ないです。
$変数はローカル変数なのでスクリプトが終われば削除されますから、$$変数にしてみたら?

#3 2023-04-28 13:28:34

Shin
Member

Re: 動的に作成した変数の値を返したい

現在のスクリプト終了[テキスト結果: "$" & Lower ( $target )]とすると
にすると、文字列の、 "$" & Lower ( $target ) が返ります。
その内容を返したいのでしたら、現在のスクリプト終了[テキスト結果: Evaluate ( "$" & Lower ( $target ) )] とするといいのでは。

"$" & Lower ( $target ) & "値:" & GetValue ( Substitute ( $reponse ;[ ¶ ; "" ];[ "<" & $target & ">" ; ¶ ];[ "</" & $target & ">" ; ¶ ]) ; 2 )
だけで取得できますよ。

Last edited by Shin (2023-04-28 15:10:53)

Offline

#4 2023-04-28 15:07:09

ガストン
Guest

Re: 動的に作成した変数の値を返したい

himadanee wrote:

作ったのは関数なのに、スクリプトで返すという点が意味がよくわかりませんが、
「$statusが戻ってきて中身は何も無い変数が返ってきます。」変数名を文字列として返しているだけなので、変数値はそれとは特に関係ないです。
$変数はローカル変数なのでスクリプトが終われば削除されますから、$$変数にしてみたら?

条件を訂正します。スクリプト内で条件分岐をさせたいと考えております。
If [ $status = "承認待ち" ]
  スクリプト実行
End If
とさせたいのですが、If内の$statusに動的に作成した変数名と値を入れたいイメージです。

#5 2023-04-28 15:11:02

ガストン
Guest

Re: 動的に作成した変数の値を返したい

Shin wrote:

"$" & Lower ( $target ) & "値:" & GetValue ( Substitute ( $reponse ;[ ¶ ; "" ];[ "<" & $target & ">" ; ¶ ];[ "</" & $target & ">" ; ¶ ]) ; 2 )
だけで取得できますよ。

ありがとうございます。

$targetを"Status"とし
"$" & Lower ( $target ) & "値:" & GetValue ( Substitute ( $reponse ;[ ¶ ; "" ];[ "<" & $target & ">" ; ¶ ];[ "</" & $target & ">" ; ¶ ]) ; 2 )
とすると値は「$status値:」となるのですが、
LetやEvaluateを活用する感じでしょうか?

#6 2023-04-28 15:19:39

Shin
Member

Re: 動的に作成した変数の値を返したい

If [ $status = "承認待ち" ] が、
If [ $item = "商品名" ] となったりする、ということですか。

でしたら、それぞれをスクリプトの引数で、$arg1 $arg2 を渡しておき。
If ( GetValue ( Substitute ( $reponse ;[ ¶ ; "" ];[ "<" & $arg0 & ">" ; ¶ ];[ "</" & $arg0 & ">" ; ¶ ]) ; 2 ) = $arg1 )
とすればいいのでしょうね。

Offline

#7 2023-04-28 15:36:59

ガストン
Guest

Re: 動的に作成した変数の値を返したい

Shin wrote:

If [ $status = "承認待ち" ] が、
If [ $item = "商品名" ] となったりする、ということですか。

でしたら、それぞれをスクリプトの引数で、$arg1 $arg2 を渡しておき。
If ( GetValue ( Substitute ( $reponse ;[ ¶ ; "" ];[ "<" & $arg0 & ">" ; ¶ ];[ "</" & $arg0 & ">" ; ¶ ]) ; 2 ) = $arg1 )
とすればいいのでしょうね。

できました!!ありがとうございます!!

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 559.63 KiB (Peak: 579.16 KiB) ]