データベーステーブルの変数に関して

excel等のデータを読み込んだ時、データベーステーブル変数にDT01として格納します。

例えば、いくつも処理がありデータベーステーブルに格納する場合、DT02,DT03・・・として格納する単位で変数を作るべきなのかあるいは、表現は悪いのですが、同じ変数名(DT01)を使いまわすべきなのかよくわかりません。

DT01の情報を利用継続の場合は別のデータベーステーブル変数を作成する必要があると思います。利用が終わった変数を使ってもよいものでしょうか。
また他の変数の型に関してもどうなのか、
ご教示いただければと思います。

1 Like

はい、これらの変数は、変更されない限り、後の段階でも使用できます。

また、必要な箇所で変数を定義します。

より少ない変数で作業することで、スクリプトを短く甘く保つことができます

Thanks,
Prankur

1 Like

はい、別のデータテーブルを格納するために異なる変数を作成するか、文字列変数として "Output datatable"を使用して後で "データテーブル生成"アクティビティを使用してデータテーブルに変換できる文字列配列に格納できます。

私はあなたに答えるためにGoogleの翻訳を使用しています。 これがうまくいきたいです。

変数の使い方という意味では、他で使用しないのであれば、上書きして使っても問題ありません。

もうちょっと踏み込むと、UiPathの変数にはScopeという概念があります。言ってしまえばその変数の適用範囲です。
たとえば、For Each Rowアクティビティで、その内部でしか、行を表す変数(デフォルトで「row」という名前のもの)が使えないのと同じような感じ、と考えると理解しやすいかもしれません。
For Each Rowアクティビティの行に対応する変数は否応無しにScopeは「そのアクティビティ内部」に固定されますが、自身で作成した変数は自由にScopeを設定できます。

Scopeを管理するメリットは、変数はScopeの外では参照されなくなることです。言い換えれば、それはScopeから出た時点でメモリが解放される、という理解で問題ありません。(.NET Frameworkの動作原理的には厳密には違いますが、その違いはUiPathの世界では、余程ピーキーなチューニングをするのでなければ意識する必要はないです)

というのを踏まえて、「いくつもの処理」が個別にあるなら、それぞれのSequenceなりFlow Chartなり、適切なScopeの範囲内でのみDataTable(に限らず固有の変数)が使用されるように設定することで、メモリの無駄遣いをせず、かつ「用途ごとにわかりやすい名称をつけたDataTable」を使えることになります。

変数の命名規則等は運用する会社等によっても違うと思うので、何がベストとは言いきれませんが、一般論としては「その変数が何を保持しているのか」がわかりやすいほうがメンテナンス性が上がります。なので、個人的には「DT01」よりは、たとえば「TimeCardDataTable」とか「KeihiShinseiTable」のような名称をお勧めします。

1 Like

機能的なおはなしは他のかたが既に回答されていて
命名についても @Honoka さんがお話をされているので
UiPath全然関係なく、どの言語でもそうである「変数の使いまわし」について

「プログラムやその変数の意味がわかりにくくなる」
・バグの原因になる
・あとでメンテする人がとてもたいへん
という理由で「変数の使いまわしはすべきでない」とされています。
なので
・変数は処理ごとにできるだけスコープを小さくする
・処理ごとに変数を定義して、別目的に使いまわさず、同じ名前の変数を他所で使わない
というルールにしておくのが、属人化せず長く安定して使えるツールを作るためにはだいじだと考えます。

(いちいち定義するのが面倒なのか変数を延々使いまわしていたり、スコープ外とか別のモジュールとかで同じ名前で別物として変数名を定義できちゃうので、そうしてる例を見ます、正直「これ何の変数…?」「この変数にいま何が入ってるの…?」というのがぱっとわかりにくくてメンテしづらいです)

1 Like