Quantcast
Channel: SQL Server Integration Services forum
Viewing all articles
Browse latest Browse all 24688

ssis package adding header and footer

$
0
0

HI I HAVE SCRIPT WHICH GIVES ME FOLLOWING RESULT. i have to add header and trailer in data using c#. i wrote code which gives this result which is not what i want. 

CHD

SEQUENCE ID

RECORD TYPE

AMOUNT

000034006

00000678

$5869

CHD

SEQUENCE ID

RECORD TYPE

AMOUNT

0006780000

384900000

$856840

CHD

SEQUENCE ID

RECORD TYPE

AMOUNT

8930000

834444

$78098

the desire result i want is following. 

CHD

SEQUENCE ID

RECORD TYPE

AMOUNT

000034006

00000678

$5869

0006780000

384900000

$856840

8930000

834444

$78098

how am i suppose to get this result either by using flat file or C#. I have script, should i add it in script or use another script. 

Guide me. 

/*
   Microsoft SQL Server Integration Services Script Task
   Write scripts using Microsoft Visual C# 2008.
   The ScriptMain is the entry point class of the script.
*/
using System;
using System.IO;
using System.Text;
using System.Data;
//using System.Math;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
namespace ST_8b99b23ffd944c6abe15bca3437320d8.csproj
{
    [System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
    public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
    {
        #region VSTA generated code
        enum ScriptResults
        {
            Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
            Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
        };
        #endregion
        public void Main()
        {
            Dts.TaskResult = (int)ScriptResults.Success;
            Boolean fireagain = false;
            int taskResult;
            string fileSourcePath;
            string fileDestPath;
            StreamReader sr;
            StreamWriter sw;
            string Str;
            string delim = ",";
            string RecordType;
            //         Dim FileCreateDate As Date
            string LastRecordType = "   ";
            string FilesProcessed;
            string CurrentDate;
            string SourceFilePath;
            string FileName;
            // Dim ret As Integer
            CurrentDate = DateTime.Now.ToString("yyyyMMdd");
            Dts.Events.FireInformation(-1, "CurrentDate", CurrentDate.ToString(), String.Empty, 0, ref fireagain);
            try
            {
                fileSourcePath= Dts.Variables["User::SourceFilePath"].Value.ToString(); //SourceFilePath
                fileDestPath = Dts.Variables["User::Destination"].Value.ToString();//Destination
                FilesProcessed = Dts.Variables["User::FilesProcessed"].Value.ToString();//FilesProcessed
                FileName = Dts.Variables["User::FileName"].Value.ToString();
                //fileSourcePath = Dts.Variables["SourceFilePath"].Value.ToString();//FilePath 
                //fileDestPath = Dts.Variable["Destination"].Value.ToString;//Destination
                //FilesProcessed = ReadVariable("FilesProcessed").ToString();//FilesProcessed
                //FileName = Dts.Variables["FileName"].Value.ToString();//FileName
                //the value before we change it here
                Dts.Events.FireInformation(1, "fileSourcePath", fileSourcePath, String.Empty, 0, ref fireagain);
                Dts.Events.FireInformation(-1, "FileName", FileName, String.Empty, 0, ref fireagain);
                //  Dim valid As Boolean
                //  Dim fileID As String
                //  Dim contract As Stri
                int sep;
                sep = FileName.IndexOf("//");
                SourceFilePath = FileName.Substring((sep + 1));//fileSourcePath.Substring((sep + 1));
                Dts.Events.FireInformation(-1, "SourceFilePath", SourceFilePath, String.Empty, 0, ref fireagain);
                //sr = File.OpenText(fileSourcePath + FileName);//File.OpenText(fileSourcePath);
                sr = File.OpenText(FileName);
                //string test = Dts.Variables[sr].Value.ToString();
                Str = sr.ReadLine();
                //Dts.Variables[Str].Value.ToString();
                //Dts.Events.FireInformation(-1, "Str-ReadLine", Str.ToString(), String.Empty, 0, ref fireagain);
                // Get the first data line of the file
                //     contract = Str.Substring(10, 5)
                //    fileID = Str.Substring(15, 12)
                Int32 Counter;
                Counter = (int)ReadVariable("Counter");
                Counter = (Counter + 1);
                WriteVariable("Counter", Counter);
                Dts.Events.FireInformation(-1, "Counter", Counter.ToString(), String.Empty, 0, ref fireagain);
                //int loc = fileDestPath.LastIndexOf(".");
                //string ext = fileDestPath.Substring(loc, 4);
                //string filename = fileDestPath.Substring(0, loc);
                //  fileDestPath = filename + "_" + DateTime.Now.ToString("yyyyMMdd") + ext
                fileDestPath = Dts.Variables["User::Destination"].Value.ToString() + "_" + CurrentDate + ".CSV";
                sw = File.CreateText(fileDestPath);
                WriteVariable("NewFileName", fileDestPath);
                Dts.Events.FireInformation(-1, "NewFileName", ReadVariable("NewFileName").ToString(), String.Empty, 0, ref fireagain);
                //cnt = 1;
                while (!string.IsNullOrEmpty(Str))
                {
                    StringBuilder sb = new StringBuilder();
                    if ((Str.Length > 3))
                    {
                        // No Valid records have less than 3 chars
                       RecordType = Str.Substring(0, 3);
                        switch (RecordType)
                        {
                            case "CHD":
                                sw.WriteLine("RECORD ID,SEQUENCE NO,CONTRACT IDENTIFIER,CONTRACT NAME,COVERAGE YEAR DATE,RECONCILIATION NUMBER,SYSTEM DATE,SYSTEM TIME,REPORT ID,FILLER");
                                sb.Append((Str.Substring(0, 3) + delim));
                                // RECORD-ID
                                sb.Append((Str.Substring(3, 7) + delim));
                                // SEQUENCE-NO
                                sb.Append((Str.Substring(10, 5) + delim));
                                // CONTRACT-IDENTIFIER
                                sb.Append((Str.Substring(15, 50) + delim));
                                // CONTRACT-NAME
                                sb.Append((Str.Substring(65, 4) + delim));
                                // COVERAGE-YEAR-DATE
                                sb.Append((Str.Substring(69, 4) + delim));
                                // RECONCILIATION-NUMBER
                                sb.Append((Str.Substring(73, 8) + delim));
                                // SYSTEM-DATE
                                sb.Append((Str.Substring(79, 6) + delim));
                                // SYSTEM-TIME
                                sb.Append((Str.Substring(87, 9) + delim));
                                // REPORT-ID
                                sb.Append((Str.Substring(96, 204) + delim));
                                // FILLER
                                sw.WriteLine(sb.ToString());
                                Dts.Events.FireInformation(-1, "sb", sb.ToString(), String.Empty, 0, ref fireagain);
                                break;
                            case "DET":
                                if (!(LastRecordType == RecordType))
                                {
                                    sw.WriteLine("RECORD ID," +"SEQUENCE NO," +"CONTRACT IDENTIFIER," +"PLAN BENEFIT PACKAGE IDENTIFIER," +"CONTRACT NAME," +"PBP NAME," +"CURRENT RECONCILIATION NUMBER," +"PREVIOUS RECOUNCILIATION NUMBER," +"CURRENT TOTAL COVERAGE GAP DISCOUNT PAYMENT AMOUNT," +"PREVIOUS TOTAL COVERAGE GAP DISCOUNT PAYMENT AMOUNT," +"DELTA TOTAL COVERAGE GAP DISCOUNT PAYMENT AMOUNT," +"CURRENT TOTAL COVERAGE GAP DISCOUNT INVOICED AMOUNT," +"PREVIOUS TOTAL COVERAGE GAP DISCOUNT INVOICED AMOUNT," +"DELTA TOTAL COVERAGE GAP DISCOUNT INVOICED AMOUNT," +"CURRENT COVERAGE GAP DISCOUNT RECONCILIATION AMOUNT," +"PREVIOUS COVERAGE GAP DISCOUNT RECONCILIATION AMOUNT," +"DELTA COVERAGE GAP DISCOUNT RECONCILIATION AMOUNT," +"FILLER"
                                          );
                                }
                                sb.Append((Str.Substring(0, 3) + delim));
                                // RECORD-ID
                                sb.Append((Str.Substring(3, 7) + delim));
                                // SEQUENCE-NO
                                sb.Append((Str.Substring(10, 5) + delim));
                                // CONTRACT-IDENTIFIER
                                sb.Append((Str.Substring(15, 3) + delim));
                                // PLAN-BENEFIT-PACKAGE-IDENTIFIER
                                sb.Append((Str.Substring(18, 50) + delim));
                                // CONTRACT-NAME
                                sb.Append((Str.Substring(68, 50) + delim));
                                // PBP-NAME
                                sb.Append((Str.Substring(118, 4) + delim));
                                // CURRENT RECONCILIATION NUMBER
                                sb.Append((Str.Substring(122, 4) + delim));
                                // PREVIOUS RECONCILIATION NUMBER 
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(126, 14)).ToString ("F2") + delim));
                                //CURRENT TOTAL COVERAGE GAP DISCOUNT PAYMENT AMOUNT 
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(140, 14)).ToString("F2") + delim));
                                // PREVIOUS TOTAL COVERAGE GAP DISCOUNT PAYMENT AMOUNT
                                sb.Append(("$" + ConvertEBCDIC(Str.Substring(154, 14)).ToString("F2") + delim));
                                // DELTA TOTAL COVERAGE GAP DISCOUNT PAYMENT AMOUNT
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(168, 14)).ToString("F2") + delim));
                                // CURRENT TOTAL COVERAGE GAP DISCOUNT INVOICED AMOUNT
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(182, 14)).ToString("F2") + delim));
                                // PREVIOUS TOTAL COVERAGE GAP DISCOUNT INVOICED AMOUNT
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(196, 14)).ToString("F2") + delim));
                                // DELTA TOTAL COVERAGE GAP DISCOUNT INVOICED AMOUNT 
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(210, 14)).ToString("F2") + delim));
                                // CURRENT COVERAGE GAP DISCOUNT RECONCILIATION AMOUNT
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(224, 14)).ToString("F2") + delim));
                                // PREVIOUS COVERAGE GAP DISCOUNT RECONCILIATION AMOUNT
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(238, 14)).ToString("F2") + delim));
                                // DELTA COVERAGE GAP DISCOUNT RECONCILIATION AMOUNT 
                                sb.Append((Str.Substring(252, 48) + delim));
                                // FILLER
                                sw.WriteLine(sb.ToString());
                                Dts.Events.FireInformation(-1, "sb", sb.ToString(), String.Empty, 0, ref fireagain);
                                break;
                            case "CTR":
                                sw.WriteLine("RECORD ID," +"SEQUENCE NO," +"CONTRACT IDENTIFIER," +"CONTRACT NAME," +"CURRENT RECONCILATION NUMBER," +"CURRENT TOTAL COVERAGE GAP DISCOUNT PAYMENT AMOUNT," +"PREVIOUS TOTAL COVERAGE GAP DISCOUNT PAYMENT AMOUNT," +"DELTA TOTAL COVERAGE GAP DISCOUNT PAYMENT AMOUNT," +"CURRENT TOTAL COVERGAE GAP DISCOUNT INVOICED AMOUNT," +"PREVIOUS TOTAL COVERAGE GAP DISCOUNT INVOICED AMOUNT," +"DELTA TOTAL COVERAGE GAP DISCOUNT INVOICED AMOUNT," +"CURRENT COVERAGE GAP DISCOUNT RECONCILIATION AMOUNT," +"PREVIOUS COVERAGE GAP DISCOUNT RECONCILIATION AMOUNT," +"DELTA COVERAGE GAP DISCOUNT RECONCILIATION AMOUNT," +"COUNT OF PBPs," +"FILLER"
                                );
                                sb.Append((Str.Substring(0, 3) + delim));
                                // RECORD-ID
                                sb.Append((Str.Substring(3, 7) + delim));
                                // SEQUENCE-NO
                                sb.Append((Str.Substring(10, 5) + delim));
                                // CONTRACT-IDENTIFIER
                                sb.Append((Str.Substring(15, 50) + delim));
                                // CONTRACT-NAME  
                                sb.Append((Str.Substring(65, 4) + delim));
                                // CURRENT RECONCILATION NUMBER
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(69, 14)).ToString("F2") + delim));
                                // CURRENT TOTAL COVERAGE GAP DISCOUNT PAYMENT AMOUNT 
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(83, 14)).ToString("F2") + delim));
                                // PREVIOUS TOTAL COVERAGE GAP DISCOUNT PAYMENT AMOUNT
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(97, 14)).ToString("F2") + delim));
                                // DELTA TOTAL COVERAGE GAP DISCOUNT PAYMENT AMOUNT
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(111, 14)).ToString("F2") + delim));
                                // CURRENT TOTAL COVERAGE GAP DISCOUNT INVOICED AMOUNT
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(125, 14)).ToString("F2") + delim));
                                // PREVIOUS TOTAL COVERAGE GAP DISCOUNT INVOICED AMOUNT
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(139, 14)).ToString("F2") + delim));
                                // DELTA TOTAL COVERAGE GAP DISCOUNT INVOICED AMOUNT
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(153, 14)).ToString("F2") + delim));
                                // CURRENT COVERAGE GAP DISCOUNT RECONCILIATION AMOUNT
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(167, 14)).ToString("F2") + delim));
                                // PREVIOUS COVERAGE GAP DISCOUNT RECONCILIATION AMOUNT
                                sb.Append(("$"+ ConvertEBCDIC(Str.Substring(181, 14)).ToString("F2") + delim));
                                // DELTA COVERAGE GAP DISCOUNT RECONCILIATION AMOUNT 
                                sb.Append((Str.Substring(195, 9) + delim));
                                // COUNT OF PBPs
                                sb.Append((Str.Substring(204, 96) + delim));
                                // FILLER
                                sw.WriteLine(sb.ToString());
                                Dts.Events.FireInformation(-1, "sb Tail", sb.ToString(), String.Empty, 0, ref fireagain);
                                break;
                            default:
                            sw.WriteLine("INVALID");
                            break;
                        }
                    }
                    //LastRecordType = RecordType.ToString();
                    Str = sr.ReadLine();
                }
                sr.Close();
                sw.Close();
                // WriteVariable("FilesProcessed", (FilesProcessed
                //                + (fileDestPath.Replace(ReadVariable("P2PPayableReportPath").ToString(), "").ToString + "\r\n")));
            }
            catch (Exception ex)
            {
                taskResult = Dts.TaskResult = (int)ScriptResults.Failure;
                Dts.Events.FireError(-1, "Exception", ex.Message, String.Empty, 0);
            }
            Dts.TaskResult = (int)ScriptResults.Success;
        }
        Decimal ConvertEBCDIC(string signed)
        {
            string signChar;
            string numb;
            Decimal nn = 0;
            Decimal final = 0;
            int len;
            Boolean fireagain = false;
            bool negative = false;
            Dts.Events.FireInformation(-1, "function input string", signed.ToString(), String.Empty, 0, ref fireagain);
            if ((signed.Length > 1))
            {
                len = signed.Length;
                signChar = signed.Substring((len - 1), 1);
                //  last character only, which includes sign
                numb = signed.Substring(0, (len - 1));
                Dts.Events.FireInformation(-1, "ssignChar", signChar.ToString(), String.Empty, 0, ref fireagain);
                Dts.Events.FireInformation(-1, "numb", numb.ToString(), String.Empty, 0, ref fireagain);
                // number with out the last digit
                switch (signChar)
                {
                    case "{":
                        nn = 0;
                        break;
                    case "A":
                        nn = 1;
                        break;
                    case "B":
                        nn = 2;
                        break;
                    case "C":
                        nn = 3;
                        break;
                    case "D":
                        nn = 4;
                        break;
                    case "E":
                        nn = 5;
                        break;
                    case "F":
                        nn = 6;
                        break;
                    case "G":
                        nn = 7;
                        break;
                    case "H":
                        nn = 8;
                        break;
                    case "I":
                        nn = 9;
                        break;
                    case "}":
                        nn = 0;
                        negative = true;
                        break;
                    case "J":
                        nn = 1;
                        negative = true;
                        break;
                    case "K":
                        nn = 2;
                        negative = true;
                        break;
                    case "L":
                        nn = 2;
                        negative = true;
                        break;
                    case "M":
                        nn = 4;
                        negative = true;
                        break;
                    case "N":
                        nn = 5;
                        negative = true;
                        break;
                    case "O":
                        nn = 6;
                        negative = true;
                        break;
                    case "P":
                        nn = 7;
                        negative = true;
                        break;
                    case "Q":
                        nn = 8;
                        negative = true;
                        break;
                    case "R":
                        nn = 9;
                        negative = true;
                        break;
                }
                final = Decimal.Parse(numb);
                Dts.Events.FireInformation(-1, "final 1", final.ToString(), String.Empty, 0, ref fireagain);
                final = (final * 10);
                Dts.Events.FireInformation(-1, "final 2", final.ToString(), String.Empty, 0, ref fireagain);
                final = (final + nn);
                Dts.Events.FireInformation(-1, "final 3", final.ToString(), String.Empty, 0, ref fireagain);
                final = (final / 100);
                if (negative)
                {
                    final = (final * -1);
                }
                Dts.Events.FireInformation(-1, "final 4", final.ToString(), String.Empty, 0, ref fireagain);
            }
            return final;
        }
        Decimal ConvertEBCDICDivideBy10000(string signed)
        {
            string signChar;
            string numb;
            Decimal nn = 0;
            Decimal final = 0;
            int len;
            Boolean fireagain = false;
            bool negative = false;
            //   Dts.Events.FireInformation(-1, "function input string", signed.ToString(), String.Empty, 0, ref fireagain);
            if ((signed.Length > 1))
            {
                len = signed.Length;
                signChar = signed.Substring((len - 1), 1);
                //  last character only, which includes sign
                numb = signed.Substring(0, (len - 1));
                Dts.Events.FireInformation(-1, "ssignChar", signChar.ToString(), String.Empty, 0, ref fireagain);
                Dts.Events.FireInformation(-1, "numb", numb.ToString(), String.Empty, 0, ref fireagain);
                // number with out the last digit
                switch (signChar)
                {
                    case "{":
                        nn = 0;
                        break;
                    case "A":
                        nn = 1;
                        break;
                    case "B":
                        nn = 2;
                        break;
                    case "C":
                        nn = 3;
                        break;
                    case "D":
                        nn = 4;
                        break;
                    case "E":
                        nn = 5;
                        break;
                    case "F":
                        nn = 6;
                        break;
                    case "G":
                        nn = 7;
                        break;
                    case "H":
                        nn = 8;
                        break;
                    case "I":
                        nn = 9;
                        break;
                    case "}":
                        nn = 0;
                        negative = true;
                        break;
                    case "J":
                        nn = 1;
                        negative = true;
                        break;
                    case "K":
                        nn = 2;
                        negative = true;
                        break;
                    case "L":
                        nn = 2;
                        negative = true;
                        break;
                    case "M":
                        nn = 4;
                        negative = true;
                        break;
                    case "N":
                        nn = 5;
                        negative = true;
                        break;
                    case "O":
                        nn = 6;
                        negative = true;
                        break;
                    case "P":
                        nn = 7;
                        negative = true;
                        break;
                    case "Q":
                        nn = 8;
                        negative = true;
                        break;
                    case "R":
                        nn = 9;
                        negative = true;
                        break;
                }
                final = Decimal.Parse(numb);
                //       Dts.Events.FireInformation(-1, "final 1", final.ToString(), String.Empty, 0, ref fireagain);
                final = (final * 10);
                //         Dts.Events.FireInformation(-1, "final 2", final.ToString(), String.Empty, 0, ref fireagain);
                final = (final + nn);
                //      Dts.Events.FireInformation(-1, "final 3", final.ToString(), String.Empty, 0, ref fireagain);
                final = (final / 10000);
                if (negative)
                {
                    final = (final * -1);
                }
                //      Dts.Events.FireInformation(-1, "final 4", final.ToString(), String.Empty, 0, ref fireagain);
            }
            return final;
        }
        private object ReadVariable(string varName)
        {
            object result;
            try
            {
                Variables vars = null;
                Dts.VariableDispenser.LockForRead(varName);
                Dts.VariableDispenser.GetVariables(ref vars);
                try
                {
                    result = vars[varName].Value;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    vars.Unlock();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return result;
        }
        private void WriteVariable(string varName, object varValue)
        {
            try
            {
                Variables vars = null;
                Dts.VariableDispenser.LockForWrite(varName);
                Dts.VariableDispenser.GetVariables(ref vars);
                try
                {
                    vars[varName].Value = varValue;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    vars.Unlock();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}


surabhi dave


Viewing all articles
Browse latest Browse all 24688

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>