変数と変数を結合した結果の変数名から値を取得したい

【質問】
変数と変数を結合した結果の変数名から値を取得したい。
具体的には、データセット名は固定だが、後続の列名を変数で指定し、値を取得したい。
(実現したい動作)
「dataset1.%ColumnName%」から値を取得したい。
%ColumnName%の部分には、A ~ ZZなど、Excelの列名が入る。
エクスプレッションビルダーから
「%"dataset1." & ColumnName%」とすると「dataset1.K」という文字列が返ってきてしまう。
列名を動的に指定しつつ、データセットから値を取得する方法は無いだろうか。

【回答】
固定文字列と変数、および変数と変数を結合した結果の変数名から値を取得するには、Extended Functions配下
関数「GetVarValueByVarName(varName)」を使用します。
今回の場合は、「dataset1.」が固定文字列、後ろの列名が変数により指定される動的文字列となるため、
%GetVarValueByVarName("dataset1." & ColumnName)%
のように指定します。
これにより、今回参照したい列(=ColumnName)がN列だったとすると
まず引数内の文字列が「dataset1.N」と認識され、
それに続いて関数「GetVarValueByVarName(varName)」により「dataset1.N」が解決され
「dataset1」の「N」列にあたるデータの値が返されます。

Excelの列名の動的指定(https://automate.sct.co.jp/knowledge/1239/)を使用しつつデータセットから値を取得するには
こちらの方法を使用する必要があります。

以下、サンプルです。

<AMVARIABLE NAME="var_count" VALUE="0" />
<AMSHOWDIALOG ACTIVITY="custom" RESULTSTRUCTURE="varFormdata%var_count%" RESULTMETADATA="varFormMetadata%var_count%">&lt;AutoMateDialogDesigner&gt;
&lt;Property name="ErrorCaption"&gt;Form Designer&lt;/Property&gt;
&lt;Property name="AutoAlignAid"&gt;SnapToGrid&lt;/Property&gt;
&lt;Property name="DesignerContextMenu"&gt;False&lt;/Property&gt;
&lt;Property name="AutoScroll"&gt;False&lt;/Property&gt;
&lt;Property name="AutoScrollMargin"&gt;0, 0&lt;/Property&gt;
&lt;Property name="AutoScrollMinSize"&gt;0, 0&lt;/Property&gt;
&lt;Property name="AccessibleDescription" /&gt;
&lt;Property name="AccessibleName" /&gt;
&lt;Property name="AccessibleRole"&gt;Default&lt;/Property&gt;
&lt;Property name="AllowDrop"&gt;False&lt;/Property&gt;
&lt;Property name="AutoScrollOffset"&gt;0, 0&lt;/Property&gt;
&lt;Property name="BackColor"&gt;Window&lt;/Property&gt;
&lt;Property name="BackgroundImageLayout"&gt;Tile&lt;/Property&gt;
&lt;Property name="CausesValidation"&gt;True&lt;/Property&gt;
&lt;Property name="ContextMenu" /&gt;
&lt;Property name="ContextMenuStrip" /&gt;
&lt;Property name="Cursor"&gt;Default&lt;/Property&gt;
&lt;Property name="DataBindings"&gt;
&lt;Property name="DefaultDataSourceUpdateMode"&gt;OnValidation&lt;/Property&gt;
&lt;/Property&gt;
&lt;Property name="Font"&gt;Segoe UI, 9pt&lt;/Property&gt;
&lt;Property name="ForeColor"&gt;ControlText&lt;/Property&gt;
&lt;Property name="Location"&gt;0, 0&lt;/Property&gt;
&lt;Property name="Margin"&gt;3, 3, 3, 3&lt;/Property&gt;
&lt;Property name="MaximumSize"&gt;0, 0&lt;/Property&gt;
&lt;Property name="MinimumSize"&gt;0, 0&lt;/Property&gt;
&lt;Property name="RightToLeft"&gt;No&lt;/Property&gt;
&lt;Property name="Size"&gt;484, 327&lt;/Property&gt;
&lt;Property name="Tag" /&gt;
&lt;Property name="Text"&gt;
&lt;/Property&gt;
&lt;Property name="UseWaitCursor"&gt;False&lt;/Property&gt;
&lt;Property name="Padding"&gt;0, 0, 0, 0&lt;/Property&gt;
&lt;Property name="ImeMode"&gt;NoControl&lt;/Property&gt;
&lt;CustomProperties&gt;
&lt;Property name="HostFormLocation"&gt;0, 0&lt;/Property&gt;
&lt;Property name="HostFormSize"&gt;500, 400&lt;/Property&gt;
&lt;/CustomProperties&gt;
&lt;/AutoMateDialogDesigner&gt;</AMSHOWDIALOG>
<!--キャンセルを押すと構造体は作成されない-->
<!--GetVarValueByVarName関数を使用して、変数名と固定文字列を組み合わせた変数名(構造体の要素名)から値を取得する-->
<AMSHOWDIALOG>%GetVarValueByVarName("varFormMetadata" &amp; var_count &amp; ".Text")%</AMSHOWDIALOG>

Knowledge記事検索

Knowledge

News・Information