2017-03-15 4 views
1

J'ai créé une variable C# dans le composant de script dans SSIS. Mon plan est de concaténer la valeur de la variable précédente avec celle des données de chaque ligne passant par le flux de données plus une nouvelle ligne. J'attribuerai ensuite la valeur de cette variable à une variable SSIS à utiliser dans la tâche Send Mail.La variable ne contient pas de retour chariot lorsqu'elle est créée dans le composant de script SSIS

public class ScriptMain : UserComponent 
{ 
    string myString; 

    public override void PostExecute() 
    { 
     base.PostExecute(); 
     this.Variables.emailContent = myString; 
    } 

    public override void Input0_ProcessInputRow(Input0Buffer Row) 
    { 
     myString = myString + Row.column1 + ", " + Row.column2 + Environment.NewLine; 
    } 

} 

Mon problème est que lorsque l'e-mail est envoyé Environment.NewLine ne semble pas faire quoi que ce soit, la variable SSIS emailContent est envoyé dans l'e-mail sur une ligne.

J'ai aussi essayé d'utiliser \n mais je n'ai pas eu de chance.

Ce qui est intéressant est que lorsque j'écris la variable directement dans un fichier texte, la nouvelle ligne apparaît comme prévu.

+1

Etes-vous sûr que le problème est de savoir comment le dat a est stocké dans la variable et non comment le message électronique est interprété/affiché? (c'est-à-dire si l'e-mail est * quelque part * interprété en HTML, alors toutes les nouvelles lignes sont traitées comme des espaces.) –

+0

Bon appel. Il s'avère qu'Outlook, lors de la réception de l'e-mail, n'en avait aucun texte brut. Bizarre que ça marche si j'ai ajouté deux fois Environment.NewLine, bien qu'une horrible solution. Ce que j'ai fait à la place est de supprimer la tâche Send Email et d'effectuer toute l'opération en C# et de formater le message en HTML. Merci! – steve

Répondre

0

Essayez d'utiliser \r\n

public override void Input0_ProcessInputRow(Input0Buffer Row) 
    { 
     myString = myString + Row.column1 + ", " + Row.column2 + "\r\n"; 
    } 

Notez que ces symboles sont équivalents à:

\r : CR 
\n : LF 

Essayez également dupliquer antislashs (parce que vous travaillez avec des variables SSIS)

public override void Input0_ProcessInputRow(Input0Buffer Row) 
    { 
     myString = myString + Row.column1 + ", " + Row.column2 + "\\r\\n"; 
    }