{"id":195,"date":"2007-08-01T05:28:00","date_gmt":"2007-08-01T05:28:00","guid":{"rendered":"\/lisa\/post\/2007\/08\/01\/Reporting-Convergences-Part-One-in-Many.aspx"},"modified":"2021-08-30T12:55:13","modified_gmt":"2021-08-30T19:55:13","slug":"reporting-convergences-part-one-in-many","status":"publish","type":"post","link":"https:\/\/spacefold.com\/lisa\/2007\/08\/01\/reporting-convergences-part-one-in-many\/","title":{"rendered":"Reporting Convergences: Part One in Many"},"content":{"rendered":"<p>The <a title=\"October 2006 - VFP Letter from the Editor\" href=\"http:\/\/msdn2.microsoft.com\/en-us\/vfoxpro\/bb190270\/\" target=\"_blank\" rel=\"noopener\">October 2006 VFP Sedna\/SP2\u00a0Preview<\/a> included the first Reporting System enhancements that folks could play with.\u00a0 While <a title=\"SednaReportingFeatures.doc\" href=\"http:\/\/www.microsoft.com\/downloads\/details.aspx?FamilyId=2E8F1DEB-2972-4CEC-A7CA-E0991362A4FC&amp;displaylang=en\">our spec<\/a> was reasonably clear and complete and had been available for some time, there were no docs. (As of this writing, there still isn&#8217;t very much.)\u00a0 C and I had demo&#8217;d some stuff at the <a title=\"Advisor events\" href=\"http:\/\/advisor.com\/adv\/AdvisorEvents\">Advisor Devcon<\/a> a few months earlier, and had arranged with Martin Haluza and Igor Vit to provide a Flash demonstration for the <a href=\"http:\/\/www.daquas.cz\/\">Prague conference<\/a>, highlighting the new features.<\/p>\n<p>Based on Igor&#8217;s advice and feedback, our Flash presentation incorporated\u00a0C&#8217;s Devcon demonstration of how you create a custom reporting control, which used the example of a colored bar rendered directly to the report, as well as my\u00a0Devcon demo of using dynamic sizing\u00a0with a rectangle to display a visual progress bar metric element.\u00a0Both examples were relatively trivial, but C&#8217;s in particular gave a good walkthrough of how you perform some critical reporting-extension tasks:<\/p>\n<ul class=\"content\">\n<li>how to render directly to the report surface at runtime;<\/li>\n<li>how you use that control at design-time (give it instructions, store to the FRX); and<\/li>\n<li>how you incorporate the control into the extensible ReportBuilder interface so other users can do it with ease and grace.<\/li>\n<\/ul>\n<p>We posted the Flash\u00a0file to coincide with the October 2006 CTP (you can see it here:\u00a0<a href=\"\/sp2demo\/\">SP2Demo<\/a>).\u00a0\u00a0Having worked out the primacy of these three principles, I set about\u00a0incorporating them into\u00a0my <a href=\"http:\/\/devcon.dfpug.de\/\">Frankfurt Devcon<\/a>\u00a0 presentation that year.<\/p>\n<p>While working on what to say and how to say it&#8230; I think I just Google&#8217;d a GDI+ command or something when I came across\u00a0<a href=\"http:\/\/msdn.microsoft.com\/msdnmag\/issues\/06\/10\/SQLServer2005\/default\/\">an MSDN article<\/a> by <a href=\"http:\/\/www.prologika.com\/\">Teo Lachev<\/a>\u00a0titled <em>Jazz Up Your Data Using Custom Report Items In SQL Server Reporting Services<\/em>, which was\u00a0posted that same month.<\/p>\n<p>As you&#8217;ll easily see,\u00a0Teo&#8217;s article\u00a0covers pretty much the same ground, except that the example\u00a0for the custom control is also a metric indicator (a progress bar). It makes a heck of a lot of sense\u00a0to demonstrate\u00a0both techniques in one example, in both reporting environments &#8212;\u00a0even though VFP\u00a0had another facility for changing the size of a rectangle to create a rectangle, and that Reporting Services\u00a0almost certainly\u00a0does too (see the <a href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/Aa964128.moressrschartsfig21(en-US,SQL.90).gif\">In-Line Table Chart example<\/a>\u00a0in <a href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/aa964128.aspx#moressrscharts_topic4\">this other MSDN article<\/a>).<\/p>\n<p>Teo&#8217;s\u00a0example and his walkthrough\u00a0drove home\u00a0 the essential report-extension tasks I&#8217;ve listed above, and used remarkably similar techniques to accomplish them &#8212; including pretty much the same exact lines of GDI+ rendering code, a similar method of describing the extension in XML within the report definition, and so on.<\/p>\n<p><strong>Wow!\u00a0<\/strong><\/p>\n<p>So I pointed VFP folks at Teo&#8217;s article, both at Frankfurt and later at <a href=\"http:\/\/www.ozfox.com.au\/default.htm\">OzFox<\/a>.\u00a0 It was a great\u00a0way of emphasizing just how standard our in-VFP approach to reporting extensions was,\u00a0how these were the problems you needed to solve and a likely way of solving them no matter where and how you worked, as a way of winding up that section of the presentation.\u00a0 And I thought it ended there, just one in a long string of interesting development convergences between Reporting Services and VFP Reporting that I expect to discuss from time to time in this blog.<\/p>\n<p>But it didn&#8217;t.\u00a0 About a month after OzFox,\u00a0<a href=\"http:\/\/blogs.spipp.net\/blogs\/kaisa\/\">Kaisa M. Lindahl Lervik<\/a>\u00a0posted a question about how one might\u00a0fulfill a certain requirement\u00a0in SQL Server Reporting Services, and I thought &#8220;you could write a custom control to do that!&#8221;. So I picked up Teo&#8217;s article again&#8230; and I wrote one.\u00a0 I figured I ought to prove the point of the standard nature of the task between the two environments by example and, in most ways, I accomplished that goal about one day into the effort.\u00a0 And I thought it ended there.<\/p>\n<p>But it didn&#8217;t. I ended up writing a more full-fledged SQL Server Reporting Services developer&#8217;s tool, in which the custom control plays a more-or-less supporting role.\u00a0 I&#8217;m still polishing my proto-docs, but will post them and some of the stuff I learned in writing this thing pretty soon.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The October 2006 VFP Sedna\/SP2\u00a0Preview included the first Reporting System enhancements that folks could play with.\u00a0 While our spec was reasonably clear and complete and had been available for some time, there were no docs. (As of this writing, there still isn&#8217;t very much.)\u00a0 C and I had demo&#8217;d some stuff at the Advisor Devcon<a class=\"more-link\" href=\"https:\/\/spacefold.com\/lisa\/2007\/08\/01\/reporting-convergences-part-one-in-many\/\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,6,9],"tags":[],"class_list":["post-195","post","type-post","status-publish","format-standard","hentry","category-reporting","category-sql-server","category-visual-foxpro"],"_links":{"self":[{"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/posts\/195","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/comments?post=195"}],"version-history":[{"count":3,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/posts\/195\/revisions"}],"predecessor-version":[{"id":384,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/posts\/195\/revisions\/384"}],"wp:attachment":[{"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/media?parent=195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/categories?post=195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/tags?post=195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}