Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 911327
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 15, 20262026-05-15T17:11:15+00:00 2026-05-15T17:11:15+00:00

Am a newbie to to SSIS Custom Component. Just started to code a component

  • 0

Am a newbie to to SSIS Custom Component. Just started to code a component where the input row count will never be same as output row count. foreach input row it does some validation and generates n rows which need to be mapped to output buffer.

So after with Design time validation coding everything is fine.

my RunTime code is as below:

    public override void PreExecute()
    {
        IDTSInput100 input = ComponentMetaData.InputCollection[0];
        inputBufferColumnIndex = new int[input.InputColumnCollection.Count];

        for (int x = 0; x < input.InputColumnCollection.Count; x++)
        {
            IDTSInputColumn100 column = input.InputColumnCollection[x];
            inputBufferColumnIndex[x] = BufferManager.FindColumnByLineageID  (input.Buffer, column.LineageID);
        }

        IDTSOutput100 output = ComponentMetaData.OutputCollection[0];
        outputBufferColumnIndex = new int[output.OutputColumnCollection.Count];

        for (int x = 0; x < output.OutputColumnCollection.Count; x++)
        {
            IDTSOutputColumn100 outcol = output.OutputColumnCollection[x];
            outputBufferColumnIndex[x] = BufferManager.FindColumnByLineageID(input.Buffer, outcol.LineageID);
        }

    }


    public override void ProcessInput(int inputID, PipelineBuffer buffer)
    {
        if(!buffer.EndOfRowset)
        {
            while (buffer.NextRow())
            {
                var rec = new Record
                                 {
                                     Source = buffer[0].ToString(),
                                     Nk = buffer[1].ToString(),
                                     Guid = new Guid(buffer[2].ToString()),
                                     FromDate = Convert.ToDateTime(buffer[3].ToString()),
                                     ToDate = Convert.ToDateTime(buffer[4].ToString())
                                 };
                sourceRecords.Add(rec);
            }
            ProcessArray(sourceRecords,buffer);
        }
    }
    public void ProcessArray(List<Record> records, PipelineBuffer buffer)
    {
        //Get Distinct NKs from the source Records
        List<string> nKs = (from c in records select c.Nk).Distinct().ToList();


        foreach (var nk in nKs)
        {
            //Get all the record for particular NK
            List<Record> filteredRecords = (from c in sourceRecords where c.Nk == nk select c)
                                                .OrderBy(c => c.Source)
                                                .ThenBy(c => c.FromDate)
                                                .ThenBy(c => c.ToDate).ToList();

            foreach (var filteredRecord in filteredRecords)
            {
                _start = filteredRecord.FromDate;
                _end = filteredRecord.ToDate;
                while (filteredRecord.WriteComplete == false)
                {
                    foreach (var record in filteredRecords)
                    {
                        if (record.FromDate > _start && record.FromDate < _end) _end = record.ToDate;
                        if (record.ToDate < _end && record.ToDate > _start) _end = record.ToDate;
                    }

                    //Output0Buffer.AddRow();
                    //Output0Buffer.outSource = filteredRecord.Source;
                    //Output0Buffer.outNK = filteredRecord.Nk;
                    //Output0Buffer.outRecid = filteredRecord.Guid;
                    //Output0Buffer.outFromDate = _start;
                    //Output0Buffer.outToDate = _end;
                    buffer.SetString(5,filteredRecord.Source);
                    buffer.SetString(6,filteredRecord.Nk);
                    buffer.SetGuid(7,filteredRecord.Guid);
                    buffer.SetDateTime(8,filteredRecord.FromDate);
                    buffer.SetDateTime(9,filteredRecord.ToDate);

                    _start = _end;
                    _end = filteredRecord.ToDate;

                    if (_start == _end) filteredRecord.WriteComplete = true;
                }
            }
        }
    }
}
public class Record
{
    public Guid Guid { get; set; }
    public string Nk { get; set; }
    public string Source { get; set; }
    public DateTime FromDate { get; set; }
    public DateTime ToDate { get; set; }
    public bool WriteComplete { get; set; }
}

In my ProcessArray method am trying to populate the output buffer. Am not even sure this can be done.

Any guidance will be appreciated.

Thanks

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-15T17:11:16+00:00Added an answer on May 15, 2026 at 5:11 pm

    Yes this type of transform can be done, it is called an asynchronous transform. Your code looks good to me. it wasn’t clear from your question if you were experiencing a specific problem.

    You may want to try and create a Asynchronous Script Component transform so you don’t have to fumble with all of the SSIS plumbing.

    more info here:
    http://msdn.microsoft.com/en-us/library/ms136133.aspx

    http://msdn.microsoft.com/en-us/library/ms135931.aspx

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 486k
  • Answers 486k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer By default, all containers use the layout manager FlowLayout. FlowLayout… May 16, 2026 at 8:09 am
  • Editorial Team
    Editorial Team added an answer What you need to realise is that SEO is nothing… May 16, 2026 at 8:09 am
  • Editorial Team
    Editorial Team added an answer Have you looked at using the Velocity templating built into… May 16, 2026 at 8:09 am

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.