Crystal Reports crashing on carriage returns

Okay, we ended up extracting all part,partdescriptions to an Excel spreadsheet and using the substitute formula on the CHR(30) and pasting into a new column and finally updating with the DMT tool.

Still would like to know how to run a BAQ for the CHR(30) character, anybody?

Thanks.
Crystal Reports has begun reporting strange characters when printing Stock Status report and Job Travelers, upon further investigation, it appears that there are carriage returns in part descriptions that are showing up as ASCII or hexadecimal characters.  When Crystal sees these characters in the already generated XML file it fails to print out of 8.03.410.

This either started as a result of upgrading from 408B to 410 or when we started updating parts using the DMT tool.

Has anybody else experience this with Crystal? 

Thanks. 

Yes, but in 9.

 

I just run a report that lists all my parts with descriptions.  (Part Table).

I then try to open the XML in IE and it will fail and tell me the line and character #.

 

I then open the XML in Notepad++ and go to that line.  I am able to see the special character and then delete the special character from the description via Part Entry.

 

I have been drilling my people not to COPY and Paste descriptions.  But some of the errors did come DMT a well.

 

Miguel A. Santillan

Compass Manufacturing Systems

 

From: vantage@yahoogroups.com [mailto:vantage@yahoogroups.com]
Sent: Friday, September 4, 2015 9:11 AM
To: vantage@yahoogroups.com
Subject: [Vantage] Crystal Reports crashing on carriage returns.

 

 

Crystal Reports has begun reporting strange characters when printing Stock Status report and Job Travelers, upon further investigation, it appears that there are carriage returns in part descriptions that are showing up as ASCII or hexadecimal characters.  When Crystal sees these characters in the already generated XML file it fails to print out of 8.03.410.

 

This either started as a result of upgrading from 408B to 410 or when we started updating parts using the DMT tool.

 

Has anybody else experience this with Crystal? 

 

Thanks. 

This probably came from updating from DMT – part description – usually when I do a update on part I do not include the part description – when this happens to use I go to :
EPICORDATA – Reports – The person who ran report that received error – pull up the XML – the last record will tell you which part or job had the error. If you take that part description and drop into word you will see unwanted character. Remove the unwanted character copy – paste back to part master or job –NOTE --> check all orders, quotes, jobs, customer part number, etc. that contain this part description make sure all are corrected or it will happen again.

From: vantage@yahoogroups.com [mailto:vantage@yahoogroups.com]
Sent: Friday, September 04, 2015 9:11 AM
To: vantage@yahoogroups.com
Subject: [Vantage] Crystal Reports crashing on carriage returns.



Crystal Reports has begun reporting strange characters when printing Stock Status report and Job Travelers, upon further investigation, it appears that there are carriage returns in part descriptions that are showing up as ASCII or hexadecimal characters. When Crystal sees these characters in the already generated XML file it fails to print out of 8.03.410.

This either started as a result of upgrading from 408B to 410 or when we started updating parts using the DMT tool.

Has anybody else experience this with Crystal?

Thanks.



[Non-text portions of this message have been removed]
It is a problem with the copy and paste operation. 

I found that we have at least 1,000 part descriptions now with RS or CHR(30) in our database! 

This query :

FOR EACH part where part.partdescription matches "*" + CHR(30)  "*":
display
part.partnum
part.inactive
part.partdescription view-as editor size 50 by 20.
END.

Will display the parts in question, but this query:

FOR EACH part where part.partdescription matches "*" + CHR(30) + "*":
assign part.partdescription = REPLACE(part.partdescription,CHR(30),"").

END

Will not work because or database is read-only in Procedure Editor.  Is there a way with our current license to update via Procedure Editor and remove these part descriptions?

Can we update the part descriptions another way using 8.03.410?

Thanks./
 

DMT?

 

Miguel A. Santillan

Compass Manufacturing Systems

 

From: vantage@yahoogroups.com [mailto:vantage@yahoogroups.com]
Sent: Wednesday, September 9, 2015 7:25 AM
To: vantage@yahoogroups.com
Subject: [Vantage] Re: Crystal Reports crashing on carriage returns.

 

 

