<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8984831249761052455</id><updated>2011-10-31T11:33:43.336-02:00</updated><category term='Lay-Ree Design Pattern'/><category term='jquery'/><category term='WebServices'/><category term='ADO Excel'/><category term='SQLServer'/><category term='MySQL'/><category term='javascript'/><category term='WCF'/><category term='CSS'/><category term='Eclipse'/><title type='text'>Byte Nosso de Cada Dia</title><subtitle type='html'>0100101001100101011100110111010101110011010000110111001001101001011100110111010001101111</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-2479772358405541158</id><published>2011-10-19T19:00:00.002-02:00</published><updated>2011-10-19T19:04:12.947-02:00</updated><title type='text'>Desabilitando Copy, Paste e Cut (Inclusive no Context Menu)</title><content type='html'>&lt;pre&gt;$('#txt').bind("cut copy paste input",function(e) {&lt;br /&gt;   e.preventDefault();&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;O &lt;span style="font-style: italic;"&gt;input&lt;/span&gt; foi necessário porque, nos meus testes, o &lt;span style="font-style: italic;"&gt;paste&lt;/span&gt; não foi identificado no IE8 (sempre o IE...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-2479772358405541158?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/2479772358405541158/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=2479772358405541158' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/2479772358405541158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/2479772358405541158'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2011/10/desabilitando-copy-paste-e-cut.html' title='Desabilitando Copy, Paste e Cut (Inclusive no Context Menu)'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-1492299465392294527</id><published>2011-10-14T16:03:00.015-03:00</published><updated>2011-10-14T17:08:43.693-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><title type='text'>Bug em Página Web com Campo Numérico</title><content type='html'>Hoje teve mais um bug estranho para eu tentar resolver: Em uma página asp.net, uma determinada caixa de texto estava com um tratamento javascript para permitir que fosse digitado apenas valores numéricos, porém ele não reconhecia as teclas do keyPad como numéricas (embora o NumLock estivesse ligado)!&lt;br /&gt;&lt;br /&gt;Este era o bloco de código:&lt;br /&gt;&lt;pre&gt;$("#txtendereconumero").keydown(function (event) {&lt;br /&gt;// Allow only backspace and delete&lt;br /&gt;if (event.keyCode == 46 || event.keyCode == 8) {&lt;br /&gt;   // let it happen, don't do anything&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;   // Ensure that it is a number and stop the keypress&lt;br /&gt;   if (event.keyCode &amp;lt; 48 || event.keyCode &amp;gt; 57) {&lt;br /&gt;       event.preventDefault();&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Pesquisando um pouco a respeito do assunto, encontrei um lugar onde o autor explica bem essa situação (&lt;a href="http://unixpapa.com/js/key.html"&gt;link&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Para resolver o meu problema, eu vi que na aplicação já estava inserido o plugin 'Masked Input' (mais detalhes &lt;a href="http://digitalbush.com/projects/masked-input-plugin/"&gt;neste link&lt;/a&gt;). Uma vez adicionado o plugin, a minha implementação ficou da seguinte maneira:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;$("#txtendereconumero").mask("9999999");&lt;/pre&gt;&lt;br /&gt;O problema que veio depois é que pela definição do plugin uma mascará é exibida, e ela no momento era indesejada.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-VUdeItJeslc/TpiVzHvdUXI/AAAAAAAAEzE/3AcFKtBfS0c/s1600/campoNumerico.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 117px; height: 49px;" src="http://4.bp.blogspot.com/-VUdeItJeslc/TpiVzHvdUXI/AAAAAAAAEzE/3AcFKtBfS0c/s400/campoNumerico.png" alt="" id="BLOGGER_PHOTO_ID_5663441236902367602" border="0" /&gt;&lt;/a&gt;Corrigi, alterando a implementação para a seguinte:&lt;br /&gt;&lt;pre&gt;$("#txtendereconumero").mask("9999999", {placeholder: " "});&lt;/pre&gt;&lt;a href="http://2.bp.blogspot.com/-P62RonwHR40/TpiWkeSuJ1I/AAAAAAAAEzQ/FUOlS6OzPJ4/s1600/campoNumerico2.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 117px; height: 51px;" src="http://2.bp.blogspot.com/-P62RonwHR40/TpiWkeSuJ1I/AAAAAAAAEzQ/FUOlS6OzPJ4/s400/campoNumerico2.PNG" alt="" id="BLOGGER_PHOTO_ID_5663442084769441618" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-1492299465392294527?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/1492299465392294527/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=1492299465392294527' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/1492299465392294527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/1492299465392294527'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2011/10/bug-em-pagina-web-com-campo-numerico.html' title='Bug em Página Web com Campo Numérico'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-VUdeItJeslc/TpiVzHvdUXI/AAAAAAAAEzE/3AcFKtBfS0c/s72-c/campoNumerico.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-737873955778672055</id><published>2011-10-11T10:19:00.005-03:00</published><updated>2011-10-11T10:26:44.596-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WebServices'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>WCF Test Client</title><content type='html'>Ontem eu perdi um bom tempo tentando lembrar a ferramenta que eu usava para testar webservices quando eu estava alocado no projeto anterior. Depois de algum tempo encontrei. E, a fim de não "esquecer" novamente ,vou deixar registrado aqui.&lt;br /&gt;&lt;br /&gt;De acordo com o MSDN, "Windows Communication Foundation (WCF) Test Client (WcfTestClient.exe) is a GUI tool that enables users to input test parameters, submit that input to the service, and view the response that the service sends back. It provides a seamless service testing experience when combined with WCF Service Host.&lt;br /&gt;&lt;br /&gt;You can find the WCF Test Client (WcfTestClient.exe) in the following location: C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\"&lt;br /&gt;&lt;br /&gt;fonte: http://msdn.microsoft.com/en-us/library/bb552364.aspx&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-CxEA4g_V3N4/TpRDpZ80rpI/AAAAAAAAEy4/hz65nSj9wdY/s1600/WCF%2BTest%2BClient.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 186px;" src="http://4.bp.blogspot.com/-CxEA4g_V3N4/TpRDpZ80rpI/AAAAAAAAEy4/hz65nSj9wdY/s400/WCF%2BTest%2BClient.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5662225010131250834" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-737873955778672055?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/737873955778672055/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=737873955778672055' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/737873955778672055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/737873955778672055'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2011/10/wcf-test-client.html' title='WCF Test Client'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-CxEA4g_V3N4/TpRDpZ80rpI/AAAAAAAAEy4/hz65nSj9wdY/s72-c/WCF%2BTest%2BClient.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-261063351851461562</id><published>2011-04-02T12:05:00.007-03:00</published><updated>2011-04-02T12:16:04.744-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLServer'/><title type='text'>Acessar SQL Express Remotamente</title><content type='html'>Ao tentar conectar em uma instancia do SQL Server Express remotamente, eu estava recebendo a seguinte mensagem de erro: "error: 28 - O servidor não dá suporte ao protocolo solicitado".&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-7RjtitPUNOg/TZc7-TxNpPI/AAAAAAAAEv0/gd7FYVxtv68/s1600/sqlexpress%2Berror%2B28.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://4.bp.blogspot.com/-7RjtitPUNOg/TZc7-TxNpPI/AAAAAAAAEv0/gd7FYVxtv68/s320/sqlexpress%2Berror%2B28.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5591003404048377074" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer;  " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pesquisando na internet, encontrei a solução:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-size: 12px; "&gt;&lt;strong&gt; Enabling TCP/IP&lt;/strong&gt;&lt;br /&gt;First we must tell SQL Server Express to listen on TCP/IP, to do this&lt;br /&gt;perform the following steps:&lt;br /&gt;&lt;br /&gt;1. Launch the SQL Server Configuration Manager from the "Microsoft SQL&lt;br /&gt;Server 2005 CTP" Program menu&lt;br /&gt;2. Click on the "Protocols for SQLEXPRESS" node,&lt;br /&gt;3. Right click on "TCP/IP" in the list of Protocols and choose, "Enable"&lt;br /&gt;&lt;br /&gt;fonte: &lt;a href="http://blogs.msdn.com/b/sqlexpress/archive/2005/05/05/415084.aspx"&gt;http://blogs.msdn.com/b/sqlexpress/archive/2005/05/05/415084.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-261063351851461562?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/261063351851461562/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=261063351851461562' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/261063351851461562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/261063351851461562'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2011/04/acessar-sql-express-remotamente.html' title='Acessar SQL Express Remotamente'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-7RjtitPUNOg/TZc7-TxNpPI/AAAAAAAAEv0/gd7FYVxtv68/s72-c/sqlexpress%2Berror%2B28.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-6321694982693356940</id><published>2010-06-02T15:06:00.009-03:00</published><updated>2010-06-02T17:34:33.875-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>MySQL Provider doesn't appears in Visual Studio 2010</title><content type='html'>&lt;div style="text-align: left;"&gt;Sabe-se Deus lá o porquê, o provedor do MySQL não estava aparecendo no Visual Studio.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/__TWqedQnZAA/TAafPNrQvHI/AAAAAAAAEnM/Qq1EElBsuzU/s320/choose+data+source.JPG" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 182px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5478241080460754034" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Encontrei uma ajuda rápida para o problema &lt;a href="http://christianpayne.com.au/2010/05/07/vs-2010-mysql-entity-framework-and-setup-wizard-ended-prematurely-because-of-an-error/"&gt;aqui&lt;/a&gt;. Porém não precisei seguir os passos sujeridos por ele, pois quando eu fui aplicá-los, já haviam liberado a versão 6.3.2 do connector. Ai, foi só Next, Next, Finish!&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:monospace;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;font-size:130%;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px; white-space: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-6321694982693356940?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/6321694982693356940/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=6321694982693356940' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/6321694982693356940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/6321694982693356940'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2010/06/mysql-provider-does-not-show-in-visual.html' title='MySQL Provider doesn&apos;t appears in Visual Studio 2010'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__TWqedQnZAA/TAafPNrQvHI/AAAAAAAAEnM/Qq1EElBsuzU/s72-c/choose+data+source.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-4460841973162084567</id><published>2009-11-04T21:34:00.003-02:00</published><updated>2009-11-04T21:37:03.037-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Instalando Visual Editor no Eclipse 3.4 (Ganymede)</title><content type='html'>Porque todo mundo não dá uma solução como o cara deu no link abaixo??? O pior é que funciona!&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt; Você precisa da distribuição do eclipse para Java EE e de uma versão do VE&lt;br /&gt;modificada (no link abaixo)&lt;a href="http://www.ehecht.com/eclipse_ve/ve_eclipse_34_200807092330_win.zip"&gt;http://www.ehecht.com/eclipse_ve/ve_eclipse_34_200807092330_win.zip&lt;/a&gt;&lt;br /&gt;descompacte&lt;br /&gt;o arquivo na pasta dropins do eclipse, e jaé!&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fonte: &lt;a href="http://javafree.uol.com.br/topic-869717-Como-instalar-Paleta-de-Swing-no-Eclipse-Ganymede-RESOLVIDO.html"&gt;http://javafree.uol.com.br/topic-869717-Como-instalar-Paleta-de-Swing-no-Eclipse-Ganymede-RESOLVIDO.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-4460841973162084567?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/4460841973162084567/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=4460841973162084567' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/4460841973162084567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/4460841973162084567'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2009/11/instalando-visual-editor-no-eclipse-34.html' title='Instalando Visual Editor no Eclipse 3.4 (Ganymede)'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-7486321572520198497</id><published>2008-05-20T17:24:00.003-03:00</published><updated>2008-05-20T17:28:40.815-03:00</updated><title type='text'>Rendering WebControl In String</title><content type='html'>Precisei renderizar um GridView para dentro de uma variável String. Segue o código...&lt;br /&gt;&lt;pre&gt;Using _frm As New HtmlForm&lt;br /&gt;&lt;br /&gt;    'Para recupera o conteudo, preciso renderizar o &lt;br /&gt;    'controle para um TextWriter.&lt;br /&gt;    Dim sbResumoRenderizado As New StringBuilder&lt;br /&gt;    Dim _objHtmlTextWriter As New HtmlTextWriter( _&lt;br /&gt;        New IO.StringWriter(sbResumoRenderizado))&lt;br /&gt;&lt;br /&gt;    'Para renderizar um Form, é necessário &lt;br /&gt;    'uma página.&lt;br /&gt;    'Caso contrário o seguinte erro é apresentado: &lt;br /&gt;    '    "HtmlForm cannot render without a reference &lt;br /&gt;    '    to the Page instance"&lt;br /&gt;    Me.Page.Controls.Add(_frm)&lt;br /&gt;&lt;br /&gt;    'Adiciono ao form os controles que &lt;br /&gt;    'serão renderizados.&lt;br /&gt;    With _frm.Controls&lt;br /&gt;        Call .Clear()&lt;br /&gt;        Call .Add(GridView1)&lt;br /&gt;    End With&lt;br /&gt;&lt;br /&gt;    'Renderizo o formulário&lt;br /&gt;    _frm.RenderControl(_objHtmlTextWriter)&lt;br /&gt;&lt;br /&gt;    strTexto &amp;= sbResumoRenderizado.ToString&lt;br /&gt;End Using&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-7486321572520198497?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/7486321572520198497/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=7486321572520198497' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/7486321572520198497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/7486321572520198497'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2008/05/rendering-webcontrol-in-string.html' title='Rendering WebControl In String'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-2890062858366344215</id><published>2008-04-01T11:11:00.000-03:00</published><updated>2008-12-10T13:31:46.532-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lay-Ree Design Pattern'/><title type='text'>Lay-Ree Design Pattern</title><content type='html'>Apresento a todos hoje o mais novo e moderno &lt;a href="http://pt.wikipedia.org/wiki/Padr%C3%B5es_de_projeto_de_software"&gt;design pattern&lt;/a&gt;: o &lt;strong&gt;Lay-Ree Design Pattern&lt;/strong&gt; (lê-se &lt;i&gt;lê-e-ri&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__TWqedQnZAA/R_JF2xrWxfI/AAAAAAAADQM/Dd8O_Nmuf88/s1600-h/Lay-Ree+patterns.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/__TWqedQnZAA/R_JF2xrWxfI/AAAAAAAADQM/Dd8O_Nmuf88/s400/Lay-Ree+patterns.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5184282928407299570" /&gt;&lt;/a&gt;&lt;br /&gt;A medida que o tempo for passando eu vou trazendo outros exemplos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-2890062858366344215?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/2890062858366344215/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=2890062858366344215' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/2890062858366344215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/2890062858366344215'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2008/04/lay-ree-design-pattern.html' title='Lay-Ree Design Pattern'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__TWqedQnZAA/R_JF2xrWxfI/AAAAAAAADQM/Dd8O_Nmuf88/s72-c/Lay-Ree+patterns.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-1044202379632747370</id><published>2008-03-31T13:14:00.000-03:00</published><updated>2008-03-31T13:21:13.673-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLServer'/><title type='text'>Linked Server no SQL Server</title><content type='html'>Existe uma procedure no SQL Server chamada &lt;strong&gt;sp_addlinkedserver&lt;/strong&gt;, que adiciona um link para uma base de dados externa, desde outros servidores do SQL Server, como Oracle e até mesmo Access, com OleDb.&lt;br /&gt;Usei hoje, linkando com um outro servidor do SQL server. Executei o seguinte código.&lt;pre&gt;SP_ADDLINKEDSERVER '192.168.1.2', 'SQL Server'&lt;/pre&gt;&lt;br /&gt;Depois disso, pude executar a seguinte query:&lt;pre&gt;&lt;br /&gt;INSERT INTO &lt;br /&gt; [192.168.1.2].VIRTO.DBO.CONFIG_ORIGENS &lt;br /&gt; (EMPRESA, NOME, DESCRICAO)&lt;br /&gt;SELECT EMPRESA&lt;br /&gt; , NOME&lt;br /&gt; , DESCRICAO &lt;br /&gt;FROM CONFIG_ORIGENS&lt;/pre&gt;&lt;br /&gt;Para ver uma listagem dos servidores já &lt;i&gt;linkados&lt;/i&gt;...&lt;pre&gt;SELECT * FROM MASTER..SYSSERVERS&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-1044202379632747370?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/1044202379632747370/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=1044202379632747370' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/1044202379632747370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/1044202379632747370'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2008/03/linked-server-no-sql-server.html' title='Linked Server no SQL Server'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-1491188695347818714</id><published>2008-01-25T15:09:00.000-02:00</published><updated>2008-01-25T15:34:11.430-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>Box com cantos arredondados</title><content type='html'>É melhor eu registrar esse código em algum lugar antes que eu precise procurá-lo pela 83ª vez...&lt;br /&gt;&lt;br /&gt;Esse é um exemplo de como gerar box com cantos arredondados. Vale lembrar que é necessário ter as imagens dos cantos.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;div class=&amp;quot;box_arredondado&amp;quot;&amp;gt; &lt;br /&gt;   &amp;lt;div class=&amp;quot;borda_top&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;   &amp;lt;div class=&amp;quot;conteudo&amp;quot;&amp;gt;&lt;br /&gt;      Bla Bla Bla Wiskas Sachê&lt;br /&gt;   &amp;lt;/div&amp;gt;&lt;br /&gt;   &amp;lt;div class=&amp;quot;borda_bottom&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;CSS:&lt;br /&gt;&lt;pre&gt;div.box_arredondado {&lt;br /&gt;   background-color: #FFFFFF;&lt;br /&gt;   color: #000000;&lt;br /&gt;   margin: 10px;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;div.box_arredondado .conteudo {&lt;br /&gt;   margin: 0px 15px;&lt;br /&gt;   position: relative;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;div.box_arredondado .borda_top div {&lt;br /&gt;   background: url(top_le.gif) no-repeat top left;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;div.box_arredondado .borda_top &lt;br /&gt;{&lt;br /&gt;   background: url(top_ld.gif) no-repeat top right;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;div.box_arredondado .borda_bottom div {&lt;br /&gt;   background: url(base_le.gif) no-repeat bottom left;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;div.box_arredondado .borda_bottom {&lt;br /&gt;   background: url(base_ld.gif) no-repeat bottom right;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Como uma segunda opção, é possível gerar o HTML, CSS e as imagens para criar Box arredondados neste site: http://www.roundedcornr.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-1491188695347818714?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/1491188695347818714/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=1491188695347818714' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/1491188695347818714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/1491188695347818714'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2008/01/box-com-cantos-arredondados.html' title='Box com cantos arredondados'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-9207497666416739843</id><published>2007-12-20T15:43:00.000-02:00</published><updated>2007-12-20T15:58:52.127-02:00</updated><title type='text'>Confiando No Código Que Se Escreve</title><content type='html'>Encontrei num sistema a seguinte linha de código:&lt;br /&gt;&lt;pre&gt;If True = blnMinhaVariavel Then&lt;br /&gt; ...&lt;br /&gt;End If&lt;/pre&gt;&lt;br /&gt;Achei incrivel essa colocação. São desenvolvedores como esse que o mundo necessita! Por que?? Vejamos..&lt;br /&gt;&lt;br /&gt;Um IF é usado normalmente da seguinte maneira: If [A] = [B] Then, onde:&lt;br /&gt;&lt;br /&gt;&lt;li&gt;[A] é um valor da qual duvidamos o seu valor&lt;/li&gt;&lt;br /&gt;&lt;li&gt;[B] valor absoluto, da qual não se duvida a sua origem&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;Assim, no caso do "IF True = blnMinhaVariavel", o cara duvida do valor de True! Ele acha mais facil a possiblidade do True estar errado do que a variável que ele criou!. Esse é bom mesmo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-9207497666416739843?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/9207497666416739843/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=9207497666416739843' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/9207497666416739843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/9207497666416739843'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2007/12/confiando-no-cdigo-que-se-escreve.html' title='Confiando No Código Que Se Escreve'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-7190484914075653174</id><published>2007-12-17T15:04:00.001-02:00</published><updated>2007-12-17T15:11:56.540-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>CSS Inherit no IE6</title><content type='html'>A opção 'inherit' para o atributo 'font-size' do style de um &amp;lt;table&amp;gt; não funciona por padrão no IE. Para forçar o funcionamento, atribua '1em'. Isso força o table a herdar o valor do container.&lt;br /&gt;&lt;pre&gt;&amp;lt;div sytle=&amp;quot;font-size: 12px&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;table style=&amp;quot;font-size: &lt;b&gt;1em&lt;/b&gt;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;        Bla Bla Bla&lt;br /&gt;    &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-7190484914075653174?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/7190484914075653174/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=7190484914075653174' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/7190484914075653174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/7190484914075653174'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2007/12/css-inherit-no-ie6.html' title='CSS Inherit no IE6'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-8977312872513246557</id><published>2007-12-06T13:17:00.001-02:00</published><updated>2007-12-06T13:17:56.340-02:00</updated><title type='text'>Levantando Eventos com JavaScript</title><content type='html'>Geralmente quando a gente precisa simular um evento click de um controle a gente trabalha com &lt;i&gt;controle.click()&lt;/i&gt; e isso já é o suficiente. Porém me deparei com o seguinte problema: quando eu atribuia um valor para uma caixa de texto, eu queria que o evento onChange fosse levantado, coisa que não ocorre naturalmente. Depois de muito bater cabeça, achei o seguinte código: &lt;br /&gt;&lt;pre&gt;if (document.all) // IE 5.5+&lt;br /&gt;    controle.fireEvent("onchange"); &lt;br /&gt;else{ // Firefox e outros..&lt;br /&gt;    var changeEvent = window.document.createEvent("HTMLEvents"); &lt;br /&gt;    changeEvent.initEvent("change", false, true); &lt;br /&gt;    controle.dispatchEvent(changeEvent); &lt;br /&gt;};&lt;/pre&gt;&lt;br /&gt;Para mais informações:&lt;br /&gt;&lt;a ref="http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-htmlevents"&gt;&lt;br /&gt;http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-htmlevents&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-8977312872513246557?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/8977312872513246557/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=8977312872513246557' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/8977312872513246557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/8977312872513246557'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2007/12/levantando-eventos-com-javascript.html' title='Levantando Eventos com JavaScript'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-7839667055043843712</id><published>2007-10-16T15:32:00.000-02:00</published><updated>2007-10-16T15:56:56.139-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADO Excel'/><title type='text'>XLS com OleDb</title><content type='html'>É possível abrir um XLS com OleDb, e assim, por exemplo, popular um DataTable. Para isso, a connection string deve ser semelhante à seguinte:&lt;br /&gt;&lt;pre&gt;Provider=Microsoft.Jet.OLEDB.4.0;&lt;br /&gt;Data Source=arquivo.xls;&lt;br /&gt;Extended Properties=Excel 8.0;&lt;/pre&gt;&lt;br /&gt;Porém, como prática da maioria dos programadores que necessita criar em seus sistemas a funcionalidade de exportação para Excel, às vezes será possível encontrar arquivos no formato HTML salvos como XLS. Assim, a connection string apresenta não atende. Para isso, é necessário criar a seguinte:&lt;br /&gt;&lt;pre&gt;Provider=Microsoft.Jet.OLEDB.4.0;&lt;br /&gt;Data Source=arquivo.xls;&lt;br /&gt;Extended Properties=HTML Import;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-7839667055043843712?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/7839667055043843712/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=7839667055043843712' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/7839667055043843712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/7839667055043843712'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2007/10/xls-com-oledb.html' title='XLS com OleDb'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-8354967838732661722</id><published>2007-10-03T17:52:00.000-03:00</published><updated>2008-12-10T13:31:47.735-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLServer'/><title type='text'>Perfis de Horários</title><content type='html'>Há umas duas semanas eu me deparei com um problema interessante, no Virto (sistema que colaboro atualmente). Neste sistema há uma cadastro de horários de expediente do usuário. Há uma configuração de horário para cada usuário, e as tabelas no banco de dados segue a seguinte estrutura:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__TWqedQnZAA/RwQBcq7PwqI/AAAAAAAAC2M/reAK5GP0Z3g/s1600-h/post+horarios.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/__TWqedQnZAA/RwQBcq7PwqI/AAAAAAAAC2M/reAK5GP0Z3g/s400/post+horarios.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5117216668670476962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Os registros da tabela acima informam que o usuario '1' trabalha das 06:00h às 07:00, das 08:00h ás 09:00h e das 09:00h às 10:00h. Observe que neste caso o usuário não trabalha de 07:00h às 09:00h, mas trabalha de 08:00h às 10:00h de acordo com os registros 2 e 3. Isso é o que o sistema permite fazer.&lt;br /&gt;&lt;br /&gt;Isso é horrível a efeito de normalização da base de dados, uma vez que uma empresa pode ter 200 funcionários que trabalhem nas mesmas 8 horas diárias, por exemplo, gerando portanto 1600 registros na base de dados. Foi aí que tiveram a brilhante idéia de criar perfis de horários, e atribuir o perfil de horário ao usuário.&lt;br /&gt;&lt;br /&gt;Até aí nada de difícil. O desafio se apresentou quando foi necessário identificar quais eram os usuários que tinham os horarios iguais, para que pudesse ser criado apenas um perfil. Se assim não fosse, seria necessário criar um perfil para cada usuário&lt;br /&gt;&lt;br /&gt;Existe algumas maneiras práticas pra realizar esta proeza:&lt;br /&gt;1ª maneira: chamar o estagiário pra comparar um a um, sendo esta a maneira mais econômica. &lt;br /&gt;2ª maneira: procurar no google pela ferramenta 'Super Ultra Plus Perfis Agrupator Utility', e torcer para que ele tenha a versão trial 30 dias se você pensa em economizar din-din.&lt;br /&gt;&lt;br /&gt;Bem, segue minha solução:&lt;br /&gt;1) Para cada registro de horário, elevar 2 à hora do dia. Assim, o registro referente ao período de 06:00h às 07:00h traria um registro 2 ^ 6 = 64.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__TWqedQnZAA/RwQBsK7PwrI/AAAAAAAAC2U/iWpXjTcb1MU/s1600-h/post+potencia.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/__TWqedQnZAA/RwQBsK7PwrI/AAAAAAAAC2U/iWpXjTcb1MU/s400/post+potencia.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5117216934958449330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) Soma-se os valores do hora_id, agrupado por usuário.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__TWqedQnZAA/RwQB167PwsI/AAAAAAAAC2c/2l3DkGNoLnQ/s1600-h/post+sum.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/__TWqedQnZAA/RwQB167PwsI/AAAAAAAAC2c/2l3DkGNoLnQ/s400/post+sum.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5117217102462173890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Perceba que na imagem acima os usuários 901 e 244 têm as somas iguais. Isso significa que eles têm o mesmo perfil de horário. Se você for verificar com calma…&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__TWqedQnZAA/RwQB-K7PwtI/AAAAAAAAC2k/nUTp_-Gbj5E/s1600-h/post+usrs.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/__TWqedQnZAA/RwQB-K7PwtI/AAAAAAAAC2k/nUTp_-Gbj5E/s400/post+usrs.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5117217244196094674" /&gt;&lt;/a&gt;&lt;br /&gt;q&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-8354967838732661722?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/8354967838732661722/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=8354967838732661722' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/8354967838732661722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/8354967838732661722'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2007/10/perfis-de-horrios.html' title='Perfis de Horários'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__TWqedQnZAA/RwQBcq7PwqI/AAAAAAAAC2M/reAK5GP0Z3g/s72-c/post+horarios.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-6819495975860207674</id><published>2007-09-03T15:29:00.000-03:00</published><updated>2008-12-10T13:31:48.143-02:00</updated><title type='text'>Crossing Tables</title><content type='html'>Probleminha | Solução do dia: Eu tenho 3 tabelas chamadas VENDEDORES, VENDAS e PRODUTOS, respectivamente populadas da seguinte maneira: &lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/__TWqedQnZAA/RtxS9thZlSI/AAAAAAAACcU/Kzl-fWYIS_0/s400/POST_TABELAS.JPG" alt="" id="BLOGGER_PHOTO_ID_5106047297676481826" border="0" /&gt;&lt;br /&gt;Eu preciso fazer uma query que representasse uma espécie de auditoria, ou seja, retornasse o total de produtos que cada vendedor vendeu. A minha pergunta é: Quantos protudos "Produto A" o vendedor "Miris" vendeu? Tá, e a query pra isso? Vale lembrar que eu não tenho um registro que represente esta informação na tabela de Vendas.&lt;br /&gt;&lt;br /&gt;1ª desilusão (solução que não funciona): usar LEFT JOIN&lt;br /&gt;Normalmente as pessoas pensam que o left funciona, mas não! Uma vez que eu já tenho informações (mesmo que algumas) de todos os vendedores e de todos os produtos, o Left nunca me geraria valores nulos para aqueles que estejam faltando. Mesmo que eu não tivesse, por exemplo, nenhuma venda para o vendedor "Miris" registrada em vendas, o Left me geraria apenas um valor nulo para o vendedor, e não uma pra cada produto que ele não vendeu!&lt;br /&gt;&lt;br /&gt;2ª desilusão: LEFT JOIN de Vendedor com Vendas junta com um RIGHT JOIN com produtos, um GROUP BY de QTDE_VENDIDA, e de quebra um HAVING COUNT(*) = 0, UNION ALL "três pulinhos" e um "são loginho, são loginho, onde está o meu registro?"&lt;br /&gt;Prática mais comum do que parece. Muita gente desesperada pelo prazo pra entregar seus projetos fazem isso.&lt;br /&gt;&lt;br /&gt;Solução da coisa: CROSS JOIN. Este realiza um produto carteziano (para os leigos, este é um tipo produto que não é salvo na nossa tabela de produtos) entre duas tabelas. Assim o commando …FROM VENDEDORES CROSS JOIN PRODUTOS geraria todas as combinações possíveis entre os vendedores e o produto. Para a solução do nosso problema, é só relacionar com a tabela de vendas após isso. A query seria semelhante à essa:&lt;br /&gt;&lt;br /&gt;&lt;PRE&gt;SELECT  VENDR.VENDEDOR,&lt;br /&gt;  PROD.PRODUTO,&lt;br /&gt;  ISNULL(QTDE_VENDIDA, 0)&lt;br /&gt;FROM MIRIS_VENDEDORES VENDR&lt;br /&gt; CROSS JOIN MIRIS_PRODUTOS PROD&lt;br /&gt; LEFT JOIN MIRIS_VENDAS VENDAS &lt;br /&gt;  ON VENDR.VENDEDOR = VENDAS.VENDEDOR &lt;br /&gt;  AND PROD.PRODUTO = VENDAS.PRODUTO&lt;/PRE&gt;&lt;br /&gt;&lt;br /&gt;O resultado da query seria semelhante à este:&lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/__TWqedQnZAA/RtxTQNhZlTI/AAAAAAAACcc/k72VW8E34ak/s400/POST_SOLUCAO.JPG" alt="" id="BLOGGER_PHOTO_ID_5106047615504061746" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-6819495975860207674?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/6819495975860207674/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=6819495975860207674' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/6819495975860207674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/6819495975860207674'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2007/09/crossing-tables.html' title='Crossing Tables'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__TWqedQnZAA/RtxS9thZlSI/AAAAAAAACcU/Kzl-fWYIS_0/s72-c/POST_TABELAS.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-5226698067199708687</id><published>2007-08-23T14:04:00.000-03:00</published><updated>2007-08-24T16:52:49.323-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLServer'/><title type='text'>Arredondamento de Datas</title><content type='html'>Essa semana eu peguei um probleminha interessante: a partir de uma tabela que tinha um campo [HoraInicial] e outro [HoraFinal], eu precisava exportar para uma segunda tabela, porém arredondada a cada 30 minutos, ou seja, em [HoraInicial], caso a hora seja 08:15h, arredondar para 08:00h; Caso seja 08:45, arredondar para 08:30h. Já em [HoraFinal], caso a hora seja 18:15h, arredondar para 18:30h; Caso seja 18:45, arredondar para 19:00h. Outra observação importante é que o campo no banco é do tipo Varchar, com os valores no formato '00:00'.&lt;br /&gt;&lt;br /&gt;Considerando somente a [HoraFinal] eu poderia ter feito o seguinte usando a maneira tradicional:&lt;br /&gt; - Pego os dois últimos caracteres e os dois primeiros e assumo como Minutos e Horas respectivamente;&lt;br /&gt; - Se Minutos &lt; 30 Então eu zero os minutos e +1 à hora; Senão eu assumo minutos = 30.&lt;br /&gt; - Converto para SMALLDATETIME&lt;br /&gt;&lt;br /&gt;O script somente para este campo seria semelhante ao SELECT abaixo:&lt;br /&gt;&lt;pre&gt;DECLARE @HORA AS VARCHAR(5)&lt;br /&gt;BEGIN&lt;br /&gt; SET @HORA = '08:17'&lt;br /&gt; SELECT  CAST(&lt;br /&gt;    CASE WHEN CAST(RIGHT(@HORA, 2) AS INT) &lt; 30 THEN&lt;br /&gt;     '1900-01-01 ' + LEFT(@HORA, 2) + ':30'&lt;br /&gt;    ELSE&lt;br /&gt;     '1900-01-01 ' + CAST(&lt;br /&gt;      CAST(LEFT(@HORA, 2) AS INT) + 1 &lt;br /&gt;     AS VARCHAR(5)) + ':00'&lt;br /&gt;    END &lt;br /&gt;   AS SMALLDATETIME)&lt;br /&gt;END&lt;/pre&gt;&lt;br /&gt;Conclusão: Funciona!!! O Problema seria se ao invés de 30 minutos nós tivessemos que fazer a cada 10 minutos, por exemplo. A quantidade de CASE WHEN cresceria absurdamente, poluindo meu código, pois eu precisaria verificar quando a Hora fosse &lt; 10, 20, 30... Preferi fazer algo um pouquinho mais inteligente.&lt;br /&gt;&lt;br /&gt;Os tipos de dados SMALLDATETIME e DATETIME representam valores númericos (FLOAT) onde a parte inteira representa os dias (partindo de '1900-01-01 00:00:00') e a parte fracionária as horas. Assim, '1900-01-02' representa o inteiro 1, e '12:00:00' representa a metade de um dia, ou seja, '.5'. Ao multiplicar uma fração por 24 é possível recuperar um float representando a qtde de horas ( '08:30' = 8,5 ). Ao multiplicar por 2 é possível fazer com que a parte inteira represente um período de 30 minutos (1/2 hora) ao invés de 60. Se ao invés de 2 fosse por 4, isso faria o inteiro representar um perído de 15 minutos (1/4 hora). O script ficaria semelhante à :&lt;br /&gt;&lt;pre&gt;DECLARE @HORA AS VARCHAR(5)&lt;br /&gt;BEGIN&lt;br /&gt; SET @HORA = '08:17'&lt;br /&gt; SELECT  CAST( CEILING( CAST( &lt;br /&gt;    CAST('1900-01-01 ' + @HORA AS SMALLDATETIME) &lt;br /&gt;   AS FLOAT) * 24 * 2 ) / 2 / 24 AS SMALLDATETIME) HORA_FINAL&lt;br /&gt;END&lt;/pre&gt;&lt;br /&gt;CEILING() é uma função que retorna o inteiro mais próximo acima de um determinado número. Por exemplo, CEILING(15.3) retorna 16. Para a [HoraIncial], é possível usar a função FLOOR(). FLOOR(15.7) retorna 15.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-5226698067199708687?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/5226698067199708687/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=5226698067199708687' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/5226698067199708687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/5226698067199708687'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2007/08/arredondamento-de-datas.html' title='Arredondamento de Datas'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-2544042554448496893</id><published>2007-08-22T15:57:00.000-03:00</published><updated>2007-08-22T16:24:51.567-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLServer'/><title type='text'>Dependência de Objetos no SQL Server</title><content type='html'>Utilize a seguinte query para poder verificar quais objetos referenciam à um determinado objeto no SQL Server:&lt;br /&gt;&lt;pre&gt;DECLARE @TABLE_NAME VARCHAR(255)&lt;br /&gt;BEGIN&lt;br /&gt;SET @TABLE_NAME = 'TBL_XPTO'&lt;br /&gt;&lt;br /&gt;SELECT  FOBJ.NAME OBJETO, FK.*&lt;br /&gt; FROM  SYSFOREIGNKEYS FK,&lt;br /&gt; SYSOBJECTS FOBJ, -- OBJS QUE CONTÉM O CAMPO FK&lt;br /&gt; SYSOBJECTS ROBJ  -- OBJ QUE CONTÉM O CAMPO PK&lt;br /&gt;WHERE  FK.RKEYID = ROBJ.ID&lt;br /&gt; AND FK.FKEYID = FOBJ.ID&lt;br /&gt; AND ROBJ.NAME = @TABLE_NAME&lt;br /&gt;END&lt;/pre&gt;&lt;br /&gt;Altere o valor da variável @TABLE_NAME.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-2544042554448496893?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/2544042554448496893/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=2544042554448496893' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/2544042554448496893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/2544042554448496893'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2007/08/dependncia-de-objetos-no-sql-server.html' title='Dependência de Objetos no SQL Server'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8984831249761052455.post-3536072745109396010</id><published>2007-08-22T13:17:00.000-03:00</published><updated>2007-08-23T08:45:07.293-03:00</updated><title type='text'>Sub New()</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Início&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;        Escreva (" Olá Mundo ! ")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Fim;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Acho q todo programador começa assim....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8984831249761052455-3536072745109396010?l=bytenosso.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bytenosso.blogspot.com/feeds/3536072745109396010/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8984831249761052455&amp;postID=3536072745109396010' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/3536072745109396010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8984831249761052455/posts/default/3536072745109396010'/><link rel='alternate' type='text/html' href='http://bytenosso.blogspot.com/2007/08/begin-escreva-hellow-world-end-acho-q.html' title='Sub New()'/><author><name>Marcus Miris</name><uri>http://www.blogger.com/profile/13700970968753096889</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/marcusmiris/RjC637BHryI/AAAAAAAAAE4/2u2bX1vuV9w/s144/Foto013.jpg'/></author><thr:total>1</thr:total></entry></feed>
