none
スクリプトコンポーネント VSAでの変数の受け取り方法「SSIS:SQL Server Business Intelligence Development Studioの質問」 RRS feed

  • 質問

  • 制御フローでスクリプトコンポーネントでのVBスクリプトの記述ができますがメニューの
    SSIS項目の「変数」で割り当てた変数の受け取り方法がわかりません。

    スクリプトコンポーネントの編集のスクリプトのタブで「READONLYVARIABLES」
    にカンマで区切って指定するところまではわかりましたがVBスクリプトのコードでは
    どのような記述方法で取得あるいは設定するのでしょうか?

    よろしくお願いします。

     

    2006年7月20日 1:37

回答

すべての返信

  • 松本です。こんにちは。
    私もこれで2日くらい悩みました ^^;
    Dts.Variables("変数名").Value で取得できると思います
    (変数のスコープにスクリプトコンポーネントが入っていることもポイントです)。

    あと、変数へ値を代入したい場合は、ReadWriteVariable へ指定します。

    ちなみに、ActiveX スクリプト コンポーネントの場合は、
    SQL Server 2000 の DTS のグローバル変数の扱い方と同じで
    DTSGlobalVariables("変数名").value です
    (これも1日くらい悩みました。Books Online に載ってなくて T-T)。

    2006年7月20日 2:00
  • ご回答ありがとうございます。

    うまくできました。感謝します。

    2006年7月21日 4:11
  • 参考にさせていただき、早速試行したのですが「Dtsが定義されていない」ため文法エラーとなります。一日悩んだのですが、msdnの「スクリプトタスクとスクリプトコンポーネントの比較」のページに解がありました。前者は松本さん記述のとおりなのですが、後者は次のとおりとなります。

     Me.Variables.変数名

     これでうまくゆきました。私は評価版を使用しており、製品版との差異なのでは無いかと勘ぐっています。バージョンを教えていただけないでしょうか? 

    私のバージョン情報を記載します。

    Visual Studio 2005 : 8.0.50727.42 ( RTM 050727-4200 )

    .NET Framework : 2.0.50727

    Integration Service : 9.00.1399.00

     

    2007年3月15日 1:32
  • エクセルにDBからのデータをエクスポートする際に、各シート名を変更できないものかと思っております。

    試しに、エクセルのデータ挿入先に指定されている「sheet1$」を変数で扱い、挿入前に「sheet2$」へ変更するよう、

    データフローに、以下のコードを記述したスクリプトコンポーネントをはさみましたが

     

    Me.Variables.変数名 = "sheet2$"

     

    以下のエラーが出てしまいます。

     

    「読み取りおよび書き込みアクセス用にロックされた変数のコレクションは、PostExecute の外側では使用できません。」

    のエラーが出てしまい変数を入れられません。 

     

    回避方法はありましたらよろしくお願いいたします?

     

     

    2008年9月10日 11:24