ビルド中の SSIS パッケージ内のスクリプト タスクで DateTime.TryParseExact メソッドを使用して C# で日付を検証する際に問題が発生しています。
私がやっていることは、Split メソッドを使用して日付を含むファイル名の一部を取り除き、ファイル名の日付部分を「FileDate」という名前のローカル文字列変数に渡すことです。次に、DateTime.TryParseExact を使用してその変数の値を検証し、問題がなければ、その値を SSIS パッケージ レベルの変数に渡します。
たとえば、ファイルの名前が「filename_11-01-2013.txt」の場合、「_」で分割し、FileDate 変数に「11-01-2013」を保持します。その部分は私が作業しており、変数が正しく入力されていることを検証しました。
「using System.Globalization;」と宣言したことを確認しました。スクリプト タスクの一番上にあります。
これが私のコードです:
DateTime myDate;
if (DateTime.TryParseExact(FileDate, DateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out myDate) == true)
{
Dts.Variables["FileDate"].Value = FileDate;
Dts.TaskResult = (int)ScriptResults.Success;
}
else
{
Dts.TaskResult = (int)ScriptResults.Failure;
}
問題は、悪い日付を通過させていることです。たとえば、明らかに不適切な日付である "55-01-2013" を許可しています。
これが潜在的な答えに影響する場合に備えて、ファイルの最終的な命名方法を制御できることを言及する価値があります。どんな助けでも大歓迎です!