Invalid Parameter error after 6.0 upgrade (RB Pro)
Hi,
I upgraded our app to version 6.0 Pro (from 5.0 Pro) and now several of my
reports get Invalid Parameter errors when I try to preview or print them.
When I try to preview, I trace the code in my app (part of a routine to
initialize a custom previewer form}:
ppPreview.Report := MainForm.ppReport;
{ get total number of pages in this report }
ppPreview.LastPage;
PageCount := ppPreview.AbsolutePageNo;
ppPreview.FirstPage;
up until it calls ppPreview.LastPage. On executing that line, it generates
the error. Nothing else in my code has changed, nor have the reports been
changed (they are saved as individual RTM files and loaded at runtime).
Any ideas why this might happen?
Also, one suggestion: It would be great if your newsgroup articles were
also stored in a more "searchable" knowledgebase-type format. With Outlook
Express, I can only search the most recent headers, and only for the subject
line, not the entire message body. If a user posts a message with a subject
like "6.0 Upgrade Problem", my search won't find it if I'm looking for
"Invalid Parameter" in the subjects, even though the original poster may
have had the same problem. A searchable knowledge base would be much easier
to locate specific articles, and may help to reduce duplicate posts. For
example, I always search for newsgroup articles using Google (the former
Deja.com). I never search the usenet using my newsreader for precisely the
same reason. Just my 2 cents...
Thanks,
Vinnie Murdico
I upgraded our app to version 6.0 Pro (from 5.0 Pro) and now several of my
reports get Invalid Parameter errors when I try to preview or print them.
When I try to preview, I trace the code in my app (part of a routine to
initialize a custom previewer form}:
ppPreview.Report := MainForm.ppReport;
{ get total number of pages in this report }
ppPreview.LastPage;
PageCount := ppPreview.AbsolutePageNo;
ppPreview.FirstPage;
up until it calls ppPreview.LastPage. On executing that line, it generates
the error. Nothing else in my code has changed, nor have the reports been
changed (they are saved as individual RTM files and loaded at runtime).
Any ideas why this might happen?
Also, one suggestion: It would be great if your newsgroup articles were
also stored in a more "searchable" knowledgebase-type format. With Outlook
Express, I can only search the most recent headers, and only for the subject
line, not the entire message body. If a user posts a message with a subject
like "6.0 Upgrade Problem", my search won't find it if I'm looking for
"Invalid Parameter" in the subjects, even though the original poster may
have had the same problem. A searchable knowledge base would be much easier
to locate specific articles, and may help to reduce duplicate posts. For
example, I always search for newsgroup articles using Google (the former
Deja.com). I never search the usenet using my newsreader for precisely the
same reason. Just my 2 cents...
Thanks,
Vinnie Murdico
This discussion has been closed.
Comments
Parameter on existing reports after RB Pro 6.0 upgrade from 5.0):
I took one of the reports that had this problem (about 3 out of 8), and
removed the selected Search fields -- no change. Then I removed the
grouping fields -- no change. Then I removed the Sort fields -- it ran.
So I closed the report (without saving), reopened the original version,
duplicated the error again then tried removing just the Sort fields -- it
ran fine.
Finally, I closed the report (without saving), reopened the original
version, duplicated the error again then tried removing the Sort fields and
re-selecting the same fields again for Sort order - it ran fine.
I then tried simply opening the original (bad) report, saving it (as a 6.01
format theoretically), then reopening it and previewing it -- the error
still appeared, so it wasn't just a matter of converting them first.
Something in the sort fields is connected to the problem.
I even compared the "before any changes" SQL code to the "after re-selecting
the sort fields" SQL code, and it was identical, so the SQL does not appear
to have changed.
But it sounds like something does not like the existing internal format of
the Sort fields or something like that since removing and simply reselecting
them resolves the error.
Needless to say, I can't release the product and tell my customers to
reselect all their sort fields, but I thought this info might help in
debugging this issue.
Please let me know as soon as possible if you have any information on this
problem.
Thanks,
Vinnie Murdico
Outlook
subject
I don't know what version of OE you uses, (BTW DM isn't MS) but I am pretty
able to look into the body of all articles in all sections posted from the
beginning.
You really should address such an issue to MS.
I guess the messages are deleted after a couple of days, but this is a
changeable option of OE.
(I recommend the use of a real NG reader).
regards,
Chris Ueberall;
and
can you save your reports in ASCII before beeing converted and after the
recreation of the sorting order, just to see the differences in the
RTM-file.
regards,
Chris Ueberall;
pretty
Hi Chris,
Here's the issue with searching message bodies:
There may indeed be an option in OE to download both headers and message
bodies each time I connect to a news server, although I haven't found it
yet.
But let's say there *was* an option to download subject headers and full
message bodies whenever I connected to a newsgroup. Or, let's say there was
an option to search within message bodies as well as just headers. Even if
these options existed, the news reader would then need to download a
significantly larger amount of info each time I connected to a news server
or attempted a "full message body" search. It would be forced to download
every message - both subject and body - before the request could complete,
even though I may only need the body of one or two messages when all is said
and done.
When I had a cable modem, I would probably have opted for such an option if
it existed. But after relocating, I (like many others) am stuck with 56K
dial-up. So even if such an option existed in OE, I would probably opt for
downloading headers only just to save time at each connection to the server.
Even though most messages are only 1K or 2K, to download 300 messages at a
time would be something like 300K or 400K on average, which at 56K (which as
we know is never really 56K - it's more like 42K or 48K if you're lucky
), would take at least a minute or two - an eternity in internet browsing
time (imagine waiting 60 seconds for the page to load each time you browse a
web page -- ouch!).
My point was not to say that DM was doing something wrong, and I understand
"DM isn't MS" (seemed a bit condescending, and I do understand the distinct
responsibility areas of each company). I honestly just wanted to make a
suggestion. Perhaps I am using the wrong tools, but I do know that sites
like Google (deja.com) are very popular for a reason - I think many web
users do not want to spend the time downloading all messages from all the
newsgroups they subscribe to and save their entire contents on their hard
drives. And a lot of people are using OE, regardless of whether it's suited
to task. Additionally, my experience has been that when I've been at sites
with searchable knowledgebases, I've found them very helpful and quick to
use. It also saves me from having to download every message and also from
having to store hundreds of complete message bodies on my hard drive (for
each of the many newsgroups I subscribe to), when I may only need to read a
dozen messages or so.
I understand that everyone has differing opinions on which tools are good
and bad, how they should be used, and whether issues like this should be
dealt with by the vendor or the customer. And I realize that none of these
opions are "wrong". But my post was just my suggestion and I thought
perhaps DM would appreciate hearing suggestions from customers and consider
them. I just felt like after reading your reply that you were angry that I
had posted such a suggestion, or that you were putting me down for my choice
of tools. I think I would have phrased the response differently -- somthing
like, "Thanks for your suggestion. However, we've found that most of our
users are able to search the newsgroup messages using different newsreaders.
It may simply be that OE does not support searching into message bodies, or
that it contains an option to do so that may not be enabled in your
particular configuration. You may want to check in the MS newsgroups for
more information about such an option." -- as opposed to "I recommend the
use of a real NG reader".
Please understand -- I like DM and their product, and I appreciate the great
work you guys do and the support you offer. I'm sorry if my suggestion was
misinterpreted as hostile or derogatory regarding your company or your web
site.
Sincerely,
Vinnie Murdico
Ok, I've done this and the differences are outlined by the FCOMP output
below. If you would like a complete copy of both before.txt and after.txt,
just let me know if I should attach them to a post or email them to you
directly (I know attachments are usually against newsgroup protocols so I
thought I should ask first).
I also created a small sample app that uses this RTM file and duplicates the
error (and then works after reselecting the sort fields). I can send that
to you guys if that would be helpful in your diagnosis. Again, just let me
know if I should post it here as an attachment or email them someone (it's a
ZIP about 24K).
Thanks,
Vinnie Murdico
=================================================
Comparing files before.txt and after.txt
****** before.txt
PrinterSetup.PaperSize = 1
Template.FileName = 'E:\Source\Delphi\RBBug\Defects By Customer
(before).rtm'
Template.Format = ftASCII
****** after.txt
PrinterSetup.PaperSize = 1
Template.FileName = 'E:\Source\Delphi\RBBug\Defects By Customer
(after).rtm'
Template.Format = ftASCII
******
****** before.txt
object daSQL1: TdaSQL
DatabaseName = 'SWBTRACK'
DatabaseType = dtParadox
DataPipelineName = 'plCustomer_Defects'
****** after.txt
object daSQL1: TdaSQL
DataPipelineName = 'plCustomer_Defects'
******
****** before.txt
' custdef.Defect')
object TdaField
Alias = 'cstdef_Product'
****** after.txt
' custdef.Defect')
object daField1: TdaField
Alias = 'cstdef_Product'
******
****** before.txt
end
object TdaField
Alias = 'cstdef_Release'
****** after.txt
end
object daField2: TdaField
Alias = 'cstdef_Release'
******
****** before.txt
end
object TdaField
Alias = 'cstdef_Program'
****** after.txt
end
object daField3: TdaField
Alias = 'cstdef_Program'
******
****** before.txt
end
object TdaField
Alias = 'cstdef_Defect'
****** after.txt
end
object daField4: TdaField
Alias = 'cstdef_Defect'
******
****** before.txt
end
object TdaField
Alias = 'cstdef_Customer'
****** after.txt
end
object daField5: TdaField
Alias = 'cstdef_Customer'
******
****** before.txt
end
object TdaField
Alias = 'def_Summary'
****** after.txt
end
object daField6: TdaField
Alias = 'def_Summary'
******
****** before.txt
end
object TdaField
ChildType = 2
Alias = 'cstdef_Customer'
DisplayWidth = 0
FieldAlias = 'cstdef_Customer'
FieldLength = 0
FieldName = 'Customer'
TableAlias = 'Customer Defects'
TableName = '"custdef.DB"'
TableSQLAlias = 'custdef'
****** after.txt
end
object daField7: TdaField
ChildType = 2
Alias = 'Customer'
DisplayWidth = 40
FieldAlias = 'Customer'
FieldLength = 40
FieldName = 'Customer'
SQLFieldName = 'Customer'
TableAlias = 'Customer Defects'
TableName = 'custdef.DB'
TableSQLAlias = 'custdef'
******
****** before.txt
end
object TdaField
ChildType = 2
Alias = 'cstdef_Product'
DisplayWidth = 0
FieldAlias = 'cstdef_Product'
FieldLength = 0
FieldName = 'Product'
TableAlias = 'Customer Defects'
TableName = '"custdef.DB"'
TableSQLAlias = 'custdef'
****** after.txt
end
object daField8: TdaField
ChildType = 2
Alias = 'Product'
DisplayWidth = 20
FieldAlias = 'Product'
FieldLength = 20
FieldName = 'Product'
SQLFieldName = 'Product'
TableAlias = 'Customer Defects'
TableName = 'custdef.DB'
TableSQLAlias = 'custdef'
******
****** before.txt
end
object TdaField
ChildType = 2
Alias = 'cstdef_Release'
DisplayWidth = 0
FieldAlias = 'cstdef_Release'
FieldLength = 0
FieldName = 'Release'
TableAlias = 'Customer Defects'
TableName = '"custdef.DB"'
TableSQLAlias = 'custdef'
****** after.txt
end
object daField9: TdaField
ChildType = 2
Alias = 'Release'
DisplayWidth = 20
FieldAlias = 'Release'
FieldLength = 20
FieldName = 'Release'
SQLFieldName = 'Release'
TableAlias = 'Customer Defects'
TableName = 'custdef.DB'
TableSQLAlias = 'custdef'
******
****** before.txt
end
object TdaField
ChildType = 2
Alias = 'cstdef_Program'
DisplayWidth = 0
FieldAlias = 'cstdef_Program'
FieldLength = 0
FieldName = 'Program'
TableAlias = 'Customer Defects'
TableName = '"custdef.DB"'
TableSQLAlias = 'custdef'
****** after.txt
end
object daField10: TdaField
ChildType = 2
Alias = 'Program'
DisplayWidth = 60
FieldAlias = 'Program'
FieldLength = 60
FieldName = 'Program'
SQLFieldName = 'Program'
TableAlias = 'Customer Defects'
TableName = 'custdef.DB'
TableSQLAlias = 'custdef'
******
****** before.txt
end
object TdaField
ChildType = 2
Alias = 'cstdef_Defect'
DataType = dtDouble
DisplayWidth = 0
FieldAlias = 'cstdef_Defect'
FieldLength = 0
****** after.txt
end
object daField11: TdaField
ChildType = 2
Alias = 'Defect'
DataType = dtDouble
DisplayWidth = 10
FieldAlias = 'Defect'
FieldLength = 0
******
****** before.txt
FieldName = 'Defect'
TableAlias = 'Customer Defects'
TableName = '"custdef.DB"'
TableSQLAlias = 'custdef'
****** after.txt
FieldName = 'Defect'
SQLFieldName = 'Defect'
TableAlias = 'Customer Defects'
TableName = 'custdef.DB'
TableSQLAlias = 'custdef'
******
****** before.txt
end
object TdaTable
ChildType = 5
****** after.txt
end
object daTable1: TdaTable
ChildType = 5
******
****** before.txt
end
object TdaTable
ChildType = 5
****** after.txt
end
object daTable2: TdaTable
ChildType = 5
******
****** before.txt
TableName = 'Defect.DB'
object TdaTableJoin
ChildType = 6
object TdaField
ChildType = 3
****** after.txt
TableName = 'Defect.DB'
object daTableJoin1: TdaTableJoin
ChildType = 6
object daField13: TdaField
ChildType = 3
******
****** before.txt
end
object TdaField
ChildType = 4
****** after.txt
end
object daField12: TdaField
ChildType = 4
******
****** before.txt
end
object TdaTableJoin
ChildType = 6
object TdaField
ChildType = 3
****** after.txt
end
object daTableJoin2: TdaTableJoin
ChildType = 6
object daField15: TdaField
ChildType = 3
******
****** before.txt
end
object TdaField
ChildType = 4
****** after.txt
end
object daField14: TdaField
ChildType = 4
******
****** before.txt
end
object TdaTableJoin
ChildType = 6
object TdaField
ChildType = 3
****** after.txt
end
object daTableJoin3: TdaTableJoin
ChildType = 6
object daField17: TdaField
ChildType = 3
******
****** before.txt
end
object TdaField
ChildType = 4
****** after.txt
end
object daField16: TdaField
ChildType = 4
******
****** before.txt
end
object TdaTableJoin
ChildType = 6
object TdaField
ChildType = 3
****** after.txt
end
object daTableJoin4: TdaTableJoin
ChildType = 6
object daField19: TdaField
ChildType = 3
******
****** before.txt
end
object TdaField
ChildType = 4
****** after.txt
end
object daField18: TdaField
ChildType = 4
******
can you send the recreation to support@digital-metaphors.com?
Cheers,
Chris Ueberall;
Ok, Chris -- an email with a ZIP file has been sent to the address above. I
also included a copy of the explanation of the problem/symptoms I noticed (I
wasn't sure who would be looking at it or if they would know the history of
the issue). I didn't include the compiled EXE of the project because it was
over 2 MB, so I just included the project, report and database files.
Thanks!
Vinnie Murdico