<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Mark Bonafe</title><link>http://dotnetjunkies.com/WebLog/markbonafe/default.aspx</link><description>Common Sense is Here</description><dc:language>en-US</dc:language><generator>CommunityServer 1.0 (Build: 1.0.1.50214)</generator><item><title>Opening IE Using C# Windows</title><link>http://dotnetjunkies.com/WebLog/markbonafe/archive/2005/02/16/54568.aspx</link><pubDate>Wed, 16 Feb 2005 11:34:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:54568</guid><dc:creator>MarkBonafe</dc:creator><slash:comments>1</slash:comments><comments>http://dotnetjunkies.com/WebLog/markbonafe/comments/54568.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/markbonafe/commentrss.aspx?PostID=54568</wfw:commentRss><description>&lt;P&gt;So now you have a nice report written to an HTML file.&amp;nbsp; How do you open it for the user to view it using IE?&amp;nbsp; You could try this:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;System.Diagnostics.Process.Start("iexplore.exe","MyReport.htm");&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;But this hasn't always worked for me.&amp;nbsp; Here is a sure fire way to put it all together. &lt;/P&gt;
&lt;P&gt;Add a project reference to the COM library, Microsoft Internet Controls.&amp;nbsp; Add these two using statements:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#0000ff&gt;using&lt;/FONT&gt; SHDocVw;&lt;BR&gt;&lt;FONT color=#0000ff&gt;using&lt;/FONT&gt; System.Runtime.InteropServices;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;Where you need to open the browser, add the following code:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;explorer = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; InternetExplorer();&amp;nbsp;&lt;BR&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt; (explorer != &lt;FONT color=#0000ff&gt;null&lt;/FONT&gt;)&amp;nbsp;&lt;BR&gt;{&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; explorer.Visible = &lt;FONT color=#0000ff&gt;true&lt;/FONT&gt;;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;object&lt;/FONT&gt; x = &lt;FONT color=#0000ff&gt;null&lt;/FONT&gt;; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; explorer.Navigate(@"MyReport.htm&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;", &lt;FONT color=#0000ff&gt;ref&lt;/FONT&gt; x, &lt;FONT color=#0000ff&gt;ref&lt;/FONT&gt; x, &lt;FONT color=#0000ff&gt;ref&lt;/FONT&gt; x, &lt;FONT color=#0000ff&gt;ref&lt;/FONT&gt; x);&amp;nbsp;&lt;BR&gt;} &lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Thanks to a good friend of mine, Micheal Beall of &lt;A href="http://overdrivetech.com/"&gt;Overdrive Technologies&lt;/A&gt;, for helping me with this.&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=54568" width="1" height="1"&gt;</description></item><item><title>Reporting with HTML.  Who Needs Expensive Reporting Tools?</title><link>http://dotnetjunkies.com/WebLog/markbonafe/archive/2005/02/16/54562.aspx</link><pubDate>Wed, 16 Feb 2005 10:47:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:54562</guid><dc:creator>MarkBonafe</dc:creator><slash:comments>2</slash:comments><comments>http://dotnetjunkies.com/WebLog/markbonafe/comments/54562.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/markbonafe/commentrss.aspx?PostID=54562</wfw:commentRss><description>&lt;P&gt;Printing a web page that represents a report has been difficult for me in the past.&amp;nbsp; I want to print a header and/or a footer that repeats on every printed page.&amp;nbsp; The screen version certainly isn't paginated, so how can you print a good looking report?&amp;nbsp; Style (or CSS) to the rescue.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Put the following Style tag, or something similar, in the header of the page.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;STYLE &lt;FONT color=#ff0000&gt;TYPE&lt;/FONT&gt;=&amp;#8221;&lt;FONT color=#0000ff&gt;text/css&lt;/FONT&gt;&amp;#8221; &lt;FONT color=#ff0000&gt;MEDIA&lt;/FONT&gt;=&amp;#8221;&lt;FONT color=#0000ff&gt;screen, print&lt;/FONT&gt;&amp;#8221;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT color=#0000ff&gt;&amp;lt;!--&lt;BR&gt;&lt;/FONT&gt;TABLE {&lt;BR&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp; table-layout: fixed;&lt;BR&gt;&amp;nbsp; border: 0;&lt;BR&gt;&amp;nbsp; cellspacing: 1;&lt;BR&gt;&amp;nbsp; cellpadding: 1;&lt;BR&gt;&amp;nbsp; font-family: Arial;&lt;BR&gt;&amp;nbsp; font-size: 8pt;&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp; }&lt;BR&gt;TH {&lt;BR&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp; font-family: Arial;&lt;BR&gt;&amp;nbsp; color: black;&lt;BR&gt;&amp;nbsp; background-color: lightgrey;&lt;BR&gt;&amp;nbsp; text-decoration: underline;&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp; }&lt;BR&gt;THEAD {&lt;BR&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp;&amp;nbsp;display: table-header-group;&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp; }&lt;BR&gt;TFOOT {&lt;BR&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp; display: table-footer-group;&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp; }&lt;BR&gt;&lt;FONT color=#0000ff&gt;--&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;STYLE&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Since nearly every report uses an HTML Table, this works very well.&amp;nbsp; The THEAD and TFOOT styles is what makes the table a report.&amp;nbsp; If you don't want to setup a style tag, you can enter the style right into the table.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;table &lt;FONT color=#ff0000&gt;style&lt;/FONT&gt;="&lt;FONT color=#0000ff&gt;table-layout:fixed&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;colgroup&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;col &lt;FONT color=#ff0000&gt;width&lt;/FONT&gt;="&lt;FONT color=#0000ff&gt;150&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;/&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;col &lt;FONT color=#ff0000&gt;width&lt;/FONT&gt;="&lt;FONT color=#0000ff&gt;100&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;/&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;col &lt;FONT color=#ff0000&gt;width&lt;/FONT&gt;="&lt;FONT color=#0000ff&gt;150&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;/&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;colgroup&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;thead &lt;FONT color=#ff0000&gt;style&lt;/FONT&gt;="&lt;FONT color=#0000ff&gt;display:table-header-group&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;tr&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;Header column 1&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;Header column 2&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;Header column 3&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;tr&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;thead&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;tbody&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;tr&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;Body column 1&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;Body column 2&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;Body column 3&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;tr&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;tbody&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;tfoot &lt;FONT color=#ff0000&gt;style&lt;/FONT&gt;="&lt;FONT color=#0000ff&gt;display:table-footer-group&lt;/FONT&gt;"&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;tr&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;Footer column 1&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;Footer column 2&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;Footer column 3&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;td&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;tr&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;tfoot&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;table&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&lt;BR&gt;Sounds too easy to be true but it works very nicely.&amp;nbsp; Of course, adding more style (bolding, underlining, background and foreground colors, etc.) makes this a very nice reporting option.&lt;BR&gt;&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=54562" width="1" height="1"&gt;</description></item><item><title>Printing a RichTextBox</title><link>http://dotnetjunkies.com/WebLog/markbonafe/archive/2005/01/11/43403.aspx</link><pubDate>Tue, 11 Jan 2005 15:55:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:43403</guid><dc:creator>MarkBonafe</dc:creator><slash:comments>2</slash:comments><comments>http://dotnetjunkies.com/WebLog/markbonafe/comments/43403.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/markbonafe/commentrss.aspx?PostID=43403</wfw:commentRss><description>&lt;P&gt;After examining numerous articles on printing with C#, I was about ready to toss in the towel and just copy &amp;amp; paste to Word (yuck).&amp;nbsp; Then I found &lt;A href="http://support.microsoft.com/default.aspx?scid=kb;en-us;812425"&gt;How To Print the Content of a RichTextBox Control By Using Visual C# .NET&lt;/A&gt;&amp;nbsp;on Microsoft's support site.&lt;/P&gt;
&lt;P&gt;I was sure that printing a RichTextbox should be pretty easy.&amp;nbsp; All the articles made it very difficult, though.&amp;nbsp; This article shows the &amp;#8220;correct&amp;#8221; way to print.&amp;nbsp; The entire contents are printed; pictures, other graphics, colors, etc.&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=43403" width="1" height="1"&gt;</description></item><item><title>You've Got to be Kidding</title><link>http://dotnetjunkies.com/WebLog/markbonafe/archive/2004/10/13/28435.aspx</link><pubDate>Wed, 13 Oct 2004 15:19:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:28435</guid><dc:creator>MarkBonafe</dc:creator><slash:comments>2</slash:comments><comments>http://dotnetjunkies.com/WebLog/markbonafe/comments/28435.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/markbonafe/commentrss.aspx?PostID=28435</wfw:commentRss><description>&lt;P&gt;I swear sometimes it's just not worth comming into work.&amp;nbsp; Everyday, I get so called updates to the code base.&amp;nbsp; The changes are made by people in Maintenance (I'm in Development).&amp;nbsp; And everyday I find something completely rediculous.&amp;nbsp; Normally, it's something mundane like changing this:&lt;/P&gt;
&lt;P&gt;deptName = &lt;FONT color=#0000ff&gt;value&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;to this:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;this&lt;/FONT&gt;.deptName = &lt;FONT color=#0000ff&gt;value&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;Then today I found this fine little nugget.&amp;nbsp; This perfectly fine property:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public string&lt;/FONT&gt; ApprovedByUserName&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;get&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;if&lt;/FONT&gt; (&lt;FONT color=#0000ff&gt;this&lt;/FONT&gt;.ApprovedBy &amp;gt; 0)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Users user = new Users();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; user.UserId = &lt;FONT color=#0000ff&gt;this&lt;/FONT&gt;.ApprovedBy;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; user = (Users)StoreFront.Instance.Get(user);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; user.DisplayName;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;else&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;Was rewritten to this:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public string&lt;/FONT&gt; ApprovedByUserName&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;get&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; displayName = String.Empty;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;bool&lt;/FONT&gt; result = (&lt;FONT color=#0000ff&gt;this&lt;/FONT&gt;.ApprovedBy &amp;gt; 0);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;switch&lt;/FONT&gt; (result)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;case&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;true&lt;/FONT&gt;:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Users user&amp;nbsp; = new Users();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; user.UserId = &lt;FONT color=#0000ff&gt;this&lt;/FONT&gt;.ApprovedBy;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; user&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (Users)StoreFront.Instance.Get(user);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; displayName = user.DisplayName;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;break&lt;/FONT&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;case false&lt;/FONT&gt;:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; displayName = String.Empty;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;break&lt;/FONT&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; displayName;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;??What is this??&amp;nbsp; I have to put up with changes like this on a daily basis.&amp;nbsp; I've sent countless emails to the PM.&amp;nbsp; Every last one of them has been ignored.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Usually, the changes don't break anything, but sometimes they do.&amp;nbsp; It's nerve wracking to see tested and approved code go through changes like this.&amp;nbsp; And it's all in the name of "beautification."&lt;/P&gt;
&lt;P&gt;I don't know whether to laugh or cry.&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=28435" width="1" height="1"&gt;</description></item><item><title>To .NET, or not to .NET?</title><link>http://dotnetjunkies.com/WebLog/markbonafe/archive/2004/09/20/26172.aspx</link><pubDate>Mon, 20 Sep 2004 17:11:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:26172</guid><dc:creator>MarkBonafe</dc:creator><slash:comments>2</slash:comments><comments>http://dotnetjunkies.com/WebLog/markbonafe/comments/26172.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/markbonafe/commentrss.aspx?PostID=26172</wfw:commentRss><description>&lt;P&gt;Recently, a client asked if he should convert his web site to .NET.&amp;nbsp; Specifically, what would be the benefit?&amp;nbsp; Unfortunately, and to my surprise,&amp;nbsp;I am having difficult time answering the question!&lt;/P&gt;
&lt;P&gt;Here's the situation.&amp;nbsp; The [ASP]&amp;nbsp;site is very data intensive (SQL Server 2000).&amp;nbsp; The pages have lots of script in order to make remote calls and also to make the site as &amp;#8220;rich client&amp;#8221; as possible.&amp;nbsp; It works very well and has all the functionality they currently need and want.&amp;nbsp; It rarely has problems and the problems that do occur are mild.&lt;/P&gt;
&lt;P&gt;I would absolutely love to convert the application.&amp;nbsp; However, aside from the obvious security benefits, I am having a hard time justifying a switch.&amp;nbsp; The new application would look and feel nearly identical to the first.&amp;nbsp; So the users wouldn't notice much of a change.&amp;nbsp; The middle and back tiers would become object oriented, which would make future changes easier and reduce some redundant code.&amp;nbsp; But is that enough to warrant a rewrite?&amp;nbsp; The application is already very responsive.&lt;/P&gt;
&lt;P&gt;If I put myself in their shoes, I wouldn't want to spend the money to &amp;#8220;upgrade&amp;#8221; if I already had an applicaton that works fine.&amp;nbsp; Perhaps, when a substantial addition is required...&lt;/P&gt;
&lt;P&gt;Has anyone had to answer a similar question?&amp;nbsp; How did it work out?&amp;nbsp; I'd love to hear other thoughts on this topic.&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=26172" width="1" height="1"&gt;</description></item><item><title>Noob Question?</title><link>http://dotnetjunkies.com/WebLog/markbonafe/archive/2004/09/13/25435.aspx</link><pubDate>Mon, 13 Sep 2004 12:38:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:25435</guid><dc:creator>MarkBonafe</dc:creator><slash:comments>2</slash:comments><comments>http://dotnetjunkies.com/WebLog/markbonafe/comments/25435.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/markbonafe/commentrss.aspx?PostID=25435</wfw:commentRss><description>&lt;P&gt;It's been a long time since I've done any real .NET web development.&amp;nbsp; I've been stuck doing&amp;nbsp;windows applications forever, it seems.&amp;nbsp; So if this is a noob question, I apologize, but I'll ask it anyway!&lt;/P&gt;
&lt;P&gt;Here is the situation.&amp;nbsp; I want to have a combobox loaded in the Page_Load() event.&amp;nbsp; I also want the combobox to run a client-side javascript function when the user selects an item from the list.&amp;nbsp; The problem is, I cannot hookup the combobox event to client-side code.&amp;nbsp; Is there a &amp;#8220;clean&amp;#8221; way to do this?&lt;/P&gt;
&lt;P&gt;The .aspx code has the form and all the controls, &lt;STRONG&gt;and&lt;/STRONG&gt; the javascript I need to call.&amp;nbsp; The .aspx.cs code has all the events and methods.&amp;nbsp; I must be missing something (besides my brain).&amp;nbsp; This is easy, isn't it?&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=25435" width="1" height="1"&gt;</description></item><item><title>Just Write It</title><link>http://dotnetjunkies.com/WebLog/markbonafe/archive/2004/07/23/20166.aspx</link><pubDate>Fri, 23 Jul 2004 16:17:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:20166</guid><dc:creator>MarkBonafe</dc:creator><slash:comments>2</slash:comments><comments>http://dotnetjunkies.com/WebLog/markbonafe/comments/20166.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/markbonafe/commentrss.aspx?PostID=20166</wfw:commentRss><description>&lt;P&gt;&amp;lt;RANT explitives=&amp;#8220;false&amp;#8220; attitude=&amp;#8220;true&amp;#8220;&amp;gt;&lt;/P&gt;
&lt;P&gt;I hate looking at this type of code:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;MyCoolObject&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; coolObject&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; MyCoolObject();&lt;BR&gt;ObjectWithBigName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bigName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; ObjectWithBigName();&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;coolObject.Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &amp;#8220;Some Name&amp;#8221;;&lt;BR&gt;coolObject.ReallyLongStringProperty&amp;nbsp; = &amp;#8220;x&amp;#8221;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;FONT face="Courier New" size=2&gt;bigName.Address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &amp;#8220;555 Hard To Read Way&amp;#8221;;&lt;BR&gt;bigName.CityId&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = selectedCity;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;FONT face="Courier New" size=2&gt;&lt;/FONT&gt;&lt;FONT size=+0&gt;I just looked at sample code downloaded from a web site and it was littered with this garbage.&amp;nbsp; Is it really easier for some people to read?&amp;nbsp; To me, it's much more difficult than this:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P dir=ltr&gt;&lt;FONT face="Courier New" size=2&gt;MyCoolObject coolObject = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; MyCoolObject();&lt;BR&gt;ObjectWithBigName bigName = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; ObjectWithBigName();&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;FONT face="Courier New" size=2&gt;coolObject.Name = &amp;#8220;Some Name&amp;#8221;;&lt;BR&gt;coolObject.ReallyLongStringProperty = &amp;#8220;x&amp;#8221;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;bigName.Address = &amp;#8220;555 Hard To Read Way&amp;#8221;;&lt;BR&gt;bigName.CityId = selectedCity;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;FONT size=+0&gt;Am I crazy?&amp;nbsp; Am I the only one that feels this way?&amp;nbsp; Plus it's a big hassle when you go to add code and it doesn't &amp;#8220;line up&amp;#8221; with everything else; especially when a variable name is longer that any previous variables.&amp;nbsp; You find yourself adjusting all the other lines to match your new line of code!&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;FONT size=+0&gt;There are &amp;#8220;coders&amp;#8221; where I work that spend inordinate amounts of time &amp;#8220;lining up&amp;#8221; code.&amp;nbsp; Why?&amp;nbsp; &amp;#8220;Because it's easier to read.&amp;#8221;&amp;nbsp; I say that's a load of horse manure!&amp;nbsp; What's worse, they are modifying tested code.&amp;nbsp; I lost count of how many times an extra&amp;nbsp;character was lost because of this; or worse yet, an entire line just wiped clean.&amp;nbsp; If anything, it makes the code harder to maintain.&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;FONT size=+0&gt;Please, just write the code.&amp;nbsp; Leave the formatting natural.&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;FONT size=+0&gt;&amp;lt;/RANT&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;FONT size=+0&gt;Ahhh, now I'm ready for the weekend.&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=20166" width="1" height="1"&gt;</description></item><item><title>Is it a Training Issue?</title><link>http://dotnetjunkies.com/WebLog/markbonafe/archive/2004/06/01/14924.aspx</link><pubDate>Tue, 01 Jun 2004 15:53:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:14924</guid><dc:creator>MarkBonafe</dc:creator><slash:comments>2</slash:comments><comments>http://dotnetjunkies.com/WebLog/markbonafe/comments/14924.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/markbonafe/commentrss.aspx?PostID=14924</wfw:commentRss><description>&lt;P&gt;... or will some users just never get it.&amp;nbsp; I just got off an MSN chat with one of our users.&amp;nbsp; She didn't have an issue with the application I'm working on.&amp;nbsp; Instead, she had a question about Hotmail.&amp;nbsp; I just did a &amp;#8220;dog and pony&amp;#8220; last week and, at the end, I told the group that if they had any questions, to call or use messenger.&amp;nbsp; Ok, I'm thinking, hotmail - this should be easy enough.&amp;nbsp; She had a blocked user and wanted to &amp;#8220;unblock&amp;#8221; them.&amp;nbsp; Here is how the conversation went.&lt;/P&gt;
&lt;P&gt;Me:&amp;nbsp; Ok.&amp;nbsp; Click on &amp;#8220;Options.&amp;#8221;&amp;nbsp; It's in the header near the top right of the screen.&lt;BR&gt;Her:&amp;nbsp; I don't see it.&lt;/P&gt;
&lt;P&gt;Me:&amp;nbsp; The header is dark blue.&amp;nbsp; Look for the word &amp;#8220;Options.&amp;#8221;&amp;nbsp; Let me know when you click on it.&lt;/P&gt;
&lt;P&gt;&amp;lt;fifteen seconds later&amp;gt;&lt;/P&gt;
&lt;P&gt;Her:&amp;nbsp; OK&lt;/P&gt;
&lt;P&gt;Me:&amp;nbsp; Now click on &amp;#8220;Junk E-mail Protection.&amp;#8221;&lt;BR&gt;Her:&amp;nbsp; I don't see it.&lt;/P&gt;
&lt;P&gt;Me:&amp;nbsp; Did you click on Options on the main page?&lt;BR&gt;Her:&amp;nbsp; Oh.&amp;nbsp; Ok, now I did.&lt;/P&gt;
&lt;P&gt;Me:&amp;nbsp; Now click on &amp;#8220;Junk E-mail Protection&amp;#8221;&lt;BR&gt;Her:&amp;nbsp; It doesn't allow me to un-block.&amp;nbsp; Only to block.&lt;/P&gt;
&lt;P&gt;Me:&amp;nbsp; Did you click on &amp;#8220;Junk E-mail Protection&amp;#8221; ?&lt;BR&gt;Her:&amp;nbsp; I'm looking at it.&amp;nbsp;&amp;nbsp;&amp;nbsp; ???????&lt;/P&gt;
&lt;P&gt;Me:&amp;nbsp; Yes, but did you click on it?&lt;BR&gt;Her:&amp;nbsp; No.&amp;nbsp; Ok - I'll do that.&lt;/P&gt;
&lt;P&gt;Me (glad that she couldn't hear what I was saying out loud): Now - CLICK on &amp;#8220;Block Senders&amp;#8221;&lt;BR&gt;Her:&amp;nbsp; OK. I'll look for that.&lt;/P&gt;
&lt;P&gt;&amp;lt;30 seconds later&amp;gt;&lt;/P&gt;
&lt;P&gt;Me:&amp;nbsp; Did you click on it?&lt;BR&gt;Her:&amp;nbsp; Click on what?&lt;/P&gt;
&lt;P&gt;At this point I just gave up.&amp;nbsp; I told her that I couldn't spend anymore time on this and that she should call the regular help desk.&amp;nbsp; How she got messenger to work I'll never know! &amp;lt;g&amp;gt;&amp;nbsp; But it did give me a whole new insight on what the UI of the application should be like.&amp;nbsp; I have a lot of work ahead!!&lt;/P&gt;
&lt;P&gt;My question is this:&amp;nbsp; How do you design an application that is usable by the "lowest common denominator" and, at the same time, won't turn power users (the users that would benefit most) away?&amp;nbsp; Do I need to add purple dinosaurs with cartoon graphics and use screen geranimals to match menu options??&amp;nbsp; hehe&amp;nbsp; I'm only kidding.&amp;nbsp; But I'll bet if I did, quite a few users would love it.&amp;nbsp; Keep in mind this is an executive business application.&amp;nbsp; Portions of which the client would like to resell.&lt;/P&gt;
&lt;P&gt;I'm so glad I'm not working at a help desk.&amp;nbsp; I wouldn't last half a day...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=14924" width="1" height="1"&gt;</description></item><item><title>.DesignMode Work Around - IDEHelper</title><link>http://dotnetjunkies.com/WebLog/markbonafe/archive/2004/05/17/13789.aspx</link><pubDate>Mon, 17 May 2004 10:40:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:13789</guid><dc:creator>MarkBonafe</dc:creator><slash:comments>2</slash:comments><comments>http://dotnetjunkies.com/WebLog/markbonafe/comments/13789.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/markbonafe/commentrss.aspx?PostID=13789</wfw:commentRss><description>&lt;P&gt;As many of us already know, using the DesignMode property to check whether an application is actually running or just being &amp;#8220;designed&amp;#8221; using the IDE doesn't work the way many of us think it should.&amp;nbsp; I have seen and been involved in many discussions on this topic.&amp;nbsp; The bottom line is this:&amp;nbsp; It works as designed and reports exactly what it's supposed to be reporting.&lt;/P&gt;
&lt;P&gt;Well, this leaves people like me who want to know, in code, if I'm designing with the IDE or running the application with the problem of figuring it out some other way.&amp;nbsp; Here is the solution we use on my current project.&lt;/P&gt;
&lt;P&gt;We&amp;nbsp;have created a class, IDEHelper.&amp;nbsp; It currently has one static property, bool DesignTime.&amp;nbsp; DesignTime is set to true by default.&amp;nbsp; It is only set to false in the first line of the aplication's main() method.&amp;nbsp; Here is the class in it's entirety:&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT color=#0000ff&gt;public class&lt;/FONT&gt; IDEHelper&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;private static bool&lt;/FONT&gt; _designTime = &lt;FONT color=#0000ff&gt;true&lt;/FONT&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; IDEHelper() {}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public static bool&lt;/FONT&gt; DesignTime&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;get&lt;/FONT&gt; { &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; _designTime;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;set&lt;/FONT&gt; { _designTime = &lt;FONT color=#0000ff&gt;value&lt;/FONT&gt;; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;Place the class in a &amp;#8220;common&amp;#8221; project so it is referenced by every project in your solution.&amp;nbsp; Then insteading of using this see if the IDE is in use:&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt; (! DesignMode)&lt;/P&gt;
&lt;P&gt;use this:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt; (! IDEHelper.DesignTime)&lt;/P&gt;
&lt;P&gt;It works like a champ.&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=13789" width="1" height="1"&gt;</description></item><item><title>XTreme Best Practices</title><link>http://dotnetjunkies.com/WebLog/markbonafe/archive/2004/02/19/7609.aspx</link><pubDate>Thu, 19 Feb 2004 20:43:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:7609</guid><dc:creator>MarkBonafe</dc:creator><slash:comments>2</slash:comments><comments>http://dotnetjunkies.com/WebLog/markbonafe/comments/7609.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/markbonafe/commentrss.aspx?PostID=7609</wfw:commentRss><description>&lt;DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;Darrell, I feel your pain, brother.&amp;nbsp; What a mess.&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;A recent post by &lt;A href="http://dotnetjunkies.com/WebLog/darrell.norton/"&gt;Darrell&lt;/A&gt; on his &lt;A href="http://dotnetjunkies.com/WebLog/darrell.norton/archive/2004/02/19/7568.aspx"&gt;Worst Database Experience Ever&lt;/A&gt; got me thinking.&amp;nbsp; All "best practices" can be taken to extremes.&amp;nbsp; I'm going to make some arguments here.&amp;nbsp; See if you can tell the serious from the silly.&amp;nbsp; &lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;Relationships?&lt;/STRONG&gt;&amp;nbsp; Who needs them.&amp;nbsp; Aren't they a form of Business Rule?&amp;nbsp; You don't want to put business rules in the database do you?&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;Cascading Deletes/Updates?&lt;/STRONG&gt;&amp;nbsp; No way!&amp;nbsp; That's a business rule, too.&amp;nbsp; You should never have any of this in your database.&amp;nbsp; The application should figure out which items to delete and delete them!&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;Nullable columns?&lt;/STRONG&gt;&amp;nbsp; Of course all columns should be nullable.&amp;nbsp; Again, just another form of a Business Rule.&amp;nbsp; Making a column not nullable is putting a BR in the database, isn't it?&amp;nbsp; Honestly, how does the database "know" what I want to make null?&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;Stored Procedures?&lt;/STRONG&gt;&amp;nbsp; No sir!&amp;nbsp; Can't have any of those.&amp;nbsp; Especially the kind that only return information.&amp;nbsp; The application should always build queries on the fly.&amp;nbsp; After all, the application knows what it wants, not the database.&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;Of course, if you can't have stored procedures, then you surely shouldn't have any triggers (cascading or otherwise) or check constraints.&amp;nbsp; If these don't represent business rules, then nothing does!&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;SQL Server Jobs?&lt;/STRONG&gt;&amp;nbsp; Unless they are doing backups or xfers then they souldn't exist.&amp;nbsp; Write an application do the same thing.&amp;nbsp; Surely, any job other than a backup or xfer has a business rule attached.&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=RTE&gt;&lt;FONT size=2&gt;Ok so I am being sarcastic.&amp;nbsp; Or am I?&amp;nbsp; The lines start to blur in there somewhere don't they.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=7609" width="1" height="1"&gt;</description></item><item><title>How to Handle Nulls - An Answer!</title><link>http://dotnetjunkies.com/WebLog/markbonafe/archive/2004/02/06/6724.aspx</link><pubDate>Fri, 06 Feb 2004 13:56:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:6724</guid><dc:creator>MarkBonafe</dc:creator><slash:comments>5</slash:comments><comments>http://dotnetjunkies.com/WebLog/markbonafe/comments/6724.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/markbonafe/commentrss.aspx?PostID=6724</wfw:commentRss><description>&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;In my &lt;/FONT&gt;&lt;A href="http://dotnetjunkies.com/WebLog/MarkBonafe/posts/6636.aspx"&gt;&lt;FONT face="Courier New" size=2&gt;last post&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;, I posed this problem.&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;I have&amp;nbsp;a custom class that has properties of int, decimal, datetime, etc.&amp;nbsp; I want to use standard binding in Windows forms.&amp;nbsp; I want the user to one, NOT see the default values (0 for int, etc.) if the value is in fact &amp;#8220;empty&amp;#8221; or null.&amp;nbsp; And two, be able to set a current non null value to null in the database simply by clearing the textbox or other bound control (highlight and delete, backspace, etc.).&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;FONT face="Courier New" size=2&gt;I received a few responses, but none of them solved the problem the way I wanted it solved.&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P dir=ltr&gt;&lt;EM&gt;&lt;FONT face="Courier New" size=2&gt;I want to use standard binding. When the user "blanks" out a textbox, I don't want the value to MSMagically reappear because it cannot be set to null or an empty space. If the user wants to set an int or decimal to "empty" (not zero), what are they supposed to do? I don't want use "trickery" to capture my data, I want to use standard binding and still get the desired results. I don't want to have to write a bunch of hacked up proprietary controls to achieve this either. I want a technique that's simple for the developer to implement. &lt;BR&gt;&lt;BR&gt;I truly find it amazing that MS has made this so difficult.&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face="Courier New" size=2&gt;Well, I have an answer.&amp;nbsp; It will make &amp;#8220;object purists&amp;#8221;&amp;nbsp;cringe, for sure.&amp;nbsp; But it solves the problem and is easy to implement.&amp;nbsp; Let me know what you think.&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public class&lt;/FONT&gt; MyInt32&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// internal integer - our value&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;private int&lt;/FONT&gt; _value;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// defalut value&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;private static readonly int&lt;/FONT&gt; DEFAULT_VALUE = -32000;&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; MyInt32()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _value = DEFAULT_VALUE;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public object&lt;/FONT&gt; Value&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;get&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;if&lt;/FONT&gt; (_value == DEFAULT_VALUE)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; System.DBNull.Value;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;else&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; _value;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;set&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;try&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _value = Convert.ToInt32(&lt;FONT color=#0000ff&gt;value&lt;/FONT&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;catch&lt;/FONT&gt; { _value = DEFAULT_VALUE; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public class&lt;/FONT&gt; MyDateTime&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#008000&gt; // internal datetime - our value&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; DateTime _value;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// defalut value&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;private static readonly&lt;/FONT&gt; DateTime DEFAULT_VALUE = Convert.ToDateTime("1/1/1753");&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; MyDateTime()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _value = DEFAULT_VALUE;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public object&lt;/FONT&gt; Value&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;get&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;if&lt;/FONT&gt; (_value == DEFAULT_VALUE)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; System.DBNull.Value;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;else&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; _value;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;set&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;try&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _value = Convert.ToDateTime(&lt;FONT color=#0000ff&gt;value&lt;/FONT&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;catch&lt;/FONT&gt; { _value = DEFAULT_VALUE; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public class&lt;/FONT&gt; ObjectClass : IEditableObject, IWhatever, yada yada yada&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; MyInt32 _age;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;private&lt;/FONT&gt; MyDateTime _birthdate; &lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; ObjectClass()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _age = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; MyInt32();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _birthdate = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; MyDateTime();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public object&lt;/FONT&gt; BirthDate&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;get&lt;/FONT&gt; { &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; _birthdate.Value;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;set&lt;/FONT&gt; { _birthdate.Value = &lt;FONT color=#0000ff&gt;value&lt;/FONT&gt;;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public object&lt;/FONT&gt; Age&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;get&lt;/FONT&gt; { &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; _age.Value;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;set&lt;/FONT&gt; { _age.Value = &lt;FONT color=#0000ff&gt;value&lt;/FONT&gt;;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;//... implement interfaces ...&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face="Courier New" size=2&gt;The only real drawback I can see to this method is that I have to typecast if I need to do calculations on the properties.&amp;nbsp; I can live with that.&amp;nbsp; These properties are perfectly bindable in any control.&amp;nbsp; If the control is cleared of data, then the property reports back a System.DBNull.Value.&amp;nbsp; Controls natively understand this value and display it properly.&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face="Courier New" size=2&gt;Of course, these are &amp;#8220;simple&amp;#8220; classes.&amp;nbsp; However, I have implemented this procedure in one of our full blown modules and it works perfectly.&amp;nbsp; Our classes implement numerous interfaces, track original vs. current values, change entity and collection status, etc.&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face="Courier New" size=2&gt;All I have to do now is convince the PM to go with the change.&amp;nbsp; It should be easy because everyone is sick of seeing actual values where none exist!&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face="Courier New" size=2&gt;Any other ideas are welcome.&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=6724" width="1" height="1"&gt;</description></item><item><title>How to Handle Nulls - A Question</title><link>http://dotnetjunkies.com/WebLog/markbonafe/archive/2004/02/05/6636.aspx</link><pubDate>Thu, 05 Feb 2004 12:46:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:6636</guid><dc:creator>MarkBonafe</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/markbonafe/comments/6636.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/markbonafe/commentrss.aspx?PostID=6636</wfw:commentRss><description>&lt;P&gt;Ok.&amp;nbsp; I have yet to see a workable solution to this problem.&amp;nbsp; I have a class that contains&amp;nbsp;properties of types int, decimal, and datetime (there could be others, of course).&amp;nbsp; These properties are bound to a form (Windows).&amp;nbsp; I need the controls to display blank (empty) values.&amp;nbsp; I can't use DBNull.Value and I can't leave the properties uninitialized because of the infamous &amp;#8220;Object not set to an instance of an object&amp;#8221; error.&lt;/P&gt;
&lt;P&gt;This must have been solved by some of you out there.&amp;nbsp; Probably in many ways.&amp;nbsp; I'll keep looking for an answer.&amp;nbsp; But I sure would appreciate input on this one.&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=6636" width="1" height="1"&gt;</description></item><item><title>Please Create This Object!!</title><link>http://dotnetjunkies.com/WebLog/markbonafe/archive/2004/01/06/5242.aspx</link><pubDate>Tue, 06 Jan 2004 14:19:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:5242</guid><dc:creator>MarkBonafe</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/markbonafe/comments/5242.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/markbonafe/commentrss.aspx?PostID=5242</wfw:commentRss><description>&lt;P&gt;ARRRRGGHH!!&amp;nbsp; I've had all can stands and I can't stands no more!&lt;/P&gt;
&lt;P&gt;Someone please create an object that can do this because it happens way too much (Frans, you're only half way there):&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;RequirementsCompletedReviewedAndApproved entity = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; RequirementsCompletedReviewedAndApproved();&lt;BR&gt;&lt;FONT color=#008000&gt;// Darn &amp;#8211; requirements changed already!&amp;nbsp; And just when I've &amp;#8220;finished&amp;#8220; coding.&lt;/FONT&gt;&lt;FONT color=#008000&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; OldTable = &amp;#8220;OriginalTableName&amp;#8221;;&lt;BR&gt;&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; NewTable = &amp;#8220;NewTableName&amp;#8221;;&lt;BR&gt;&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; OldColName = &amp;#8220;OriginalColumnName&amp;#8221;;&lt;BR&gt;&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; NewColName = &amp;#8220;NewColumnName&amp;#8221;;&lt;BR&gt;&lt;FONT color=#008000&gt;// Change the file(s) in source safe&lt;BR&gt;&lt;/FONT&gt;entity.VSSCheckOutCSFile();&lt;BR&gt;entity.VSSCheckOutRelatedCSFiles(&amp;#8220;InternalCollectionsOrEntities&amp;#8221;);&lt;BR&gt;entity.ChangeTableName(OldTable,NewTable);&lt;BR&gt;entity.ChangeColumnName(OldColName,NewColName);&lt;BR&gt;entity.VSSCheckInRelatedCSFiles(&amp;#8220;InternalCollectionsOrEntities&amp;#8221;);&lt;BR&gt;entity.VSSCheckInCSFile();&lt;BR&gt;&lt;FONT color=#008000&gt;// Now update SQL Server&lt;/FONT&gt;&lt;BR&gt;entity.CacheSQLServerRelationships();&lt;BR&gt;entity.RemoveAllSQLServerRelationships(OldTable);&lt;BR&gt;entity. SQLServerModifyUpdateSP(&amp;#8220;TableNameChange&amp;#8221;,OldTable,NewTable);&lt;BR&gt;entity. SQLServerModifyUpdateSP(&amp;#8220;ColumnNameChange&amp;#8221;,OldColName,NewColName);&lt;BR&gt;entity. SQLServerModifyGetSP(&amp;#8220;TableNameChange&amp;#8221;, OldTable,NewTable);&lt;BR&gt;entity. SQLServerModifyGetSP(&amp;#8220;ColumnNameChange&amp;#8221;,OldColName,NewColName);&lt;BR&gt;entity.SQLServerModifyTableName(OldTable,NewTable);&lt;BR&gt;entity. SQLServerModifyColumnName(OldColName,NewColName);&lt;BR&gt;entity. SQLServerPutAllRelationshipsBack(OldTable,OldColName,NewTable,NewColName);&lt;BR&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;I'd pay big bucks!&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=5242" width="1" height="1"&gt;</description></item><item><title>As the Pendulum Swings</title><link>http://dotnetjunkies.com/WebLog/markbonafe/archive/2004/01/06/5228.aspx</link><pubDate>Tue, 06 Jan 2004 10:56:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:5228</guid><dc:creator>MarkBonafe</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/markbonafe/comments/5228.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/markbonafe/commentrss.aspx?PostID=5228</wfw:commentRss><description>&lt;P&gt;Darrel Norton's &lt;A href="http://dotnetjunkies.com/weblog/darrell.norton/posts/5216.aspx"&gt;post&lt;/A&gt;&amp;nbsp;on SOA got me thinking....&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;It is interesting to &amp;#8220;stand back&amp;#8221; and examine the evolution of software development practices over the last 15 or so years.&amp;nbsp; In the eighties, all languages were procedural.&amp;nbsp; There was talk of object orientation and how it was going to change the world, but that was just talk.&amp;nbsp; Oh sure, there was SmallTalk, but who used that?&amp;nbsp; ;)&amp;nbsp; So we developed our procedures and functions as neatly and cleanly as we could; passing in our values and getting our answers.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;In the nineties, there was C++ and a few other languages that actually knew what an object was (in a real sense).&amp;nbsp; Many developers jumped on the object wagon and turn a good profit.&amp;nbsp; But most developers stayed with the tried and true procedural languages.&amp;nbsp; After all, most clients either couldn&amp;#8217;t spell C++ or simply wouldn&amp;#8217;t allow applications to be written in it because &amp;#8220;we can&amp;#8217;t maintain it.&amp;#8221;&amp;nbsp; So we developed our procedures and functions as neatly and cleanly as we could; passing in our values and getting our answers.&amp;nbsp; Only now we knew more about objects and their benefits.&amp;nbsp; So we developed our applications to a higher standard.&amp;nbsp; With this knowledge, our software became &amp;#8220;object like.&amp;#8221;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Now we are reaching nirvana!&amp;nbsp; We have a true object oriented language and it&amp;#8217;s hit the mainstream.&amp;nbsp; Even the once timid clients are finally getting on the object wagon.&amp;nbsp; And now what are we (developers) doing?&amp;nbsp; We are backing off of a completely object oriented design in favor of &amp;#8220;Service Oriented Architectures&amp;#8221; (SOA), read procedures and functions (only now they&amp;#8217;re called methods).&amp;nbsp; Funny how the pendulum swings.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Is this wrong?&amp;nbsp; I don&amp;#8217;t think so.&amp;nbsp; We&amp;#8217;ve been attempting to mold the design of database applications into a &amp;#8220;pure&amp;#8221; OO architecture for long enough.&amp;nbsp; OO is not ready, nor will it ever be (IMHO), for an application based on a relational database.&amp;nbsp; The resulting code base quickly becomes bloated and/or very cumbersome.&amp;nbsp; The database will have to change to OO first.&amp;nbsp; Yes, there are some OO databases already on the market, but they&amp;#8217;re not mainstream.&amp;nbsp; Will they ever be?&amp;nbsp; Sure, I think so.&amp;nbsp; When that happens, the pendulum will begin it&amp;#8217;s swing back to true object oriented architectures.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;So we developers find ourselves examining SOAs.&amp;nbsp; Using a container to hold our data (collections and/or datatables/datasets) and sending them, or parts of them, to a service (i.e. method) for a particular action to be performed.&amp;nbsp; True, the method may exist in some far away system.&amp;nbsp; That is where the real revolution has occurred.&amp;nbsp; And, yes, it IS contained within a true object.&amp;nbsp; But this time, the object is only concerned with providing services, exposing methods to perform them.&amp;nbsp; So we end up doing the same thing we&amp;#8217;ve always done, only differently.&lt;BR&gt;&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=5228" width="1" height="1"&gt;</description></item><item><title>CIO's - Front and Center!</title><link>http://dotnetjunkies.com/WebLog/markbonafe/archive/2003/12/29/4969.aspx</link><pubDate>Mon, 29 Dec 2003 10:48:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:4969</guid><dc:creator>MarkBonafe</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/markbonafe/comments/4969.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/markbonafe/commentrss.aspx?PostID=4969</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Arial&gt;I just read this very short, very &amp;#8220;on the mark&amp;#8221; article; &lt;/FONT&gt;&lt;A href="http://www.optimizemag.com/issue/026/othervisions.htm"&gt;&lt;FONT face=Arial&gt;Still Counting on Tech in 2004&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;.&amp;nbsp; It has my quote of the day.&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;EM&gt;&lt;FONT face=Arial&gt;&amp;#8220;Will the United States remain the global leader in technology? I think it will, but we can't afford to take our eye off the ball... ...we're entering an age where what we do with technology is more important than the technology itself. It's as if we have all the instruments in our symphony orchestra; the question is what sort of music we're going to make with them.&amp;#8220;&lt;BR&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face=Arial&gt;Amen to that.&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=4969" width="1" height="1"&gt;</description></item></channel></rss>