J'ai un code sérialisé, et à l'intérieur de ce code il y a des valeurs numériques qui, lorsqu'elles sont analysées, représentent une date.
For example, 011756420176654
*Note* array index may be off
Substring(1,2) = 01
Substring(3,2) = 17
J'essaie d'ignorer la ligne, sans remplacer la ligne d'origine. J'ai une colonne dérivée et je fais cela dans la colonne.
(dt_date)(Substring([My Code], 1, 2) + "-" + Substring([My Code], 3, 2) + (dt_str,10,1252)datepart("year",getdate()))
Mon intention est de configurer ma sortie d'erreur pour qu'elle ignore le champ [Mon code] si la logique "TryParse" de la colonne dérivée échoue. Je sais que si je passe la colonne dérivée, le fait de sélectionner ignore dans la configuration passera null, mais le problème est que j'essaie (en cas d'erreur) d'ignorer la ligne source et de la passer en tant que null (c'est-à-dire [Mon Code]).
Une fois que la base de données est atteinte, un autre processus la consomme et tente d'analyser les dates. Il n'échouera pas sur des valeurs nulles, donc je veux valider que essentiellement "est une date"-logique avant d'autoriser l'enregistrement, ou de le mettre à null.
Edit : Per Keith's solution, I came to this. J'avais des problèmes pour accéder au tampon de sortie, mais après avoir consulté MSDN sur la syntaxe, j'ai trouvé ce qui suit et qui fonctionne parfaitement.
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;
}
}