Wednesday, January 8, 2014

Parse eConnectException error number

I'm using RegEx to parse the eConnectionException Message field, so that I can handle the error numbers as needed. In the code below the sample string comes from trying to insert a doc with a duplicate SOP Number. LogError() looks up the error info in the DYNAMICS..taErrorCodes table, then inserts into a logging table. HandleError() tries to gracefully handle the error. Error Number 2221 =  Duplicate document number. In this case I would use GetNextDocNum GetNextSOPNumber() to get a valid SOP Number, and retry the insertion.

            string sample = @"dummy"; //Look below the code snippet to see the actual sample string
            Regex regex = new Regex(@"Error Number = (?<ErrNum>[\d]*)");
            MatchCollection matches = regex.Matches(input);
            int errorCode = 0;
            foreach (Match m in matches)
            {
                if(Int32.TryParse(m.Groups["ErrNum"].Value, out errorCode))
                {
                    switch (errorCode)
                    {
                        case 2221:
                            HandleError(errorCode);
                            break;
                        else
                            LogError(errorCode);
                            break;
                   }
            }




Sample string
"Sql procedure error codes returned:

                    Error Number = 450  Stored Procedure= taSopLineIvcInsert  Error Description = Duplicate LNITMSEQ in SOP10200
                    Node Identifier Parameters: taSopLineIvcInsert
                    SOPNUMBE = TEST0044            
                    SOPTYPE = 3
                    LNITMSEQ = 1024
                    Related Error Code Parameters for Node : taSopLineIvcInsert
                    SOPNUMBE = TEST0044            
                    LNITMSEQ = 1024
                    SOPTYPE = 3


                    Error Number = 2221  Stored Procedure= taSopLineIvcInsert  Error Description = Duplicate document number. If adding or updating lines to an existing document, UpdateIfExists must = 1
                    Node Identifier Parameters: taSopLineIvcInsert
                    SOPNUMBE = TEST0044            
                    SOPTYPE = 3
                    LNITMSEQ = 1024
                    Related Error Code Parameters for Node : taSopLineIvcInsert
                    UpdateIfExists = Note: This parameter was not passed in, no value for the parameter will be returned.


                    <taSopLineIvcInsert>
                      <SOPTYPE>3</SOPTYPE>
                      <SOPNUMBE>TEST0044             </SOPNUMBE>
                      <CUSTNMBR>2B             </CUSTNMBR>
                      <DOCDATE>12/15/99 12:00:00 AM</DOCDATE>
                      <LOCNCODE>RUGBY      </LOCNCODE>
                      <ITEMNMBR>DOLLY                          </ITEMNMBR>
                      <UNITPRCE>1000.00000</UNITPRCE>
                      <XTNDPRCE>1000.00000</XTNDPRCE>
                      <QUANTITY>1.00000</QUANTITY>
                      <PRCLEVEL>RETAIL     </PRCLEVEL>
                      <ITEMDESC>Appliance Dolly                                                                                      </ITEMDESC>
                      <LNITMSEQ>1024</LNITMSEQ>
                      <ITMTSHID>ITEM-ALL       </ITMTSHID>
                      <TAXSCHID>S-N-NO-%AD-%S  </TAXSCHID>
                      <SHIPMTHD>EXPRESS MAIL   </SHIPMTHD>
                      <CURNCYID>USA            </CURNCYID>
                      <UOFM>Hour     </UOFM>
                    </taSopLineIvcInsert>
                    ";

No comments:

Post a Comment

There was an error in this gadget