locked
How to get the Entity Id when the PlugIn is in PreCreate and PreUpdate Stage. RRS feed

  • Question

  • Hi,

    How to get the Entity Id when the PlugIn is in PreCreate and PreUpdate Stage.

    Can you please share some code.


    Thanks, - Israel Pradeep, - Software Engineer & PMP & B.I - Entrepreneur, - "If this post answers your question, please click "Mark As Answer" on the post and "Mark as Helpful"".
    Thursday, July 21, 2011 10:01 PM

Answers

  • why do you want to get the field names by queryexpression when they are available as dynamic enity on precreate and preupdate.

    just use context.InputParameters.Properties["Target"] to get the dynamic entity and validate what ever you want to validate.

    As you said if you try to get the dynamic entity by passing Id, you will get the old value. You are reading the properties from the saved data not the data passed by the context.

     

    just get the dynamic entity from input parameters.

     

    I hope it helps

     


    Amreek singh Senior CRM Consultant CDC Praxa Sydney,Australia http://mscrmshop.blogspot.com/
    Saturday, July 23, 2011 12:36 PM
  • I can't run your code but use try and catch. capture the soap exception. it will be something like this..

    try

    {

    //do something here that tries to use the CRM Webservice

    }

    catch (SoapException ex)

    {

    string errorMessage = ex.Detail.InnerText;

    }

     


    Amreek singh Senior CRM Consultant CDC Praxa Sydney,Australia http://mscrmshop.blogspot.com/
    Tuesday, July 26, 2011 11:20 AM
  • I think you are updating the entity if the context message is update. When you update the entity it keep calling the preupdate event. You don't need to update the entity. You just need to update the properties or adding properties to dynamic entity without calling the update request.

    I hope this helps.


    Amreek singh Senior CRM Consultant CDC Praxa Sydney,Australia http://mscrmshop.blogspot.com/
    Wednesday, July 27, 2011 12:54 PM