It is a problem with the copy and paste operation. 

 

I found that we have at least 1,000 part descriptions now with RS or CHR(30) in our database! 

 

This query :

 

FOR EACH part where part.partdescription matches "*" + CHR(30)  "*":
display
part.partnum
part.inactive
part.partdescription view-as editor size 50 by 20.
END.

 

Will display the parts in question, but this query:

 

FOR EACH part where part.partdescription matches "*" + CHR(30) + "*":
assign part.partdescription = REPLACE(part.partdescription,CHR(30),"").

 

END

 

Will not work because or database is read-only in Procedure Editor.  Is there a way with our current license to update via Procedure Editor and remove these part descriptions?



Can we update the part descriptions another way using 8.03.410?

 

Thanks./

 

#ygrps-yiv-2125093990 P.ygrps-yiv-2125093990b1e7fd89-0279-4ffe-a16a-1f1bcba0d537 { MARGIN:0cm 0cm 0pt;} #ygrps-yiv-2125093990 LI.ygrps-yiv-2125093990b1e7fd89-0279-4ffe-a16a-1f1bcba0d537 { MARGIN:0cm 0cm 0pt;} #ygrps-yiv-2125093990 DIV.ygrps-yiv-2125093990b1e7fd89-0279-4ffe-a16a-1f1bcba0d537 { MARGIN:0cm 0cm 0pt;} #ygrps-yiv-2125093990 TABLE.ygrps-yiv-2125093990b1e7fd89-0279-4ffe-a16a-1f1bcba0d537Table { MARGIN:0cm 0cm 0pt;} #ygrps-yiv-2125093990 DIV.ygrps-yiv-2125093990Section1 { }

The Record Separator is one of the characters that Epicor doesn’t strip out in Report generation and can cause problems, they do strip others.

 

You can correct this with DMT, Export them out into CSV then perform the update.

 

In 9.05 the progress license was relaxed to allow you to perform your below query.

If you don’t have DMT in 8.03 you can utilize lib/UpdateTableBuffer.r to perform this it is documented in the help.  

 

Kind Regards,

 

From: vantage@yahoogroups.com [mailto:vantage@yahoogroups.com]
Sent: Wednesday, September 9, 2015 3:25 PM
To: vantage@yahoogroups.com
Subject: [Vantage] Re: Crystal Reports crashing on carriage returns.

 

 

It is a problem with the copy and paste operation. 

 

I found that we have at least 1,000 part descriptions now with RS or CHR(30) in our database! 

 

This query :

 

FOR EACH part where part.partdescription matches "*" + CHR(30)  "*":
display
part.partnum
part.inactive
part.partdescription view-as editor size 50 by 20.
END.

 

Will display the parts in question, but this query:

 

FOR EACH part where part.partdescription matches "*" + CHR(30) + "*":
assign part.partdescription = REPLACE(part.partdescription,CHR(30),"").

 

END

 

Will not work because or database is read-only in Procedure Editor.  Is there a way with our current license to update via Procedure Editor and remove these part descriptions?

 

Can we update the part descriptions another way using 8.03.410?

 

Thanks./

 



Stephen Edginton (Beng) | Solutions & Technical Director

Mobile:  +44 7734 858415
DDI:  +44 121 314 1179
Main:  +44 (0) 121 314 1170
Web:  www.dotnetit.co.uk

Dot Net IT Limited, One St Kenelm Court, Steel Park Road, Halesowen, B62 8HD, United Kingdom.

DotNetIT

Epicor Platinum Partner

Epicor Alliance Partner

Any clues on the UpdateTableBuffer.r syntax to remove the CHR(30) using the procedure editor?  

