{"id":103,"date":"2009-07-26T18:12:00","date_gmt":"2009-07-26T18:12:00","guid":{"rendered":"\/lisa\/post\/2009\/07\/26\/YAPS-about-Dynamic-Layouts.aspx"},"modified":"2021-10-12T08:50:04","modified_gmt":"2021-10-12T15:50:04","slug":"yaps-about-dynamic-layouts","status":"publish","type":"post","link":"https:\/\/spacefold.com\/lisa\/2009\/07\/26\/yaps-about-dynamic-layouts\/","title":{"rendered":"YAPS about Dynamic Layouts"},"content":{"rendered":"<p align=\"left\">Ehud Kafri wrote on <a title=\"SQL Server forum thread about adding a column to an RDLC\" href=\"http:\/\/social.msdn.microsoft.com\/Forums\/en-US\/vsreportcontrols\/thread\/8cc4f0d5-52b8-482a-bb30-062f91d52626\/\" target=\"_blank\" rel=\"noopener\">a\u00a0moribund thread in the SQL Server RS \u00a0forum<\/a>\u00a0to ask:<\/p>\n<blockquote><p>Hi Lisa,<br \/>\nI have a simelar problem, I have a list item that recive a collection of objects that were made specificly for this report.<br \/>\nthe problem is i need the size and location of the textboxs to be decided according to the parameters defind on each object in the collection.<br \/>\nex&#8217; : i have: \u00a0 \u00a0 String ValueForDisplay<br \/>\nint Position \u00a0 \/\/ enum value like : Top; NewRow; SameRow and so on<br \/>\nDouble Width<br \/>\nDouble Hieght<br \/>\nnow what I could not figure out is how to, in run time, set these values.<br \/>\nI prefer not to dynamicly create a new rdlc file on each run but so far that is the only way I have found to do this.<br \/>\nI&#8217;m using VS 2005, C#, .Net 2.0<br \/>\nThanks<\/p><\/blockquote>\n<p>After some back-and-forth, some things became clear.<\/p>\n<p>The problem Ehud is facing is this: some things can be dynamically set on a report object, such as font and color, and some cannot.\u00a0 Top and Left, Width and Height,\u00a0are among the things that cannot be set dynamically for each instance of each object during a report run.<\/p>\n<p>Why not, and what can we do about it?<\/p>\n<h3>First, understand why not<\/h3>\n<p>Think about the ramifications of setting these particular attributes on the fly, on the report layout as a whole.\u00a0 When a textbox moves to a new position, for example lower on the page,\u00a0what should happen to the other elements &#8220;below&#8221; it?<\/p>\n<p>You could answer &#8220;I&#8217;m going to set the top and left for all of them, too, so what&#8217;s the problem?&#8221; Maybe you are, and maybe you aren&#8217;t, I think Ehud is not doing that, but if you are, I don&#8217;t really see the point of using the RDL to render your report any more.\u00a0 You might as well call the rendering engine of your choice (be it PDF or whatever) directly, or just write your own, rendering items within a canvas of the appropriate page layout size however you want to.<\/p>\n<p>Part of the point of the RDL data regions (whether we&#8217;re talking table, matrix, tablix, or list) is to allow the report engine to iterate through repeating items and figure out the positioning and the pagination itself.\u00a0 To a certain degree, you can issue runtime instructions to it that will force dynamic behavior, for example, you can use &#8220;Can shrink&#8221; and &#8220;Can grow&#8221; so that, should the content item have different content on each row.\u00a0 When you do this, if there is also content <strong>below<\/strong> the item that&#8217;s shrinking and growing, this other content will move appropriately too.<\/p>\n<p class=\"NB\">I&#8217;ll have more to say on how you can use those properties to your advantage at some other point, because I can already tell I&#8217;m not going to get to the end of this topic in one &#8220;go&#8221;. I have mentioned it in other contexts, such as <a href=\"\/lisa\/2007\/08\/09\/Reporting-Convergences-Chapter-Multi-Detail-Bands-SQL-Reporting-Services-Style\/\">building a strange report to support RDLDocumenter<\/a>, in the past.<\/p>\n<p>This is the magic of any data-handling rendering construct, whether it&#8217;s a repeater in ASP.NET, an HTML table, or a data-region in an RDL.\u00a0 When you seek to interfere with this behavior &#8212; by setting the top, left, height, and width values yourself &#8212; you&#8217;re really asking for trouble.\u00a0\u00a0 You&#8217;re not giving the RDL a chance to do what it was designed to do.<\/p>\n<h3>Or, we could talk some more<\/h3>\n<p>That being said&#8230;\u00a0 Ehud&#8217;s situation is a little different.\u00a0 He&#8217;s not trying to re-do the dimensions and positions of every textbox in his form.\u00a0 He&#8217;s trying to make one report serve for many different customers with some variation &#8212; a classic &#8220;corporate stationery&#8221; problem.\u00a0 Some people like their header to the left of their corporate logo, some people want it to the right.\u00a0 Some people want the address of the recipient in a different place than others, because they have different window envelopes.<\/p>\n<p>Ehud&#8217;s case is a little more business-domain specific than that, but, when you put it in the proverbial nutshell, it&#8217;s a situation we have all experienced.\u00a0 So, how do we crack this proverbial nut?<\/p>\n<p>Ehud uses an object data source, which I won&#8217;t attempt to reproduce here. I don&#8217;t have a lot of experience with that type of thing,\u00a0but I imagine that each row of his object dataset represents one instance of an object, with various attributes of various items to be displayed &#8212; such as font and position information &#8212; available for that row.<\/p>\n<p>For my attempt to reproduce his situation, I&#8217;m going to torture some sales data to give me some random results that represent instructions for one textbox and one image, such as you might have in &#8220;corporate stationery&#8221;.<\/p>\n<p>&nbsp;<\/p>\n<p class=\"code\">SELECT<span style=\"font-size: small;\"><br \/>\n<\/span><span style=\"color: #ff00ff; font-size: small;\"><span style=\"color: #ff00ff; font-size: small;\">\u00a0\u00a0 DAY<\/span><\/span> <span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">(<\/span><\/span><span style=\"font-size: small;\">Requested_Ship <\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">)<\/span><\/span> <span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">*<\/span><\/span><span style=\"font-size: small;\"> 6 <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">As<\/span><\/span><span style=\"font-size: small;\"> [Text1Left]<\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">,<br \/>\n(<\/span><\/span><span style=\"color: #ff00ff; font-size: small;\"><span style=\"color: #ff00ff; font-size: small;\">Month<\/span><\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">(<\/span><\/span><span style=\"font-size: small;\">Requested_Ship<\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">)<\/span><\/span> <span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">%<\/span><\/span><span style=\"font-size: small;\">6 <\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">)<\/span><\/span> <span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">*<\/span><\/span><span style=\"font-size: small;\"> 10 <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">AS<\/span><\/span><span style=\"font-size: small;\"> [Text1Top] <\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">,<br \/>\n<\/span><\/span><span style=\"font-size: small;\">\u00a0\u00a0\u00a0ID <\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">+<\/span><\/span> <span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">CHAR<\/span><\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">(<\/span><\/span><span style=\"font-size: small;\">13<\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">)+<\/span><\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">CHAR<\/span><\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">(<\/span><\/span><span style=\"font-size: small;\">10<\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">)<\/span><\/span> <span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">+<\/span><\/span><span style=\"font-size: small;\"> Revenue_Type <\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">+<\/span><\/span> <span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">CHAR<\/span><\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">(<\/span><\/span><span style=\"font-size: small;\">13<\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">)+<\/span><\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">CHAR<\/span><\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">(<\/span><\/span><span style=\"font-size: small;\">10<\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">)<\/span><\/span> <span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">+<\/span><\/span><span style=\"font-size: small;\"> Juris <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">AS<\/span><\/span><span style=\"font-size: small;\"> [Text1Content]<\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">,<\/span><\/span><span style=\"font-size: small;\"><br \/>\n<\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">\u00a0\u00a0 CASE<\/span><\/span><span style=\"font-size: small;\"><br \/>\n<\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">WHEN<\/span><\/span><span style=\"font-size: small;\">\u00a0ID <\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">LIKE<\/span><\/span> <span style=\"color: #ff0000; font-size: small;\"><span style=\"color: #ff0000; font-size: small;\">&#8216;%w%&#8217;<\/span><\/span> <span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">THEN<\/span><\/span> <span style=\"color: #ff0000; font-size: small;\"><span style=\"color: #ff0000; font-size: small;\">&#8216;Red&#8217;<\/span><\/span><span style=\"font-size: small;\"><br \/>\n<\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">\u00a0\u00a0\u00a0\u00a0\u00a0 WHEN<\/span><\/span><span style=\"font-size: small;\">\u00a0ID <\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">LIKE<\/span><\/span> <span style=\"color: #ff0000; font-size: small;\"><span style=\"color: #ff0000; font-size: small;\">&#8216;%5%&#8217;<\/span><\/span> <span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">THEN<\/span><\/span> <span style=\"color: #ff0000; font-size: small;\"><span style=\"color: #ff0000; font-size: small;\">&#8216;Green&#8217;<\/span><\/span><span style=\"font-size: small;\"><br \/>\n<\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">ELSE<\/span><\/span> <span style=\"color: #ff0000; font-size: small;\"><span style=\"color: #ff0000; font-size: small;\">&#8216;Blue&#8217;<\/span><\/span> <span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">END<\/span><\/span> <span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">AS<\/span><\/span><span style=\"font-size: small;\"> [Text1FontColor]<\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">,<br \/>\n<\/span><\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">\u00a0\u00a0 CASE<\/span><\/span><span style=\"font-size: small;\"><br \/>\n<\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">WHEN<\/span><\/span><span style=\"font-size: small;\"> Sales_No <\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">LIKE<\/span><\/span> <span style=\"color: #ff0000; font-size: small;\"><span style=\"color: #ff0000; font-size: small;\">&#8216;%3%&#8217;<\/span><\/span> <span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">THEN<\/span><\/span> <span style=\"color: #ff0000; font-size: small;\"><span style=\"color: #ff0000; font-size: small;\">&#8217;10&#8217;<\/span><\/span><span style=\"font-size: small;\"><br \/>\n<\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">ELSE<\/span><\/span> <span style=\"color: #ff0000; font-size: small;\"><span style=\"color: #ff0000; font-size: small;\">&#8217;16&#8217;<\/span><\/span> <span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">END<\/span><\/span> <span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">AS<\/span><\/span><span style=\"font-size: small;\"> [Text1FontSize]<\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">,<br \/>\n<\/span><\/span><span style=\"color: #ff00ff; font-size: small;\"><span style=\"color: #ff00ff; font-size: small;\">\u00a0\u00a0 CAST<\/span><\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">(<\/span><\/span> <span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">RIGHT(<\/span><\/span><span style=\"font-size: small;\">Sales_No<\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">,<\/span><\/span><span style=\"font-size: small;\">2<\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">)<\/span><\/span> <span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">AS<\/span><\/span> <span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">INTEGER<\/span><\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">)<\/span><\/span> <span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">*<\/span><\/span><span style=\"font-size: small;\"> 3 <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">AS<\/span><\/span><span style=\"font-size: small;\"> [Image1Left] <\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">,<br \/>\n(<\/span><\/span><span style=\"color: #ff00ff; font-size: small;\"><span style=\"color: #ff00ff; font-size: small;\">DAY<\/span><\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">(<\/span><\/span><span style=\"font-size: small;\">Released_To_Mfg<\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">)<\/span><\/span> <span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">%<\/span><\/span><span style=\"font-size: small;\"> 20<\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">)<\/span><\/span> <span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">*<\/span><\/span><span style=\"font-size: small;\"> 10 <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">AS<\/span><\/span><span style=\"font-size: small;\"> [Image1Top]<\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">,<br \/>\n<\/span><\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">\u00a0\u00a0 CASE<\/span><\/span><span style=\"font-size: small;\"><br \/>\n<\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">WHEN<\/span><\/span> <span style=\"color: #ff00ff; font-size: small;\"><span style=\"color: #ff00ff; font-size: small;\">DAY<\/span><\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">(<\/span><\/span><span style=\"font-size: small;\">Requested_Ship<\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">)<\/span><\/span> <span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">%<\/span><\/span><span style=\"font-size: small;\"> 2 <\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">=<\/span><\/span><span style=\"font-size: small;\"> 0 <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">THEN<\/span><\/span> <span style=\"color: #ff0000; font-size: small;\"><span style=\"color: #ff0000; font-size: small;\">&#8216;gear&#8217;<\/span><\/span><span style=\"font-size: small;\"><br \/>\n<\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">ELSE<\/span><\/span> <span style=\"color: #ff0000; font-size: small;\"><span style=\"color: #ff0000; font-size: small;\">&#8216;leaf&#8217;<\/span><\/span> <span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">END<\/span><\/span> <span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">AS<\/span><\/span><span style=\"font-size: small;\"> [Image1Content]<\/span><span style=\"color: #808080; font-size: small;\"><span style=\"color: #808080; font-size: small;\">,<\/span><\/span><span style=\"font-size: small;\"><br \/>\n25 <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">AS<\/span><\/span><span style=\"font-size: small;\"> [Image1Width]<br \/>\n<\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">FROM<\/span><\/span><span style=\"font-size: small;\"> OrderHeader\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>The resulting (silly) data looks like this:<\/p>\n<table style=\"width: 327pt; border-collapse: collapse;\" border=\"0\" width=\"432\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr style=\"height: 33.75pt;\">\n<td class=\"xl69\" style=\"border-bottom: #4f81bd 1pt solid; border-left: #4f81bd 0.5pt solid; width: 38pt; font-family: Calibri; background: #1f497d; height: 33.75pt; color: white; font-size: 8pt; border-top: #4f81bd 0.5pt solid; font-weight: bold; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\" width=\"50\" height=\"45\">\n<p align=\"center\">Text1 Left<\/p>\n<\/td>\n<td class=\"xl69\" style=\"border-bottom: #4f81bd 1pt solid; border-left: #f0f0f0; width: 32pt; font-family: Calibri; background: #1f497d; color: white; font-size: 8pt; border-top: #4f81bd 0.5pt solid; font-weight: bold; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\" width=\"42\">\n<p align=\"center\">Text1 Top<\/p>\n<\/td>\n<td class=\"xl70\" style=\"border-bottom: #4f81bd 1pt solid; border-left: #f0f0f0; width: 49pt; font-family: Calibri; background: #1f497d; color: white; font-size: 8pt; border-top: #4f81bd 0.5pt solid; font-weight: bold; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\" width=\"65\">\n<p align=\"center\">Text1 Content<\/p>\n<\/td>\n<td class=\"xl69\" style=\"border-bottom: #4f81bd 1pt solid; border-left: #f0f0f0; width: 35pt; font-family: Calibri; background: #1f497d; color: white; font-size: 8pt; border-top: #4f81bd 0.5pt solid; font-weight: bold; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\" width=\"46\">\n<p align=\"center\">Text1 Font Color<\/p>\n<\/td>\n<td class=\"xl69\" style=\"border-bottom: #4f81bd 1pt solid; border-left: #f0f0f0; width: 32pt; font-family: Calibri; background: #1f497d; color: white; font-size: 8pt; border-top: #4f81bd 0.5pt solid; font-weight: bold; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\" width=\"42\">\n<p align=\"center\">Text1 Font Size<\/p>\n<\/td>\n<td class=\"xl69\" style=\"border-bottom: #4f81bd 1pt solid; border-left: #f0f0f0; width: 32pt; font-family: Calibri; background: #1f497d; color: white; font-size: 8pt; border-top: #4f81bd 0.5pt solid; font-weight: bold; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\" width=\"42\">\n<p align=\"center\">Image1 Left<\/p>\n<\/td>\n<td class=\"xl69\" style=\"border-bottom: #4f81bd 1pt solid; border-left: #f0f0f0; width: 35pt; font-family: Calibri; background: #1f497d; color: white; font-size: 8pt; border-top: #4f81bd 0.5pt solid; font-weight: bold; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\" width=\"47\">\n<p align=\"center\">Image1 Top<\/p>\n<\/td>\n<td class=\"xl69\" style=\"border-bottom: #4f81bd 1pt solid; border-left: #f0f0f0; width: 37pt; font-family: Calibri; background: #1f497d; color: white; font-size: 8pt; border-top: #4f81bd 0.5pt solid; font-weight: bold; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\" width=\"49\">\n<p align=\"center\">Image1 Content<\/p>\n<\/td>\n<td class=\"xl69\" style=\"border-bottom: #4f81bd 1pt solid; border-left: #f0f0f0; width: 37pt; font-family: Calibri; background: #1f497d; color: white; font-size: 8pt; border-top: #4f81bd 0.5pt solid; font-weight: bold; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\" width=\"49\">\n<p align=\"center\">Image1 Width<\/p>\n<\/td>\n<\/tr>\n<tr style=\"height: 15pt;\">\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #4f81bd 0.5pt solid; font-family: Calibri; background: #dbe5f1; height: 15pt; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\" height=\"20\">\n<p align=\"center\">120<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">0<\/p>\n<\/td>\n<td class=\"xl68\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">1-63ABO\u00a0 Sales\u00a0 ARGE<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">Blue<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">10<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">132<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">30<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">gear<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">25<\/p>\n<\/td>\n<\/tr>\n<tr style=\"height: 15pt;\">\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #4f81bd 0.5pt solid; background-color: transparent; font-family: Calibri; height: 15pt; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\" height=\"20\">\n<p align=\"center\">126<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">10<\/p>\n<\/td>\n<td class=\"xl68\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">1-714CI\u00a0 Loan\u00a0 NVDA<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">Blue<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">10<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">183<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">30<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">leaf<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">25<\/p>\n<\/td>\n<\/tr>\n<tr style=\"height: 15pt;\">\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #4f81bd 0.5pt solid; font-family: Calibri; background: #dbe5f1; height: 15pt; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\" height=\"20\">\n<p align=\"center\">60<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">0<\/p>\n<\/td>\n<td class=\"xl68\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">1-63D3L\u00a0 Conversion<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">Blue<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">10<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">123<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">30<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">gear<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">25<\/p>\n<\/td>\n<\/tr>\n<tr style=\"height: 15pt;\">\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #4f81bd 0.5pt solid; background-color: transparent; font-family: Calibri; height: 15pt; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\" height=\"20\">\n<p align=\"center\">36<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">0<\/p>\n<\/td>\n<td class=\"xl68\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">1-63D59\u00a0 Conversion<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">Green<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">10<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">3<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">90<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">gear<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">25<\/p>\n<\/td>\n<\/tr>\n<tr style=\"height: 15pt;\">\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #4f81bd 0.5pt solid; font-family: Calibri; background: #dbe5f1; height: 15pt; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\" height=\"20\">\n<p align=\"center\">42<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">0<\/p>\n<\/td>\n<td class=\"xl68\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">1-63D6X\u00a0 Participation<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">Blue<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">10<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">183<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">140<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">leaf<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">25<\/p>\n<\/td>\n<\/tr>\n<tr style=\"height: 15pt;\">\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #4f81bd 0.5pt solid; background-color: transparent; font-family: Calibri; height: 15pt; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\" height=\"20\">\n<p align=\"center\">168<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">30<\/p>\n<\/td>\n<td class=\"xl68\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">1-KMHWI\u00a0 Sales\u00a0 MSST<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">Red<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">10<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">213<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">20<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">gear<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; background-color: transparent; font-family: Calibri; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">25<\/p>\n<\/td>\n<\/tr>\n<tr style=\"height: 15pt;\">\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #4f81bd 0.5pt solid; font-family: Calibri; background: #dbe5f1; height: 15pt; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\" height=\"20\">\n<p align=\"center\">120<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">0<\/p>\n<\/td>\n<td class=\"xl68\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">1-644TS\u00a0 Loan\u00a0 NVDA<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">Blue<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">16<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">228<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">90<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">gear<\/p>\n<\/td>\n<td class=\"xl67\" style=\"border-bottom: #4f81bd 0.5pt solid; border-left: #f0f0f0; font-family: Calibri; background: #dbe5f1; color: black; font-size: 8pt; border-top: #f0f0f0; font-weight: 400; border-right: #4f81bd 0.5pt solid; text-decoration: none; text-underline-style: none; text-line-through: none;\">\n<p align=\"center\">25<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>To create the right conditions for applying the above values, we&#8217;ll follow these principles:<\/p>\n<ol>\n<li>Determine the lowest values that top and left are allowed to have for each movable report item.<\/li>\n<li>Create a suitable layout control (in this case, one image and one textbox) for each item at that position.<\/li>\n<li>Consider that top\/left as 0,0, and the &#8220;real&#8221; top left as a pair of offsets for that item.<\/li>\n<li>Similarly, determine the highest values that width and height are allowed to have for each item.\u00a0 Make those values the actual width and height for the item.<\/li>\n<\/ol>\n<p><em>Don&#8217;t worry that this strategy may overlay various layout controls on top of each other.\u00a0<\/em><\/p>\n<p>In my example, I&#8217;ve created a list in the layout (because that&#8217;s what Ehud is using).\u00a0 You can see it as a red border in the screenshot of the Report Designer below.\u00a0 I&#8217;ve created an image control and a text box that each uses almost the entire space of the list; that is, each item is allowed to be anywhere in the list.<\/p>\n<p>I&#8217;ve staggered their positions slightly, and added a black rectangle inside the list that contains both the image and the text box, for the screenshots; otherwise you would not be able to see both controls at all; they could occupy exactly the same space in the layout if you want. Add any other, non-movable, controls wherever they are supposed to be, overlaying them on these &#8220;max sized&#8221; items as needed.<\/p>\n<p><img decoding=\"async\" src=\"\/lisa\/wp-non\/migrated\/2009\/7\/DynamicLayout1.png\" alt=\"\" \/><\/p>\n<p class=\"NB\">If Ehud wanted to use the RS Excel output, we couldn&#8217;t pull this trick; overlaid objects are murder in the standard RS Excel. Of course you can use XSLT to fix that, as <a title=\"one of LSN's posts on RS, XSLT, and Excel\" href=\"\/lisa\/2009\/02\/07\/YAPS-Random-acts-of-kindness-regarding-Reports-Excel-XSLT-and-you\/\">we have done in the past<\/a>. For PDF and HTML output, as well as image file exports, this will work fine.<\/p>\n<h3>Now comes the cute trick<\/h3>\n<p>My painting teacher used to say &#8220;draw the negative space&#8221;.\u00a0 And that&#8217;s what we have to do here.<\/p>\n<p>We can&#8217;t adjust the positional and size attributes using expressions, but we can tell the RDL to reserve space in the layout, where the layout controls <em>may<\/em> be rendered.\u00a0 That&#8217;s what we&#8217;ve done so far.<\/p>\n<p>Now all we have to do is subtract the part of this reserved space in which we don&#8217;t want to render our content, using Padding properties, which we can, indeed, supply as expressions.<\/p>\n<ul>\n<li>For our textbox, Left Padding will be this expression: <strong>= CSTR(Fields!Text1Left.Value)\u00a0 &amp; &#8220;pt&#8221;<\/strong> and for our image, Left Padding will be <strong>= CSTR(Fields!Image1Left.Value) &amp; &#8220;pt&#8221;<\/strong>.<\/li>\n<li>Obviously, the textbox&#8217;s Top Padding is <strong>=CSTR(Fields!Text1Top.Value)\u00a0&amp; &#8220;pt&#8221;<\/strong> and the image&#8217;s is <strong>=CSTR(Fields!Image1Top.Value) &amp; &#8220;pt&#8221;<\/strong>\u00a0.<\/li>\n<li>Note that you may not need the CSTR conversion but I like to put it in.<\/li>\n<li>Width and Height can be handled, similarly, using Right and Bottom Padding. For our example image, I&#8217;ve chosen the size characteristic <strong>FitProportional<\/strong>, because I&#8217;ve chosen two different images with very different aspect ratios.\u00a0\u00a0I used an expression, <strong>= CSTR(300-(Fields!Image1Left.Value +Fields!Image1Width.Value)) + &#8220;pt&#8221;<\/strong>, as Right Padding in this case, where 300 is the max width of the image control in the layout.<br \/>\nIn this expression,\u00a0I&#8217;m subtracting the actual left value and the expected width of the image from the full possible width of the image.<br \/>\nWhat remains is what I want to take away on the right side.<\/li>\n<\/ul>\n<p>Both the image and the textbox also use a &#8220;content&#8221; expression derived from a field, and the textbox uses font and color expressions derived from fields as well.\u00a0 This is garden-variety stuff, but I&#8217;ve done it to show how (I think) Ehud is using object attributes already.<\/p>\n<p>Here&#8217;s the result (showing in a PDF thumbnail view:<\/p>\n<p><img decoding=\"async\" src=\"\/lisa\/wp-non\/migrated\/2009\/7\/DynamicPDFResult.png\" alt=\"\" \/><\/p>\n<h3>Is that all she wrote?<\/h3>\n<p>That&#8217;s enough for now.\u00a0 Is it the right way to solve every dynamic layout problem?\u00a0 Definitely not.<\/p>\n<p>Instead of thinking about padding and negative space, you can try an approach that I like to call &#8220;the report as a piece of graph paper&#8221;.\u00a0 The layout looks something like this:<\/p>\n<p><img decoding=\"async\" src=\"\/lisa\/wp-non\/migrated\/2009\/7\/DynamicGraphPaper.png\" alt=\"\" \/><\/p>\n<p>As you can probably tell, it works by dividing up the whole area into blocks.\u00a0 Then each block has a UDF that goes to work figuring out if any of the current report instance&#8217;s contents should start there.\u00a0\u00a0 (The arguments for the UDF in this example are row, column).<\/p>\n<p>All the textboxes start at a different spot, but they can all end at the same &#8220;right edge&#8221;, if you want, so you can combine this approach with using right padding to handle the textboxes&#8217; actual width. \u00a0You use &#8220;Can Grow&#8221; on the textboxes to allow them stretch vertically, if the textboxes are inside a row of a table.\u00a0 This will push down the next row.\u00a0 In general, you get a lot of flexibility using a table-oriented layout even though your report seems superficially to be a free-form label or list-style layout.<\/p>\n<p>In Ehud&#8217;s case I think there are more possibilities.\u00a0 The graph paper layout above is going to have a UDF that interrogates the data like this:\u00a0 Does any item have a &#8220;left&#8221; and &#8220;top&#8221; value that should be rendered in the current textbox position?\u00a0 If so, return that content, otherwise return &#8220;&#8221;.\u00a0 But Ehud could also put his business logic into UDFs, and come up with a specialized UDF for his purpose,and even for each specialized textbox\u00a0for example: \u00a0Is this customer of type &#8220;A&#8221; or type &#8220;B&#8221;?\u00a0 If type &#8220;A&#8221;, return the customer&#8217;s name in this position.\u00a0 Otherwise, return a greeting.\u00a0\u00a0 Other requirements might be taken care of by a dynamic sort expression for a list or table &#8212; has the user chosen layout variant &#8220;X&#8221; or &#8220;Y&#8221;?\u00a0 If so, then all records of type &#8220;Z&#8221; come first, otherwise, all rows should be in alphabetical by last name.\u00a0 Dynamic ordering is easy to take care of with IIF, usually, and can evaluate a UDF too.<\/p>\n<p>What I&#8217;ve just suggested doesn&#8217;t include any fussing about positions at all.\u00a0 In fact, I think it is probably unnecessary in majority of cases. Instead of messing around with\u00a0layout control\u00a0positions, dynamically adjust <em>what shows<\/em> in each layout control &#8212; we have a lot of leeway in doing this &#8212; and you&#8217;ll come out ahead.\u00a0 This is not really what Ehud asked me to do, but IMHO it&#8217;s still the right way to get where he&#8217;s trying to go.<\/p>\n<p>I can continue this discussion, and elaborate, if needed, and if anybody wants to give me the dynamic data scenario they have in mind.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ehud Kafri wrote on a\u00a0moribund thread in the SQL Server RS \u00a0forum\u00a0to ask: Hi Lisa, I have a simelar problem, I have a list item that recive a collection of objects that were made specificly for this report. the problem is i need the size and location of the textboxs to be decided according to<a class=\"more-link\" href=\"https:\/\/spacefold.com\/lisa\/2009\/07\/26\/yaps-about-dynamic-layouts\/\">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,12],"tags":[],"class_list":["post-103","post","type-post","status-publish","format-standard","hentry","category-reporting","category-sql-server","category-yaps"],"_links":{"self":[{"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/posts\/103","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=103"}],"version-history":[{"count":2,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/posts\/103\/revisions"}],"predecessor-version":[{"id":438,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/posts\/103\/revisions\/438"}],"wp:attachment":[{"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/media?parent=103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/categories?post=103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/tags?post=103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}