Evaluating on the amount of items returned in a message

Home Page Forums BizTalk 2004 โ€“ BizTalk 2010 Evaluating on the amount of items returned in a message

Viewing 2 reply threads
  • Author
    Posts
    • #23271

      Hi, I have a (Say customer invoice) that has a:

       <header> = “The customer address”

      <Body> = “This contains the invoices” this is made-up of a concatenation of three fields in a map,

      Problem

      I  want the <Body> to be limited to 30 invoices and if there are more to take the <Header> + <body> to the next page ie.

      if there are 45 invoices as below I would like to get to a solution like below:

      15 Somewhere           
      county                     
      Berkshire                           
      BH21 700    NZ    

      200000212120090914/09/2009                   
      200000312120090914/09/2009                
      200000412120090914/09/2009                
      200000512120090914/09/2009                
      200000612120090914/09/2009                
      200000712120090914/09/2009                
      200000812120090914/09/2009                
      200000912120090914/09/2009                
      200000012120090914/09/2009                
      200000112120090914/09/2009                
      200000212120090914/09/2009                 
      200000312120090914/09/2009                 
      200000412120090914/09/2009                 
      200000512120090914/09/2009                 
      200000612120090914/09/2009                 
      200000712120090914/09/2009                 
      200000812120090914/09/2009                 
      200000912120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 

      15 Somewhere           
      county                     
      Berkshire                           
      BH21 700    NZ

      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000212120090914/09/2009                 
      200000012120090914/09/2009                 
      200000112120090914/09/2009                 
      200000212120090914/09/2009                 
      200000312120090914/09/2009                 
      200000412120090914/09/2009

       

      Thanks

      Grant

       

    • #23278

      Hi Grant,

       

         To solve your problem, you can use a message debatching scenario and, inside a loop shape, count the number of debatched scenario messages, and construct your output message appropriately.

       

         Daniel.

       

      • #23290

        Hi Daniel,

                          thank you, i will give it ago.

        Kind Regards,

        Grant

    • #23329

      Hi All,

                I am still having trouble to think of a way of resolving this, I have it debatching with the header + body + tailor but I do not know howto do: look at the amount of rows coming in and if the body is greater than 30 add a header+body+trailor to the next page….

      Does anyone know of a tutorial that does this sort of thing or would be willing to have a quick look at my solution?

      Kind Regards,

      Grant

       

      • #23331

        Hi Grant,

         

            Have a look at this blog and see if this can help you achieve what you need:

        https://blogs.msdn.com/brajens/archive/2006/07/20/biztalk-custom-receive-pipeline-component-to-batch-messages.aspx

         

            Best,

         

            Daniel.

         

        • #23332

          Hi Daniel,

                           Thanks again for your reply, I added the solution from the link but it did not seem to do anything (Not having a good day ๐Ÿ™‚

          PS sorry to ask but would you be willing to have a quick look at my project and just tell me if I am heading in the right direction, ,And if the pipeline is still the correct route to follow?

          Kind Regards,

          Grant

           

          • #23333

            Hi Grant,

             

                Are you able to put the code from the link into a project and compile it into a DLL? How much progress have you made so far?

             

               Daniel.

             

            • #23334

               Hi Daniel,

                                Yes compiled it deployed the project and can see it in the admin console with Batch set to 5, I have a flat file Flat file disassembler before the new MessageBatchComponent do you think that might be the issue? I am getting no error message and the file is being formated as before.

              Kind Regards,

              Grant

              • #23335

                Hi Grant,

                 

                   On the blog link, the author says to use this component in the Disassembler stage of a Receive pipeline…

                 

                   Daniel.

                 

                • #23336

                  Hi Daniel,

                                     thanks  that is what I done, but no luck. what I want does not sound hard but it seems that way for me ๐Ÿ™

                  Kind Regards,

                  Grant

                  • #23337

                    Have you tried placing your Flat File Disassembler after the batching component in the Disassemble stage or removing it entirely and see what happens? You can also try to troubleshoot that batching component by writing entries to a log file or Application Log in Event Viewer, just to make sure that the component is working as it should be…

                     

                    Regards,

                     

                    Daniel.

                     

                    • #23338

                      Hi Daniel,

                                       First of all thank you for your patients and help on this: I could spend more time to get the pipeline working but I am not sure if this will help in my issue:

                       

                      1.       I am constructing the message (InputMsg)

                      2.       Expression for Header details

                      TempRemitDoc = BACSRemittanceMsg;

                       

                      strHeaderRemitMsg = TempRemitDoc.OuterXml;

                       

                      strHeaderRemitMsg = strHeaderRemitMsg.Substring(0,strHeaderRemitMsg.IndexOf(“<BACSBody>”));

                       

                      strTrailerRemitMsg = TempRemitDoc.OuterXml;

                       

                      strTrailerRemitMsg = strTrailerRemitMsg.Substring(strTrailerRemitMsg.IndexOf(“<Trailor>”), strTrailerRemitMsg.Length – strTrailerRemitMsg.IndexOf(“<Trailor>”));

                       

                      3.       Expression for the BodyPart

                      RemitXmlDoc = BACSRemittanceMsg;

                       

                      xmlRemitBodyNodeInit = RemitXmlDoc.SelectSingleNode(strRemitBodyNodeXPath);

                       

                      sbRemitMsg.Append(xmlRemitBodyNodeInit.InnerXml);

                       

                      4.       Expression to add it all up and assign it to a message

                      RemitXmlDoc = new System.Xml.XmlDocument();

                      RemitXmlDoc.LoadXml(strHeaderRemitMsg+”<BACSBody>”+sbRemitMsg.ToString()+”</BACSBody>”+strTrailerRemitMsg);

                       

                      Do you think the pipeline is still the best way forward?

                       

                      Kind Regards,

                      Grant

                      • #23339

                        Hi Grant,

                         

                           If you can’t get the pipeline component to work, I would suggest that you use XPath and XQuery inside your orchestration to parse your BodyPart entity (to determine batch size) and construct your output message accordingly.

                         

                           Best,

                         

                           Daniel.

                         

                      • #23345

                        Hi Daniel,

                                           thank you once again i will work on that solution.

                        Thanks again for your time.

                        Grant

                      • #23347

                        Hi All,

                                    is it possible to do a foreach statement within and expression shape:

                         

                        i.e.

                        Foreach (BACSBody <= 30)

                        {

                        RemXmlDoc = new System.Xml.XmlDocument();

                        RemitXmlDoc.LoadXml(strHeaderRemitMsg+”<BACSBody>”+sbRemitMsg.ToString()+”</BACSBody>”+strTrailerRemitMsg);

                        }

                        Or awa y do this?

                        Kind Regards,

                        Grant

                      • #23350

                        Hi Grant,

                         

                            BizTalk uses XLANGs as its programming language in Orchestrations and underlying shapes, it’s derived from C# and is limited in its scope and syntax. For instance, the statement “Foreach” is not allowed.

                         

                            You can use XPath to achieve what you want in parsing and grouping the contents of your output message. Here’s a link on how to get started on XPath: http://www.w3schools.com/xpath/default.asp

                            The following link is a sample from BizTalkGurus on using XPath in orchestrations (written for version 2004 but still applicable for 2006 R2):

                        https://www.biztalkgurus.com/media/p/15516.aspx

                            Here’s a link to another blog that you would find useful dealing with XPath: http://geekswithblogs.net/sthomas/archive/2004/10/25/13269.aspx

                         

                            I hope this is enough information to get you started… Let me know how you make out on this.

                         

                            Daniel.

                         

                      • #23351

                        Hi Daniel,

                                          I am using xPath to return  the count of the amount of records.

                        Expression Sharp

                        nRecordCount = System.Convert.ToInt32(xpath(Input, “count(//*[local-name()=’Person’])”)); //Say return 100

                        ///This is the new part i wanted to do

                        was if (nRecordCount ==< 30)

                        {

                        RemitXmlDoc.LoadXml(strHeaderRemitMsg+”<BACSBody>”+sbRemitMsg.ToString()+”</BACSBody>”+strTrailerRemitMsg);

                        But the problem is I may have to repeat this as there could be a return of 300 or more:

                        The part I do not understand is would I have to rewirte the adding of strHeaderRemitMsg+”<BACSBody>”+sbRemitMsg.ToString()+”</BACSBody>”+strTrailerRemitMsg

                        if xPath?

                        Kind Regards,

                        Grant 

                         

                      • #23352

                        Hi Grant,

                         

                           Have a look at the following link: http://blog.eliasen.dk/2006/11/05/LoopingAroundElementsOfAMessage.aspx

                           You would follow the same pattern that the blog’s author details in Suggestion 1 with the loop and counters, etc.

                            Inside your loop, you would assign the following statement to a String variable in an Expression shape: MyVar = MyVar + “<BACSBody>”+sbRemitMsg.ToString()+”</BACSBody>” every time you loop through. Then you would have a decide shape inside the loop to look for a counter of batch of 30 records: if it is 30 records then you will have an Expression shape where you will do RemitXmlDoc.LoadXml(strHeaderRemitMsg + MyVar + strTrailerRemitMsg); and ouptut this message to a Send Port (if you want), reset the counter and move along in the workflow.

                            This scenario would work well if your message is not that large, assuming that’s the case, otherwise your orchestration will get a performance hit.

                            Regards,

                         

                            Daniel.

                         

                      • #23356

                        Hi Daniel,

                                     A really big thanks you!! I see the way now J

                        If may ask one final thing please, I knock together what you mentioned.

                         

                        //Expression Shape (Get Record Count)

                        nRecordCount = System.Convert.ToInt32(xpath(Input, “count(//*[local-name()=’Person’])”));

                        nLoopCount =1;

                         

                        //Loop

                        nLoopCount <= nRecordCount

                         

                        //Decide

                        nLoopCount <= 30

                        ////Expression Shape (Do Stuff)

                        System.Diagnostics.EventLog.WriteEntry(“ExpressionTrre”,System.Convert.ToString(nLoopCount));

                         

                        ////Expression Shape

                        nLoopCount = nLoopCount + 1;

                         

                        My first 30 records take this route and the others that the ELSE route.

                        Now I think there is a problem with my counter in my loop, where would I reset this?

                        Kind regards,

                        Grant

                      • #23357

                        Hi Grant,

                         

                            You should have another secondary counter (i.e. nMessageCount) which keeps track of number of messages to batch. In your Decide shape, your first If Branch rule should have conditional statement like nMessageCount == 30 , and in the same flow, have an Expression shape where you reset this counter and your message variable myVar :

                        nMessageCount = 0;

                        myVar = “”;

                             Also, at the end of the loop, make sure to do the “stuff” one more time (the logic from your If Branch rule) so that you collect any remaining records that were not previously batched in the loop. Remember that you should increment the nMessageCount variable as you do for the nLoopCount.

                         

                           You should be all set to achieve what you want.

                         

                           Daniel.

                         

                      • #23358

                        Hi Daniel,

                                         You are a gent thank you for your time and help. [:D]

                        Best Regards,

                        Grant

                      • #23396

                        Hi Daniel,
                                         Sorry to bother you again on this subject, I went to implement what you had suggested which seems correct but I have run into the following issue:

                        my decide shapes are there job ie. nLoopCount <= 30 and then the expression has the following RemitXmlDoc.LoadXml(strHeaderRemitMsg + MyVar + strTrailerRemitMsg); But what I get is for the 43 records being returned in the count I get 43 times the same message beiong repeated in the out put file:

                        Any ideas
                        Grant

                      • #23402

                        Hi Grant,

                         

                           In my previous post, I mentioned that your Decide shape should have the If Branch rule with its conditional statement set to nMessageCount == 30 , with nMessageCount being a secondary counter that you would use as a message batch counter, and you would reset that counter in the If Branch rule workflow.

                           Also, are you iterating through your original message in your loop, because you should not be getting the same message each time your loop comes around? To concatenate your messages together after extracting each one from your original message, define a Scope shape with transaction type Atomic, and inside that scope shape, define two variables, one of type System.Xml.XmlNode and the other of type System.Xml.XmlNodeList (let’s call them vXmlNode and vXmlNodeList). Then define an Expression shape in your Scope shape, that have the following lines of code (let’s call your original message InputMessage):

                        vXmlNodeList = xpath(InputMessage, “/*[local-name()=’Employees’ and namespace-uri()=”]/*[local-name()=’Employee’ and namespace-uri()=”][” + nLoopCount + “]”);

                        vXmlNode = vXmlNodeList.Item(0);

                        myVar = myVar + vXmlNode.InnerText;

                         

                           This should help you achieve what you want. Let me know how you make out on this.

                         

                           Daniel.

                      • #23403

                        Hi Daniel,

                                        I am going to follow what you have said word for word so are you saying in the decide shape I have nLoopCount <= 30 &
                        nMessageCount == 30 ? did not think you could have both?

                        Sorry

                        Grant

                      • #23404

                        ops ok you can let me do yhe rest of stuff you mention.

                        Thanks

                        Grant

                      • #23405

                        Daniel,

                                     am I right in thinking

                        vXmlNodeList = xpath(InputMessage, “/*[local-name()=’Employees’ and namespace-uri()=”]/*[local-name()=’Employee’ and namespace-uri()=”][” + nLoopCount + “]”);

                        nLoopCount  is of type System.Int32 as it complaing about the conversation and I want to makesure I am following you correctly?

                      • #23406

                        Hi Grant,

                         

                            Yes, convert that variable to String like this: System.Convert.ToString(nLoopCount)

                         

                           Sorry for the omission.

                         

                           Daniel.

                      • #23407

                        Sorry Daniel,

                                              But does the converstion have to be outside the xpath..?

                         

                        This is what I have vXmlNodeList = xpath(BACSRemittanceMsg,”string(//*[local-name()=’BACSRemittance_DATA’ and namespace-uri()=’http://P5.BizTalk.Schemas.PP_SAPToBottomlineBACSRemittance_App_FF’%5D/*%5Blocal-name()=’BACSBody&#8217; and namespace-uri()=”]/*[local-name()=’BACSRemittance’ and namespace-uri()=”]/*[local-name()=’Remittance’ and namespace-uri()=”]/*[local-name()=’RemittanceDetail’ and namespace-uri()=”]/*[local-name()=’BACSRemittance_DATA’ and namespace-uri()=’http://P5.BizTalk.Schemas.PP_SAPToBottomlineBACSRemittance_App_FF’%5D/*%5Blocal-name()=’BACSBody&#8217; and namespace-uri()=”]/*[local-name()=’BACSRemittance’ and namespace-uri()=”]/*[local-name()=’Remittance’ and namespace-uri()=”]/*[local-name()=’RemittanceDetail’ and namespace-uri()=”][” + System.Convert.ToString(nLoopCount) + “]”);

                        Grant

                      • #23408

                        Hi Grant,

                         

                            You can stick the function that does the conversion inside the call to xpath, when you pass the second argument to it.

                         

                            Daniel.

                         

                      • #23410

                        Hi Daniel,

                                          Can I just give you a summary of where I am so not to waste too much of your time before I deploy and test?

                         

                        Shape

                         Expression

                        nLoopCount =1;

                        nMessageCount = 1;

                        Loop start

                        nLoopCount <= nRecordCount

                        Decide Shape

                        nLoopCount <= 30 & nMessageCount == 30

                        Atomic Scope

                        vXmlNodeList = xpath(BACSRemittanceMsg, “System.Convert.ToString(//*[local-name()=’BACSRemittance_DATA’ and namespace-uri()=’http://P5.BizTalk.Schemas.PP_SAPToBottomlineBACSRemittance_App_FF’%5D/*%5Blocal-name()=’BACSBody&#8217; and namespace-uri()=”]/*[local-name()=’BACSRemittance’ and namespace-uri()=”]/*[local-name()=’Remittance’ and namespace-uri()=”]/*[local-name()=’RemittanceDetail’ and namespace-uri()=”]/*[local-name()=’BACSRemittance_DATA’ and namespace-uri()=’http://P5.BizTalk.Schemas.PP_SAPToBottomlineBACSRemittance_App_FF’%5D/*%5Blocal-name()=’BACSBody&#8217; and namespace-uri()=”]/*[local-name()=’BACSRemittance’ and namespace-uri()=”]/*[local-name()=’Remittance’ and namespace-uri()=”]/*[local-name()=’RemittanceDetail’ and namespace-uri()=”][” + nLoopCount + “]”));

                         

                        vXmlNode = vXmlNodeList.Item(0);

                        MyVar = MyVar + vXmlNode.InnerText;

                         

                        Expression Add count

                        nLoopCount = nLoopCount + 1;

                        nMessageCount = nMessageCount + 1;

                        Any mistakes ?

                        Grant

                         

                         

                      • #23411

                        Hi Grant,

                            See my response below, in the quote, I am highlighting the changes in bold… Hope this makes sense.

                        [quote user="Zen"]

                        Hi Daniel,

                                          Can I just give you a summary of where I am so not to waste too much of your time before I deploy and test?

                         

                        Expression Shape (Initialize variables)

                        nLoopCount = 1;

                        nMessageCount = 1;

                        nRecordCount = ? (put your line of code here)

                        Loop shape (nLoopCount <= nRecordCount)

                        Atomic Scope shape (contains the following expression shape)

                        Expression shape (get individual node)

                        vXmlNodeList = xpath(BACSRemittanceMsg, “//*[local-name()=’BACSRemittance_DATA’ and namespace-uri()=’http://P5.BizTalk.Schemas.PP_SAPToBottomlineBACSRemittance_App_FF’%5D/*%5Blocal-name()=’BACSBody&#8217; and namespace-uri()=”]/*[local-name()=’BACSRemittance’ and namespace-uri()=”]/*[local-name()=’Remittance’ and namespace-uri()=”]/*[local-name()=’RemittanceDetail’ and namespace-uri()=”]/*[local-name()=’BACSRemittance_DATA’ and namespace-uri()=’http://P5.BizTalk.Schemas.PP_SAPToBottomlineBACSRemittance_App_FF’%5D/*%5Blocal-name()=’BACSBody&#8217; and namespace-uri()=”]/*[local-name()=’BACSRemittance’ and namespace-uri()=”]/*[local-name()=’Remittance’ and namespace-uri()=”]/*[local-name()=’RemittanceDetail’ and namespace-uri()=”][” + System.Convert.ToString(nLoopCount) + “]”);

                        vXmlNode = vXmlNodeList.Item(0);

                        MyVar = MyVar + vXmlNode.InnerText;

                        Decide Shape

                        If Branch rule (nMessageCount == 30)

                        Expression shape (logic for batching message)

                        Do something here to construct your batch message with myVar

                        nMessageCount = 0;

                        myVar = “”;

                        Expression shape (Add counters)

                        nLoopCount = nLoopCount + 1;

                        nMessageCount = nMessageCount + 1;

                        End of Loop

                        Expression shape (logic for batching rest of message)

                        Do something here to construct your batch message with myVar

                        Any mistakes ?

                        Grant

                         

                         

                         

                        [/quote]

                      • #23412

                        Hi Daniel,

                                        Got slightly confused so I have update accordingly with some questions:

                        Initialize Loop variables

                        nRecordCount = System.Convert.ToInt32(xpath(BACSRemittanceMsg, “count(//*[local-name()=’BACSRemittance_DATA’ and namespace-uri()=’http://P5.BizTalk.Schemas.PP_SAPToBottomlineBACSRemittance_App_FF’%5D/*%5Blocal-name()=’BACSBody&#8217; and namespace-uri()=”]/*[local-name()=’BACSRemittance’ and namespace-uri()=”]/*[local-name()=’Remittance’ and namespace-uri()=”]/*[local-name()=’RemittanceDetail’ and namespace-uri()=”]/*[local-name()=’DocumentIdentifier’ and namespace-uri()=”])”));

                         

                        On the Decide shape I have only got an nLoopCount <= 30 & nMessageCount == 30 // should this only be nMessageCount == 30 ?

                         

                        Expression shape (get individual node) This error in bold

                        vXmlNodeList = xpath(BACSRemittanceMsg, “//*[local-name()=’BACSRemittance_DATA’ and namespace-uri()=’http://P5.BizTalk.Schemas.PP_SAPToBottomlineBACSRemittance_App_FF’%5D/*%5Blocal-name()=’BACSBody&#8217; and namespace-uri()=”]/*[local-name()=’BACSRemittance’ and namespace-uri()=”]/*[local-name()=’Remittance’ and namespace-uri()=”]/*[local-name()=’RemittanceDetail’ and namespace-uri()=”]/*[local-name()=’BACSRemittance_DATA’ and namespace-uri()=’http://P5.BizTalk.Schemas.PP_SAPToBottomlineBACSRemittance_App_FF’%5D/*%5Blocal-name()=’BACSBody&#8217; and namespace-uri()=”]/*[local-name()=’BACSRemittance’ and namespace-uri()=”]/*[local-name()=’Remittance’ and namespace-uri()=”]/*[local-name()=’RemittanceDetail’ and namespace-uri()=”][” + System.Convert.ToString(nLoopCount) + “]”);

                        Error msg Syste.convert.ToString(nLoop must be in form of xpath

                         

                        vXmlNode = vXmlNodeList.Item(0);

                        MyVar = MyVar + vXmlNode.InnerText;

                         

                        Do something here to construct your batch message with myVar (Grant(Added))

                        MyVar = MyVar + “<BACSBody>”+sbRemitMsg.ToString()+”</BACSBody>”;

                        RemitXmlDoc.LoadXml(strHeaderRemitMsg + MyVar + strTrailerRemitMsg);

                        Kind Regards,

                        Grant

                      • #23413

                        Hi Grant,

                         

                        1) In your Decide shape, your If rule branch should have conditional statement set to nMessageCount == 30 only.

                        2) The syntax error in your xpath expression can be solved by doing this:

                        vXmlNodeList = xpath(BACSRemittanceMsg, “/*[local-name()=’BACSRemittance_DATA’ and namespace-uri()=’http://P5.BizTalk.Schemas.PP_SAPToBottomlineBACSRemittance_App_FF’%5D/*%5Blocal-name()=’BACSBody&#8217; and namespace-uri()=”]/*[local-name()=’BACSRemittance’ and namespace-uri()=”]/*[local-name()=’Remittance’ and namespace-uri()=”]/*[local-name()=’RemittanceDetail’ and namespace-uri()=”]/*[local-name()=’BACSRemittance_DATA’ and namespace-uri()=’http://P5.BizTalk.Schemas.PP_SAPToBottomlineBACSRemittance_App_FF’%5D/*%5Blocal-name()=’BACSBody&#8217; and namespace-uri()=”]/*[local-name()=’BACSRemittance’ and namespace-uri()=”]/*[local-name()=’Remittance’ and namespace-uri()=”]/*[local-name()=’RemittanceDetail’ and namespace-uri()=”][” + System.Convert.ToString(nLoopCount) + “]”)

                        3) You should construct your MyVar variable in the Expression shape as following:

                        MyVar = MyVar + “<BACSBody>” + vXmlNode.InnerText + “</BACSBody>”;

                         

                            Hope this helps.

                         

                           Daniel.

                         

                      • #23414

                        Daniel,

                                    I am really greatful for all your help:

                        1. still get the same syntax error:

                        2. If I have to construct the message as MyVar = MyVar + “<BACSBody>” + vXmlNode.InnerText + “</BACSBody>”;

                        Do I still need this MyVar = MyVar + “<BACSBody>”+sbRemitMsg.ToString()+”</BACSBody>”;

                        RemitXmlDoc.LoadXml(strHeaderRemitMsg + MyVar + strTrailerRemitMsg);

                        Sorry to be a pain

                        Grant

                      • #23415

                        Hi Grant,

                         

                        1. Try the following to see if this works:

                        vXmlNodeList = xpath(BACSRemittanceMsg, “/*[local-name()=’BACSRemittance_DATA’ and namespace-uri()=’http://P5.BizTalk.Schemas.PP_SAPToBottomlineBACSRemittance_App_FF’%5D/*%5Blocal-name()=’BACSBody&#8217; and namespace-uri()=”]/*[local-name()=’BACSRemittance’ and namespace-uri()=”]/*[local-name()=’Remittance’ and namespace-uri()=”][” + System.Convert.ToString(nLoopCount) + “]”)

                        Also, you might want to download and install this tool from the following link:

                        http://www.bizbert.com/bizbert/2007/11/25/DanSharp+XmlViewer.aspx

                        It helps with pinpointing and validating XPath expressions and queries from XML data that you load into it. I found it useful when doing certain projects in BizTalk using XPath.

                         

                        2. No, you do NOT need that statement in your code anymore: MyVar = MyVar + “<BACSBody>”+sbRemitMsg.ToString()+”</BACSBody>”;

                         

                        I hope this all works out for you.

                         

                        Daniel.

                         

                      • #23416

                        Hi Daniel,

                                         Syntax still an issue:

                        Thanks for a link to the tool

                        Kind Regards,

                        Grant

                      • #23418

                        Hi Grant,

                         

                           I suggest that you use the tool (which link I sent to you) to troubleshoot your XPath query, as it is impossible for me to do that, since I don’t know the data structure of your XML contents. Once you find the path to your individual messages in that original message, it’s not hard to plug in your variable nLoopCount to iterate over each individual message in the XPath query expression.

                         

                           Best of luck,

                         

                           Daniel.

                      • #23419

                        Hi Daniel,

                                        thanks for coming back to me on this as I am banging my head of a wall on this, I have went between what you said before and I still am as a loss. is there anyway I can send you some screen-shots just incase what I am doing is blindly wrong?

                        Thanks again

                        Grant

                      • #23421

                        Hi Grant,

                         

                           I’ve sent you a request to add you as a Friend on this site. Check your Friends link for more information…

                         

                           Daniel.

                         

                      • #23422

                        Hi Daniel,

                                           I added you and typed some data > Select start conv and it went back to the main screen?

                        Can you try and say something to me?

                        Grant

                      • #23596

                        Hi Daniel,

                                        I would like to take this opportunity to thanks you for all your help over the last few weeks, you where always there to give me ideas/guidance. You even sent me email to see how I was doing with the issue I had and helped me to completion. You had your own work to-do but you where still there helping me, thank you so so much.

                         Kind Regards,

                        Grant

Viewing 2 reply threads
  • The forum ‘BizTalk 2004 โ€“ BizTalk 2010’ is closed to new topics and replies.