All replies

  • There is no Entity Id in PreCreate event as record is not created yet but you can get the Entity Id in PreUpdate stage as follow

    if (context.InputParameters.Contains("Target") &&

        context.InputParameters["Target"] is Entity)

    {

        // Obtain the target entity from the input parmameters.

        Entity entity = (Entity)context.InputParameters["Target"];

      Guid EntityId = entity.Id;

    }

     

     

    I hope this helps


    Amreek singh Senior CRM Consultant CDC Praxa Sydney,Australia http://mscrmshop.blogspot.com/
    Friday, July 22, 2011 5:18 AM
  • Which version of CRM are you using ? In Crm 2011 you can read this from the context.PrimaryEntityId property, rather than needing to go through the Target InputParameter.

    However, as the previous poster states, the Id is not normally available in the PreCreate. If you do need this is the PreCreate (and it's worth considering if it would be easier to use a Post event to avoid the issue), then you could try explicitly generating a new Guid value, and either place it in the PrimaryEntityId property, or the Id property of the Target, and CRM would use that


    Microsoft CRM MVP - http://mscrmuk.blogspot.com  http://www.excitation.co.uk
    Friday, July 22, 2011 12:07 PM
    Moderator
  • Hi,

    Regarding Record Creation

    You can register you plugin for the Post-Create stage and if error occurs you can throw InvalidPlluginExecutionException, the transaciton will be rolled back and record will not be created.

    Regarding Record Update

    If you will register the plugin on Update message in Pre-Create stage then you can retrieve not modified exsisting entity value using the Service.Retrieve method call. So you will have pre update and post update data 


    Jehanzeb Javeed

    http://worldofdynamics.blogspot.com
    Linked-In Profile |CodePlex Profile

    If you find this post helpful then please "Vote as Helpful" and "Mark As Answer".
    Friday, July 22, 2011 5:26 PM
  • why do you want to get the field names by queryexpression when they are available as dynamic enity on precreate and preupdate.

    just use context.InputParameters.Properties["Target"] to get the dynamic entity and validate what ever you want to validate.

    As you said if you try to get the dynamic entity by passing Id, you will get the old value. You are reading the properties from the saved data not the data passed by the context.

     

    just get the dynamic entity from input parameters.

     

    I hope it helps

     


    Amreek singh Senior CRM Consultant CDC Praxa Sydney,Australia http://mscrmshop.blogspot.com/
    Saturday, July 23, 2011 12:36 PM
  • Hi,

    I have written code like you said, but its not returning the ReadOnly fields values;

                        entity = (DynamicEntity)context.InputParameters.Properties["Target"];

                        CrmMoney dcAllocatedAmount = new CrmMoney();
                        dcAllocatedAmount.Value = (decimal)0.00;
                        if (entity.Properties.Contains("gms_allocatedamount"))
                        {
                            dcAllocatedAmount = (CrmMoney)entity.Properties["gms_allocatedamount"];
                        }

                        CrmMoney dcCommittedAmount = new CrmMoney();
                        dcCommittedAmount.Value = (decimal)0.00;
                        if (entity.Properties.Contains("gms_committedamount"))
                        {
                            dcCommittedAmount = (CrmMoney)entity.Properties["gms_committedamount"];
                        }

                        CrmMoney dcAmountPaid = new CrmMoney();
                        dcAmountPaid.Value = (decimal)0.00;
                        if (entity.Properties.Contains("gms_paidamount"))
                        {
                            dcAmountPaid = (CrmMoney)entity.Properties["gms_paidamount"];
                        }

    Im getting the 1st field Allocated Amount value (which is not readonly), not get the Committed Amount and Paid Amount (are ReadOnly).

    can you please give me any piece of code.


    Thanks, - Israel Pradeep, - Software Engineer & PMP & B.I - Entrepreneur, - "If this post answers your question, please click "Mark As Answer" on the post and "Mark as Helpful"".
    Monday, July 25, 2011 4:33 PM
  • Hi Pradeep,

    you won't get readonly fields in inputpropertybag, if you like to get information which already there in database and readonly you can access it using MS crm servic retrieve method by passing record id.

    check MS CRM webservice retrieve method


    Mahain : MS CRM Freelancer
    Monday, July 25, 2011 5:38 PM
    Moderator
  • Hi Pradeep,

    As i have suggested before, try the following solutions:

    Hi,

    Regarding Record Creation

    You can register you plugin for the Post-Create stage and if error occurs you can throw InvalidPlluginExecutionException, the transaciton will be rolled back and record will not be created.

    Regarding Record Update

    If you will register the plugin on Update message in Pre-Create stage then you can retrieve not modified exsisting entity value using the Service.Retrieve method call. So you will have pre update and post update data


    Jehanzeb Javeed

    http://worldofdynamics.blogspot.com
    Linked-In Profile |CodePlex Profile

    If you find this post helpful then please "Vote as Helpful" and "Mark As Answer".
    Monday, July 25, 2011 5:41 PM
  • Hi All, thanks for your valuable suggestions and thanks a ton for being with me so far,

    I have implemented the code like you said, and registered as PreCreate and PreUpdate stages, But when the plugIn is executing its throwing an error, says:

    SoapException :
    SoapException : Server was unable to process request.

    please let me know, is there any mistake in Update code here below?

                    #region Agency Fund Allocation
                    if (context.PrimaryEntityName == "gms_agencyfundallocation")
                    {
                        Guid agencyfundallocationID = new Guid();
                        entity = (DynamicEntity)context.InputParameters.Properties["Target"];
                        //entity = (DynamicEntity)context.InputParameters.Properties[ParameterName.Target];

                        Guid paymentAccountingId = new Guid();
                        if (context.OutputParameters.Properties.Contains("id"))
                        {
                            paymentAccountingId = new Guid(context.OutputParameters.Properties["id"].ToString());
                        }
                        else
                        {
                            entity = (DynamicEntity)context.InputParameters.Properties["Target"];
                           // paymentAccountingId = (Guid)((Microsoft.Crm.Sdk.Key)((Microsoft.Crm.Sdk.DynamicEntity)context.InputParameters.Properties["Target"]).Properties[context.PrimaryEntityName + "id"]).Value;
                        }

                        CrmMoney dcAllocatedAmount = new CrmMoney();
                        dcAllocatedAmount.Value = (decimal)0.00;
                        if (entity.Properties.Contains("gms_allocatedamount"))
                        {
                            dcAllocatedAmount = (CrmMoney)entity.Properties["gms_allocatedamount"];
                        }

                        CrmMoney dcCommittedAmount = new CrmMoney();
                        dcCommittedAmount.Value = (decimal)0.00;
                        if (entity.Properties.Contains("gms_committedamount"))
                        {
                            dcCommittedAmount = (CrmMoney)entity.Properties["gms_committedamount"];
                        }

                        CrmMoney dcAmountPaid = new CrmMoney();
                        dcAmountPaid.Value = (decimal)0.00;
                        if (entity.Properties.Contains("gms_paidamount"))
                        {
                            dcAmountPaid = (CrmMoney)entity.Properties["gms_paidamount"];
                        }


                        String keyFundingSectionID = "";
                        if (entity.Properties.Contains("gms_fundingsectionid"))
                        {
                            Lookup lkFundingSection = (Lookup)entity.Properties["gms_fundingsectionid"];
                            keyFundingSectionID = lkFundingSection.Value.ToString();
                        }

                        #region Fetching the Funding Section Fields using the gms_fundingsectionid
                        QueryByAttribute qeFundingSection = new QueryByAttribute();
                        qeFundingSection.EntityName = "gms_fundingsection";
                        qeFundingSection.ColumnSet = new AllColumns();
                        qeFundingSection.Attributes = new String[] { "gms_fundingsectionid" };
                        qeFundingSection.Values = new Object[] { keyFundingSectionID };

                        RetrieveMultipleRequest retrieveFundingSection = new RetrieveMultipleRequest();
                        retrieveFundingSection.ReturnDynamicEntities = true;
                        retrieveFundingSection.Query = qeFundingSection;
                        RetrieveMultipleResponse retrievedFundingSection = (RetrieveMultipleResponse)service.Execute(retrieveFundingSection);

                        CrmMoney dcUnAllocatedAmount = new CrmMoney();
                        dcUnAllocatedAmount.Value = (decimal)0.00;

                        if (retrievedFundingSection.BusinessEntityCollection.BusinessEntities.Count > 0)
                        {
                            DynamicEntity deFundingSection = (DynamicEntity)retrievedFundingSection.BusinessEntityCollection.BusinessEntities[0];

                            if (deFundingSection.Properties.Contains("gms_unallocated"))
                            {
                                dcUnAllocatedAmount = (CrmMoney)deFundingSection.Properties["gms_unallocated"];
                            }
                        }
                        #endregion Fetching the Funding Section Fields using the gms_fundingsectionid

                        if (dcAllocatedAmount.Value <= dcUnAllocatedAmount.Value)
                        {
                            //Fetching the Major Project Funding fields

                            QueryExpression qeMajorProjectFunding = new QueryExpression();
                            qeMajorProjectFunding.EntityName = "gms_majorprojectallocation";
                            qeMajorProjectFunding.ColumnSet = new AllColumns();
                            qeMajorProjectFunding.Criteria = new FilterExpression();
                            qeMajorProjectFunding.Criteria.AddCondition("gms_agencyfundallocationid", ConditionOperator.Equal, agencyfundallocationID.ToString());

                            RetrieveMultipleRequest retrieveMajorProjectFunding = new RetrieveMultipleRequest();
                            retrieveMajorProjectFunding.ReturnDynamicEntities = true;
                            retrieveMajorProjectFunding.Query = qeMajorProjectFunding;
                            RetrieveMultipleResponse retrievedMajorProjectFunding = (RetrieveMultipleResponse)service.Execute(retrieveMajorProjectFunding);

                            CrmMoney dcTotalFundingAmount = new CrmMoney();
                            dcTotalFundingAmount.Value = (decimal)0.00;

                            CrmMoney dcTotalAmountPaid = new CrmMoney();
                            dcTotalAmountPaid.Value = (decimal)0.00;

                            if (retrievedMajorProjectFunding.BusinessEntityCollection.BusinessEntities.Count > 0)
                            {
                                for (int i = 0; i < retrievedMajorProjectFunding.BusinessEntityCollection.BusinessEntities.Count; i++)
                                {
                                    DynamicEntity deMajorProjectFunding = (DynamicEntity)retrievedMajorProjectFunding.BusinessEntityCollection.BusinessEntities[i];

                                    CrmMoney dcFundingAmountI = new CrmMoney();
                                    dcFundingAmountI.Value = (decimal)0.00;
                                    if (deMajorProjectFunding.Properties.Contains("gms_committedamount"))
                                    {
                                        dcFundingAmountI = (CrmMoney)deMajorProjectFunding.Properties["gms_committedamount"];
                                        dcTotalFundingAmount.Value = dcTotalFundingAmount.Value + dcFundingAmountI.Value;
                                    }

                                    CrmMoney dcAmountPaidI = new CrmMoney();
                                    dcAmountPaidI.Value = (decimal)0.00;
                                    if (deMajorProjectFunding.Properties.Contains("gms_actualamountpaid"))
                                    {
                                        dcAmountPaidI = (CrmMoney)deMajorProjectFunding.Properties["gms_actualamountpaid"];
                                        dcTotalAmountPaid.Value = dcTotalAmountPaid.Value + dcAmountPaidI.Value;
                                    }
                                }

                            }
                            entity.Properties["gms_committedamount"] = (CrmMoney)dcTotalFundingAmount;
                            entity.Properties["gms_paidamount"] = (CrmMoney)dcTotalAmountPaid;

                            switch (context.MessageName)
                            {
                                case "Create":
                                    context.CreateCrmService(true);
                                    break;
                                case "Update":
                                    service.Update(entity);
                                    break;
                            }

                        }
                        else
                        {
                            throw new InvalidPluginExecutionException("Unable to process your request, the Allocated Amount of Agency Fund Allocation exceeded the Unallocated Amount of Funding Section.");
                        }
                    }
               
                   
                    #endregion Agency Fund Allocation


    Thanks, - Israel Pradeep, - Software Engineer & PMP & B.I - Entrepreneur, - "If this post answers your question, please click "Mark As Answer" on the post and "Mark as Helpful"".
    Monday, July 25, 2011 8:29 PM
  • I can't run your code but use try and catch. capture the soap exception. it will be something like this..

    try

    {

    //do something here that tries to use the CRM Webservice

    }

    catch (SoapException ex)

    {

    string errorMessage = ex.Detail.InnerText;

    }

     


    Amreek singh Senior CRM Consultant CDC Praxa Sydney,Australia http://mscrmshop.blogspot.com/
    Tuesday, July 26, 2011 11:20 AM
  • I can't run your code but use try and catch. capture the soap exception. it will be something like this..

    try

    {

    //do something here that tries to use the CRM Webservice

    }

    catch (SoapException ex)

    {

    string errorMessage = ex.Detail.InnerText;

    }

     


    Amreek singh Senior CRM Consultant CDC Praxa Sydney,Australia http://mscrmshop.blogspot.com/
    Tuesday, July 26, 2011 11:20 AM
  • Thank you,

    I have registered the PlugIn as Pre-Create and Pre-Update, It is working when the Record is in Create mode But for Update mode, the Code is executing again and again (3 of the attributes are in ReadOnly mode). at last I got error saying that: "Server was unable to process your request"

    I got the below detailed error,

    Inner Text: "\n  0x80044182\n  This workflow job was canceled because the workflow that started it included an infinite loop. Correct the workflow logic and try again. For information about workflow logic, see Help.\n  Platform\n"

    Outer Text: "<detail><error>\n  <code>0x80044182</code>\n  <description>This workflow job was canceled because the workflow that started it included an infinite loop. Correct the workflow logic and try again. For information about workflow logic, see Help.</description>\n  <type>Platform</type>\n</error></detail>"

    Please have a look on my code.

     

             try{  

                  if (context.PrimaryEntityName=="gms_fundingsection")
                    {
                        Guid fundingsectionID = new Guid();

                        entity= (DynamicEntity)context.InputParameters.Properties["Target"];
                        
                        //if (context.OutputParameters.Properties.Contains("id"))
                        //{
                        //    fundingsectionID = new Guid(context.OutputParameters.Properties["id"].ToString());
                        //}
                        //else
                        //{
                        //    entity = (DynamicEntity)context.InputParameters.Properties["Target"];
                        //    // paymentAccountingId = (Guid)((Microsoft.Crm.Sdk.Key)((Microsoft.Crm.Sdk.DynamicEntity)context.InputParameters.Properties["Target"]).Properties[context.PrimaryEntityName + "id"]).Value;
                        //}

                        CrmMoney dcTotalFundingAmountFS = new CrmMoney();
                        dcTotalFundingAmountFS.Value = (decimal)0.00;
                        if (entity.Properties.Contains("gms_totalamount"))
                        {
                            dcTotalFundingAmountFS = (CrmMoney)entity.Properties["gms_totalamount"];
                        }

                        CrmMoney dcAllocatedAmountFS = new CrmMoney();
                        dcAllocatedAmountFS.Value = (decimal)0.00;
                        if (entity.Properties.Contains("gms_allocated"))
                        {
                            dcAllocatedAmountFS = (CrmMoney)entity.Properties["gms_allocated"];
                        }

                        CrmMoney dcCommittedAmountFS = new CrmMoney();
                        dcCommittedAmountFS.Value = (decimal)0.00;
                        if (entity.Properties.Contains("gms_committed"))
                        {
                            dcCommittedAmountFS = (CrmMoney)entity.Properties["gms_committed"];
                        }

                        CrmMoney dcAmountPaidFS = new CrmMoney();
                        dcAmountPaidFS .Value = (decimal)0.00;
                        if (entity.Properties.Contains("gms_paidamount"))
                        {
                            dcAmountPaidFS = (CrmMoney)entity.Properties["gms_paidamount"];
                        }

                        String keyFundingSectionID = "";
                        if (entity.Properties.Contains("gms_fundingsectionid"))
                        {
                            Guid lkFundingSectionIDFS = (Guid) ((Key) (entity.Properties["gms_fundingsectionid"])).Value;
                            keyFundingSectionID = lkFundingSectionIDFS.ToString();
                        }

                       
                        String keyFundingProgramID = "";
                        if (entity.Properties.Contains("gms_fundingprogramid"))
                        {
                            Lookup lkFundingProgram = (Lookup)entity.Properties["gms_fundingprogramid"];
                            keyFundingProgramID = lkFundingProgram.Value.ToString();
                        }

                        #region Fetching the Funding Pragram Fields using the gms_fundingprogramid
                        QueryByAttribute qeFundingPragram = new QueryByAttribute();
                        qeFundingPragram.EntityName = "gms_fundingprogram";
                        qeFundingPragram.ColumnSet = new AllColumns();
                        qeFundingPragram.Attributes = new String[] { "gms_fundingprogramid" };
                        qeFundingPragram.Values = new Object[] { keyFundingProgramID };

                        RetrieveMultipleRequest retrieveFundingPragram = new RetrieveMultipleRequest();
                        retrieveFundingPragram.ReturnDynamicEntities = true;
                        retrieveFundingPragram.Query = qeFundingPragram;
                        RetrieveMultipleResponse retrievedFundingProgram = (RetrieveMultipleResponse)service.Execute(retrieveFundingPragram);

                        CrmMoney dcUnAllocatedAmountFP = new CrmMoney();
                        dcUnAllocatedAmountFP.Value = (decimal)0.00;

                        if (retrievedFundingProgram.BusinessEntityCollection.BusinessEntities.Count > 0)
                        {
                            DynamicEntity deFundingPragram = (DynamicEntity)retrievedFundingProgram.BusinessEntityCollection.BusinessEntities[0];

                            if (deFundingPragram.Properties.Contains("gms_unallocated"))
                            {
                                dcUnAllocatedAmountFP = (CrmMoney)deFundingPragram.Properties["gms_unallocated"];
                            }
                        }
                        #endregion Fetching the Funding Pragram Fields using the gms_fundingpragramid

                        if (dcTotalFundingAmountFS.Value <= dcUnAllocatedAmountFP.Value)
                        {

                            if (entity.Properties.Contains("gms_fundingsectionid"))
                            {
                            //Fetching all the Agency Funding Allocation fields
                            QueryExpression qeAgencyFundingAllocation = new QueryExpression();
                            qeAgencyFundingAllocation.EntityName = "gms_agencyfundallocation";
                            qeAgencyFundingAllocation.ColumnSet = new AllColumns();
                            qeAgencyFundingAllocation.Criteria = new FilterExpression();
                            qeAgencyFundingAllocation.Criteria.AddCondition("gms_fundingsectionid", ConditionOperator.Equal, keyFundingSectionID);

                            RetrieveMultipleRequest retrieveAgencyFundingAllocations = new RetrieveMultipleRequest();
                            retrieveAgencyFundingAllocations.ReturnDynamicEntities = true;
                            retrieveAgencyFundingAllocations.Query = qeAgencyFundingAllocation;
                            RetrieveMultipleResponse retrievedAgencyFundingAllocations = (RetrieveMultipleResponse)service.Execute(retrieveAgencyFundingAllocations);

                            CrmMoney dcTotalAllocatedAFA = new CrmMoney();
                            dcTotalAllocatedAFA.Value = (decimal)0.00;

                            CrmMoney dcTotalCommittedAFA = new CrmMoney();
                            dcTotalCommittedAFA.Value = (decimal)0.00;

                            CrmMoney dcTotalPaidAmountAFA = new CrmMoney();
                            dcTotalPaidAmountAFA.Value = (decimal)0.00;

                            if(retrievedAgencyFundingAllocations.BusinessEntityCollection.BusinessEntities.Count>0)
                            {
                                for (int i = 0; i < retrievedAgencyFundingAllocations.BusinessEntityCollection.BusinessEntities.Count; i++)
                                {
                                    DynamicEntity deAgencyFundingAllocations = (DynamicEntity)retrievedAgencyFundingAllocations.BusinessEntityCollection.BusinessEntities[i];

                                    CrmMoney dcAllocatedAFA = new CrmMoney();
                                    dcAllocatedAFA.Value = (decimal)0.00;
                                    if (deAgencyFundingAllocations.Properties.Contains("gms_allocatedamount"))
                                    {
                                        dcAllocatedAFA = (CrmMoney)deAgencyFundingAllocations.Properties["gms_allocatedamount"];
                                        dcTotalAllocatedAFA.Value = dcTotalAllocatedAFA.Value + dcAllocatedAFA.Value;
                                    }

                                    CrmMoney dcCommittedAFA = new CrmMoney();
                                    dcCommittedAFA.Value = (decimal)0.00;
                                    if (deAgencyFundingAllocations.Properties.Contains("gms_committedamount"))
                                    {
                                        dcCommittedAFA = (CrmMoney)deAgencyFundingAllocations.Properties["gms_committedamount"];
                                        dcTotalCommittedAFA.Value = dcTotalCommittedAFA.Value + dcCommittedAFA.Value;
                                    }

                                    CrmMoney dcPaidAmountAFA = new CrmMoney();
                                    dcPaidAmountAFA.Value = (decimal)0.00;
                                    if (deAgencyFundingAllocations.Properties.Contains("gms_paidamount"))
                                    {
                                        dcPaidAmountAFA = (CrmMoney)deAgencyFundingAllocations.Properties["gms_paidamount"];
                                        dcTotalPaidAmountAFA.Value = dcTotalPaidAmountAFA.Value + dcPaidAmountAFA.Value;
                                    }
                                }
                            }
                            entity.Properties["gms_allocated"]= (CrmMoney) dcTotalAllocatedAFA;
                            entity.Properties["gms_committed"]=(CrmMoney)dcTotalCommittedAFA;
                            entity.Properties["gms_paidamount"] = (CrmMoney)dcTotalPaidAmountAFA;

                            switch (context.MessageName)
                            {
                                case "Create":
                                    context.CreateCrmService(true);
                                    break;

                                case "Update":
                                    service.Update(entity);
                                    break;
                            }
                        }

                        }
                        else
                        {
                            throw new InvalidPluginExecutionException("Unable to process your request, the Total Funding Amount of Funding Section cannot exceed the Unallocated Amount of Funding Program.");
                        }
                    }
                    #endregion Funding Section
                }

                catch (System.Web.Services.Protocols.SoapException ex)
                {
                    throw ex;
                }
                catch (OperationCanceledException ex)
                {
                    throw ex;
                }
                catch (InvalidPluginExecutionException ex)
                {
                    throw ex;
                }



    Thanks, - Israel Pradeep, - Software Engineer & PMP & B.I - Entrepreneur, - "If this post answers your question, please click "Mark As Answer" on the post and "Mark as Helpful"".
    Tuesday, July 26, 2011 7:55 PM
  • I think you are updating the entity if the context message is update. When you update the entity it keep calling the preupdate event. You don't need to update the entity. You just need to update the properties or adding properties to dynamic entity without calling the update request.

    I hope this helps.


    Amreek singh Senior CRM Consultant CDC Praxa Sydney,Australia http://mscrmshop.blogspot.com/
    Wednesday, July 27, 2011 12:54 PM
  • Hi,

    It looks like the original question was answered and code provided as well as troubleshooting steps to resolve issues.  If you get another error on this code, please create a new post to address that error.

    Thank you


    Regards, Donna

    Wednesday, August 3, 2011 3:32 PM