for each part where part.partdescription matches "*" + CHR(30) + "*" :
run lib\UpdateTableBuffer.p(


It looks like this query will work: 


For each Part where ( Part.PartDescription MATCHES "*" + CHR(30) + "*") no-lock : 
DEFINE VARIABLE cNewDesc AS CHARACTER NO-UNDO. 
cNewDesc = replace(Part.PartDescription, "*" + CHR(30) + "*", ""). 
Run lib\UpdateTableBuffer.p(input BUFFER Part:HANDLE, "PartDescription", cNewDesc). 
End. 

Only problem is when I run it, it reports that the shared variable LocalizationManager has not been created yet. 

#ygrps-yiv-309438111 P.ygrps-yiv-309438111b1e7fd89-0279-4ffe-a16a-1f1bcba0d537 { MARGIN:0cm 0cm 0pt;} #ygrps-yiv-309438111 LI.ygrps-yiv-309438111b1e7fd89-0279-4ffe-a16a-1f1bcba0d537 { MARGIN:0cm 0cm 0pt;} #ygrps-yiv-309438111 DIV.ygrps-yiv-309438111b1e7fd89-0279-4ffe-a16a-1f1bcba0d537 { MARGIN:0cm 0cm 0pt;} #ygrps-yiv-309438111 TABLE.ygrps-yiv-309438111b1e7fd89-0279-4ffe-a16a-1f1bcba0d537Table { MARGIN:0cm 0cm 0pt;} #ygrps-yiv-309438111 DIV.ygrps-yiv-309438111Section1 { }

Put your logic within a BPM 
Your progress editor is not setup correctly to initialise global variables used in the write triggers.

Alternatively disable the write trigger on Part for your session.


On 9 Sep 2015, at 17:36, sanfranc415@... [vantage] <vantage@yahoogroups.com> wrote:

 

It looks like this query will work: 



For each Part where ( Part.PartDescription MATCHES "*" + CHR(30) + "*") no-lock : 
DEFINE VARIABLE cNewDesc AS CHARACTER NO-UNDO. 
cNewDesc = replace(Part.PartDescription, "*" + CHR(30) + "*", ""). 
Run lib\UpdateTableBuffer.p(input BUFFER Part:HANDLE, "PartDescription", cNewDesc). 
End. 

Only problem is when I run it, it reports that the shared variable LocalizationManager has not been created yet. 



Stephen Edginton (Beng) | Solutions & Technical Director

Mobile:  +44 7734 858415
DDI:  +44 121 314 1179
Main:  +44 (0) 121 314 1170
Web:  www.dotnetit.co.uk

Dot Net IT Limited, One St Kenelm Court, Steel Park Road, Halesowen, B62 8HD, United Kingdom.

DotNetIT

Epicor Platinum Partner

Epicor Alliance Partner

Okay, so a BPM with a pre-processing update method 
For each Part where ( Part.PartDescription MATCHES "*" + CHR(30) + "*") no-lock : 

and an action with:

DEFINE VARIABLE cNewDesc AS CHARACTER NO-UNDO. 
cNewDesc = replace(Part.PartDescription, "*" + CHR(30) + "*", ""). 
Run lib\UpdateTableBuffer.p(input BUFFER Part:HANDLE, "PartDescription", cNewDesc). 
End. 

find the BPM and run from Progress as a program?

CHR(30) is a Record Separator.  Sounds like some cut and paste job…

 

 

If you could change it directly on your own, this is one way to do it -

 

        strt = R-INDEX((Part.PartDescription),"CHR(30)").

        IF (strt>0) THEN Do:

            pDescNew = REPLACE(Part.PartDescription,"CHR(30)"," ").

           

/*             DISPLAY Part.PartDescription FORMAT "x(50)" */

/*                     pDescNew FORMAT "x(50)"             */

/*                     with 2 col.                         */

 

The rest of the code falls into the “do not try this at home” category.

 

                       

 

From: vantage@yahoogroups.com [mailto:vantage@yahoogroups.com]
Sent: Wednesday, September 09, 2015 11:14 AM
To: vantage@yahoogroups.com
Subject: RE: [Vantage] Re: Crystal Reports crashing on carriage returns.

 

 

Any clues on the UpdateTableBuffer.r syntax to remove the CHR(30) using the procedure editor?  

 

for each part where part.partdescription matches "*" + CHR(30) + "*" :

run lib\UpdateTableBuffer.p(

 


Posted by: sanfranc415@...