これは元のクエリであり、ado.net
ソースを使用し、ソース内で指定された .net providers\odbc データ プロバイダーを使用して正常に動作します。
SELECT a.FA_CLNT_ID, a.FA_ACCT_NM, a.ACCT_E_DT, a.POL_PER_CURR_DT, a.POL_PER_NEXT_DT, a.FA_ACCT_NUM, a.GRP_SALES_OFFC_CD, a.ACCT_C_DT
FROM gyv2M.DDM_ACCT_STRUC a
INNER JOIN
(SELECT max(DDM_ACCT_STRUC_TP) as DDM_ACCT_STRUC_TP, FA_CLNT_ID
FROM gyv2M.DDM_ACCT_STRUC
WHERE FA_DM_ROW_DT <= '6/30/2011' AND DM_ROW_E_DT <= '6/30/2011'
GROUP BY FA_CLNT_ID) b
ON a.DDM_ACCT_STRUC_TP = b.DDM_ACCT_STRUC_TP AND a.FA_CLNT_ID = b.FA_CLNT_ID AND FA_DM_ROW_DT <= '6/30/2011' AND a.DM_ROW_E_DT <= '6/30/2011'
しかし、SQLサーバーのテーブルから値を取得するDATEのために自動化する必要があります。その日付値を格納する変数を作成しましたが、その変数をパラメーターとして使用して上記のクエリに渡したいと思います。残念ながら、ado.net ソースの変数から data access mode : sql コマンドが見つかりませんでした。他のサイトを検索したところ、式ビルダーを使用して式を使用できることがわかりました。プロパティをクリックしてください..>式..>など..式が正常に評価されました。式は以下のようになりますが、そこで打たれました。次は何ですか ?評価された式を ado.net source のソース コマンドとして渡すにはどうすればよいですか? 助けてください。
SELECT a.FA_CLNT_ID, a.FA_ACCT_NM, a.ACCT_E_DT, a.POL_PER_CURR_DT, a.POL_PER_NEXT_DT, a.FA_ACCT_NUM, a.GRP_SALES_OFFC_CD, a.ACCT_C_DT
FROM gyv2M.DDM_ACCT_STRUC a
INNER JOIN
(SELECT max(DDM_ACCT_STRUC_TP) as DDM_ACCT_STRUC_TP, FA_CLNT_ID
FROM gyv2M.DDM_ACCT_STRUC
WHERE FA_DM_ROW_DT <= '@[User::RepDate]' AND DM_ROW_E_DT <= '@[User::RepDate]'
GROUP BY FA_CLNT_ID) b
ON a.DDM_ACCT_STRUC_TP = b.DDM_ACCT_STRUC_TP AND a.FA_CLNT_ID = b.FA_CLNT_ID AND FA_DM_ROW_DT <= '@[User::RepDate]' AND a.DM_ROW_E_DT <= '@[User::RepDate]'
アップデート
やあ、
ご回答ありがとうございました。あなたが指定したように、ユーザー変数user:RepDateをdatetimeで作成し、datetimeをその変数RepDateに割り当てるSQL実行タスクを作成しました。また、はい、式を評価でき、ado.net ソース SQL コマンド モードで作成されたクエリを確認できました。クエリは次のとおりです。
SELECT a.FA_CLNT_ID, a.FA_ACCT_NM, a.ACCT_E_DT, a.POL_PER_CURR_DT, a.POL_PER_NEXT_DT, a.FA_ACCT_NUM, a.GRP_SALES_OFFC_CD, a.ACCT_C_DT
FROM gyv2M.DDM_ACCT_STRUC a
INNER JOIN
(SELECT max(DDM_ACCT_STRUC_TP) as DDM_ACCT_STRUC_TP, FA_CLNT_ID
FROM gyv2M.DDM_ACCT_STRUC
WHERE FA_DM_ROW_DT <= @[User::RepDate] AND DM_ROW_E_DT <= @[User::RepDate]
GROUP BY FA_CLNT_ID) b
ON a.DDM_ACCT_STRUC_TP = b.DDM_ACCT_STRUC_TP AND a.FA_CLNT_ID = b.FA_CLNT_ID AND FA_DM_ROW_DT <= @[User::RepDate] AND a.DM_ROW_E_DT <= @[User::RepDate]
しかし、以下のエラーが表示されます。元のクエリで指定したように、内側のクエリが日付形式「mm/dd/yyyy」を想定しているためだと思いますが、ユーザー変数から日時を提供しています。組み込み関数を使用して、ユーザー変数の日時形式を指定された形式に変換する方法を教えてください。DT_DAte を試しましたが、うまくいきませんでした。
Error at Data Flow Task 4 [ADO NET Source [1]]: The component "ADO NET Source" (1) was unable to retrieve column information for the SQL command. The following error occurred: ERROR [42601] [IBM][CLI Driver][DB2] SQL0104N An unexpected token "[" was found following "". Expected tokens may include: "CONCAT || / MICROSECONDS MICROSECOND SECONDS SECOND MINUTES". SQLSTATE=42601
ADDITIONAL INFORMATION:
Pipeline component has returned HRESULT error code 0xC02020FF from a method call. (Microsoft.SqlServer.DTSPipelineWrap)
BUTTONS:
OK
***アップデート2***
タイトル: Microsoft Visual Studio
データ フロー タスク [ADO NET ソース [1]] でのエラー: コンポーネント "ADO NET ソース" (1) は、SQL コマンドの列情報を取得できませんでした。次のエラーが発生しました: エラー [22007] [IBM][CLI ドライバー][DB2] SQL0180N 日時値のストリング表現の構文が正しくありません。SQLSTATE=22007
追加情報:
パイプライン コンポーネントは、メソッド呼び出しから HRESULT エラー コード 0xC02020FF を返しました。(Microsoft.SqlServer.DTSPipelineWrap)
ボタン: