0

こんにちは、日時スタンプ付きのファイル名に以下の式を使用しています。

(DT_I4)DATEPART("weekday", GETDATE() ) ==2  || (DT_I4)DATEPART("weekday",@[System::StartTime]) ==7 ? 
Replace((DT_STR, 20, 1252)(DATEADD( "D", -3,@[System::StartTime])),":","-") + ".xls" :
Replace((DT_STR, 20, 1252)(DATEADD( "D", -1,@[System::StartTime])),":","-") + ".xls"

これにより、以前の日付が常に必要になります。

しかし、この式にファイル名を追加すると、次のエラーが発生します-

"FILENAME"+ 
 (DT_I4)DATEPART("weekday", GETDATE() ) ==2  || (DT_I4)DATEPART("weekday",@[System::StartTime]) ==7 ? 
    Replace((DT_STR, 20, 1252)(DATEADD( "D", -3,@[System::StartTime])),":","-") + ".xls" :
    Replace((DT_STR, 20, 1252)(DATEADD( "D", -1,@[System::StartTime])),":","-") + ".xls"

エラー - データ型 "DT_WSTR" と "DT_I4" は二項演算子 "+" と互換性がありません。オペランドの型を、操作の互換性のある型に暗黙的にキャストできませんでした。この操作を実行するには、一方または両方のオペランドをキャスト演算子で明示的にキャストする必要があります。

二項演算 "@[User::AnimalName] + (DT_I4)DATEPART("weekday",@[System::StartTime])" の結果タイプを設定しようとすると、エラー コード 0xC0047080 で失敗しました。

(Microsoft.DataTransformationServices.Controls)

4

1 に答える 1

1

それが述べているように、整数と文字列値を暗黙的に一緒にすることはできません。解決策は、三項演算子全体を DT_WSTR 型にキャストすることです。はい、各オプションを DT_STR にキャストしましたが、まだ全体をキャストでラップしています。奇妙ですが、私は以前に同じことを経験しました。

"FILENAME"+ 
(DT_WSTR, 20)
(
(DT_I4)DATEPART("weekday", GETDATE() ) ==2  
|| (DT_I4)DATEPART("weekday",@[System::StartTime]) ==7 ? 
    Replace((DT_STR, 20, 1252)(DATEADD( "D", -3,@[System::StartTime])),":","-") + ".xls" 
:
    Replace((DT_STR, 20, 1252)(DATEADD( "D", -1,@[System::StartTime])),":","-") + ".xls"
)
于 2013-07-08T02:05:28.610 に答える