У меня есть сериализованный код, и внутри этого кода есть числовые значения, которые при анализе представляют дату.
For example, 011756420176654
*Note* array index may be off
Substring(1,2) = 01
Substring(3,2) = 17
Я пытаюсь игнорировать строку, не заменяя исходную строку. У меня есть производный столбец, и я делаю это в столбце.
(dt_date)(Substring([My Code], 1, 2) + "-" + Substring([My Code], 3, 2) + (dt_str,10,1252)datepart("year",getdate()))
Мое намерение здесь состоит в том, чтобы настроить вывод ошибок при игнорировании поля [My Code], если логика TryParse в производном столбце завершается ошибкой. Я знаю, если бы я передавал производный столбец, то выбор игнорирования в конфигурации пропустил бы ноль, но проблема в том, что я пытаюсь (при ошибке) игнорировать исходную строку и передать ее как ноль (то есть [Мой код]).
Как только этот попадет в базу данных, другой процесс использует его и пытается проанализировать даты. Он не потерпит неудачу при нулевых значениях, поэтому я хочу проверить, что, по сути, является «датой» -логической, прежде чем пропустить запись или установить ее на ноль.
Редактировать: По решению Кейта я пришел к этому. У меня были проблемы с доступом к выходному буферу, но после некоторого MSDN по синтаксису я пришел к следующему, который работает отлично.
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
DateTime dateValue;
string test = Row.ReceiptCode.Substring(0, 2) + "/" + Row.ReceiptCode.Substring(2, 2) + "/" + DateTime.Now.Year.ToString();
if (DateTime.TryParse(test, out dateValue) && Row.ReceiptCode.Length ==16)
{
Output0Buffer.AddRow();
Output0Buffer.EndDate = Row.EndDate;
Output0Buffer.Q10 = Row.Q10;
Output0Buffer.Q8 = Row.Q8;
Output0Buffer.ValidatedReceipt = Row.ReceiptCode;
}
else
{
Output1Buffer.AddRow();
Output1Buffer.EndDate = Row.EndDate;
Output1Buffer.Q10 = Row.Q10;
Output1Buffer.Q8 = Row.Q8;
Output1Buffer.Error = Row.ReceiptCode;
}
}