<?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-3058321952258287354</id><updated>2012-01-20T10:10:41.766-08:00</updated><title type='text'>Prova Prática Visual Basic</title><subtitle type='html'>SUCESSO É LANÇAR SEMENTES QUE POSSAM AJUDAR OUTRAS PESSOAS. JOHN MAXWELL</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-4588593932478419851</id><published>2011-03-28T16:59:00.000-07:00</published><updated>2011-03-28T17:55:44.281-07:00</updated><title type='text'>GERANDO O XML DA NFe EM VISUAL BASIC 6</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt; &lt;br /&gt;&lt;p&gt;Olá, Pessoal!! Vamos responder a algumas perguntas acercas de linguagens como Visual Basic 6 e Delphi 7. Sim, para estas duas linguagens se você não tiver nenhum componente pronto para criar o XML de sua NFe, deve fazer todo o código na unha, linha por linha!!! &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Basicamente é nisso que se resume para muitos a criação do XML da NFe eletrônica, já que há grande variações de empresa para empresa - para não dizer de uma área de TI para outra área de TI - em diferentes empresas. Isso também se adequa aos padrões necessários a serem adotados para cada empresa em relação à sua atividade comercial: há certas peculiaridades para o grupo de automotivos que não existem para as empresas de refrigerantes, assim como o XML de uma indústria de componentes eletrônicos diverge de uma indústria de alimentos. Se sua empresa gera mais de dez notas fiscais com quinze itens cada uma por dia fica difícil você usar os aplicativos gratuitos fornecidos pelo site do SPED ou a Sefaz de seu estado.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Antes de mais nada: É CRUCIAL QUE VOCÊ ENTENDA DE XML E QUE TENHA O MANUAL DO CONTRIBUENTE PARA A GERAÇÃO DA NOTA FISCAL ELETRÔNICA! ANTES DE USAR O CÓDIGO ABAIXO, LEIA TODO O MANUAL E ENTENDA CADA TAG A SER GERADA PARA A SUA NOTA FISCAL ELETRÔNICA. TAMBÉM É CRUCIAL QUE VOCÊ ESTEJA PRÓXIMO A ÁREA FISCAL E ENTENDA CADA TAG QUE DEVA SER GERADA PARA A SUA EMPRESA E PARA A ATIVIDADE COMERCIAL ONDE A MESMA ESTÁ INSERIDA. SEM ISSO, SEU TRABALHO SERÁ EM VÃO E VOCÊ DEVERÁ FAZER NOVOS AJUSTES POSTERIORES PARA INSERIR ALGUMA TAG QUE ESQUECEU E É NECESSÁRIA!!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;O exemplo abaixo é um dos muitos existentes na internet e foi extraído do site do VB Mania a título ilustrativo. O código completo não está sendo fornecido porque como todo bom desenvolvedor sabe bolo pronto nunca sai no ponto! &lt;/p&gt;&lt;strong&gt;ATENÇÃO: O código abaixo ficará estranho por estar sendo postado aqui. Os links de XML são realmente mal-interpretados pelo blogger e precisam ser corrigidos linha a linha. Não farei isso aqui. Se desejar, consulte o link para a página onde os mesmos foram postados no VB Mania ou pode baixar do link abaixo (por enquanto!):&lt;/strong&gt; &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;http://www.4shared.com/document/ilBKUDPt/XML_em_VB6.html&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Vamos lá:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;'Abre o Arquivo para Criação do XML &lt;/p&gt;&lt;br /&gt;&lt;p&gt;'---------------------------------- &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Open strArquivo For Output As #1 &lt;/p&gt;&lt;br /&gt;&lt;p&gt;'Cabeçalho do Arquivo &lt;/p&gt;&lt;br /&gt;&lt;p&gt;'-------------------- &lt;/p&gt;With rstCabec .MoveFirst ' Print #1, "ï»¿" 'Chr(239) &amp;amp; Chr(187) &amp;amp; Chr(191) Print #1, "ï»¿" &amp;amp; " Print #1, "&lt;/span&gt; &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;?XML:NAMESPACE PREFIX = [default]  &amp;amp; Chr(34) &amp;amp;  NS = " &amp;amp; Chr(34) &amp;amp; " /&gt;&lt;nfe xmlns=" &amp;amp; Chr(34) &amp;amp; "&gt;&lt;span style="font-family:trebuchet ms;"&gt;'Chave da NFe '-------------------- Print #1, "&lt;/span&gt;&lt;infnfe id=" &amp;amp; Chr(34) &amp;amp; strChaveNFe &amp;amp; Chr(34) &amp;amp; " versao=" &amp;amp; Chr(34) &amp;amp; "&gt;&lt;span style="font-family:trebuchet ms;"&gt; 'Cabeçalho da NFe '------------------- Print #1, "&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;ide&gt;" Print #1, " &lt;cuf&gt;" &amp;amp; .Fields("xIdUF").Value &amp;amp; "&lt;/cuf&gt;" Print #1, " &lt;cnf&gt;" &amp;amp; "0" &amp;amp; .Fields("xRandomico").Value &amp;amp; "&lt;/cnf&gt;" Print #1, " &lt;natop&gt;" &amp;amp; UCase(.Fields("xNatureza").Value) &amp;amp; "&lt;/natop&gt;" Print #1, " &lt;indpag&gt;" &amp;amp; .Fields("xFormaPagto").Value &amp;amp; "&lt;/indpag&gt;" Print #1, " &lt;mod&gt;" &amp;amp; .Fields("xModelo").Value &amp;amp; "&lt;/mod&gt;" Print #1, " &lt;serie&gt;" &amp;amp; .Fields("xSerie").Value &amp;amp; "&lt;/serie&gt;" Print #1, " &lt;nnf&gt;" &amp;amp; .Fields("xidNFe").Value &amp;amp; "&lt;/nnf&gt;" Print #1, " &lt;demi&gt;" &amp;amp; .Fields("xDataEntradaSaida").Value &amp;amp; "&lt;/demi&gt;" Print #1, " &lt;dsaient&gt;" &amp;amp; .Fields("xDataEntradaSaida").Value &amp;amp; "&lt;/dsaient&gt;" Print #1, " &lt;tpnf&gt;" &amp;amp; .Fields("xIdTipoNF").Value &amp;amp; "&lt;/tpnf&gt;" Print #1, " &lt;cmunfg&gt;" &amp;amp; .Fields("xIdMunicipio").Value &amp;amp; "&lt;/cmunfg&gt;" Print #1, " &lt;tpimp&gt;" &amp;amp; 1 &amp;amp; "&lt;/tpimp&gt;" Print #1, " &lt;tpemis&gt;" &amp;amp; .Fields("xTipoEmissao").Value &amp;amp; "&lt;/tpemis&gt;" Print #1, " &lt;cdv&gt;" &amp;amp; Right(strChaveNFe, 1) &amp;amp; "&lt;/cdv&gt;" Print #1, " &lt;tpamb&gt;" &amp;amp; "2" &amp;amp; "&lt;/tpamb&gt;" Print #1, " &lt;finnfe&gt;" &amp;amp; .Fields("xFinalidade").Value &amp;amp; "&lt;/finnfe&gt;" Print #1, " &lt;procemi&gt;" &amp;amp; "0" &amp;amp; "&lt;/procemi&gt;" Print #1, " &lt;verproc&gt;" &amp;amp; "1.10" &amp;amp; "&lt;/verproc&gt;" Print #1, "&lt;/ide&gt;" '---------------------------------------------------------------------------------------------------- 'Dados Emitente '---------------------------------------------------------------------------------------------------- Print #1, "&lt;/span&gt;&lt;emit&gt;&lt;span style="font-family:trebuchet ms;"&gt;" Print #1, " &lt;cnpj&gt;" &amp;amp; .Fields("xCNPJ") &amp;amp; "&lt;/cnpj&gt;" Print #1, " &lt;xnome&gt;" &amp;amp; .Fields("xEmitRazaoSocial").Value &amp;amp; "&lt;/xnome&gt;" Print #1, " &lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;enderemit&gt;" Print #1, " &lt;xlgr&gt;" &amp;amp; .Fields("xEmitLogradouro").Value &amp;amp; "&lt;/xlgr&gt;" Print #1, " &lt;nro&gt;" &amp;amp; .Fields("xEmitNumero").Value &amp;amp; "&lt;/nro&gt;" Print #1, " &lt;xbairro&gt;" &amp;amp; .Fields("xEmitBairro").Value &amp;amp; "&lt;/xbairro&gt;" Print #1, " &lt;cmun&gt;" &amp;amp; .Fields("xEmitIdMunicipio").Value &amp;amp; "&lt;/cmun&gt;" Print #1, " &lt;xmun&gt;" &amp;amp; .Fields("xEmitMunicipio").Value &amp;amp; "&lt;/xmun&gt;" Print #1, " &lt;uf&gt;" &amp;amp; .Fields("xEmpresaUF").Value &amp;amp; "&lt;/uf&gt;" Print #1, " &lt;cep&gt;" &amp;amp; .Fields("xEmitCEP").Value &amp;amp; "&lt;/cep&gt;" Print #1, " &lt;cpais&gt;" &amp;amp; "1058" &amp;amp; "&lt;/cpais&gt;" Print #1, " &lt;xpais&gt;" &amp;amp; "Brasil" &amp;amp; "&lt;/xpais&gt;" Print #1, " &lt;fone&gt;" &amp;amp; .Fields("xEmitTelefone").Value &amp;amp; "&lt;/fone&gt;" Print #1, " &lt;/enderemit&gt;" Print #1, " &lt;ie&gt;" &amp;amp; .Fields("xEmitIE").Value &amp;amp; "&lt;/ie&gt;" Print #1, "&lt;/span&gt;&lt;/emit&gt;&lt;span style="font-family:trebuchet ms;"&gt;" '---------------------------------------------------------------------------------------------------- 'Dados Destinatario '---------------------------------------------------------------------------------------------------- Print #1, "&lt;/span&gt;&lt;dest&gt;&lt;span style="font-family:trebuchet ms;"&gt;" Print #1, " &lt;cnpj&gt;" &amp;amp; .Fields("xCNPJ") &amp;amp; "&lt;/cnpj&gt;" Print #1, " &lt;xnome&gt;" &amp;amp; .Fields("xDestRazaoSocial").Value &amp;amp; "&lt;/xnome&gt;" Print #1, " &lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;enderdest&gt;" Print #1, " &lt;xlgr&gt;" &amp;amp; .Fields("xDestLogradouro").Value &amp;amp; "&lt;/xlgr&gt;" Print #1, " &lt;nro&gt;" &amp;amp; .Fields("xDestNumero").Value &amp;amp; "&lt;/nro&gt;" If Len(.Fields("xDestComplemento").Value) &amp;gt; 0 Then Print #1, " &lt;xcpl&gt;" &amp;amp; .Fields("xDestComplemento").Value &amp;amp; "&lt;/xcpl&gt;" End If Print #1, " &lt;xbairro&gt;" &amp;amp; .Fields("xDestBairro").Value &amp;amp; "&lt;/xbairro&gt;" Print #1, " &lt;cmun&gt;" &amp;amp; .Fields("xDestIdMunicipio").Value &amp;amp; "&lt;/cmun&gt;" Print #1, " &lt;xmun&gt;" &amp;amp; .Fields("xDestMunicipio").Value &amp;amp; "&lt;/xmun&gt;" Print #1, " &lt;uf&gt;" &amp;amp; .Fields("xDestUF").Value &amp;amp; "&lt;/uf&gt;" Print #1, " &lt;cep&gt;" &amp;amp; .Fields("xDestCEP").Value &amp;amp; "&lt;/cep&gt;" Print #1, " &lt;cpais&gt;" &amp;amp; .Fields("xDestIdPais") &amp;amp; "&lt;/cpais&gt;" Print #1, " &lt;xpais&gt;" &amp;amp; .Fields("xDestPais") &amp;amp; "&lt;/xpais&gt;" Print #1, " &lt;fone&gt;" &amp;amp; .Fields("xDestTelefone").Value &amp;amp; "&lt;/fone&gt;" Print #1, " &lt;/enderdest&gt;" Print #1, " &lt;ie&gt;" &amp;amp; .Fields("xDestIE").Value &amp;amp; "&lt;/ie&gt;" If Len(.Fields("xDestSuframa").Value) &amp;gt; 0 Then Print #1, " &lt;is&gt;" &amp;amp; .Fields("xDestSuframa").Value &amp;amp; "&lt;/is&gt;" End If If Len(.Fields("xDestCNAE").Value) &amp;gt; 0 Then Print #1, " &lt;cnae&gt;" &amp;amp; .Fields("xDestCNAE").Value &amp;amp; "&lt;/cnae&gt;" End If Print #1, "&lt;/span&gt;&lt;/dest&gt;&lt;span style="font-family:trebuchet ms;"&gt;" '---------------------------------------------------------------------------------------------------- End With 'Dados dos Produtos '------------------ With rstItem .MoveFirst Do While .EOF = False DoEvents Print #1, "&lt;/span&gt;&lt;det nitem=" &amp;amp; Chr(34) &amp;amp; .AbsolutePosition &amp;amp; Chr(34) &amp;amp; "&gt;&lt;span style="font-family:trebuchet ms;"&gt;" Print #1, " &lt;/span&gt;&lt;prod&gt;&lt;span style="font-family:trebuchet ms;"&gt;" Print #1, " &lt;cprod&gt;" &amp;amp; .Fields("xCodigo").Value &amp;amp; "&lt;/cprod&gt;" Print #1, " &lt;cean&gt;" &amp;amp; .Fields("xCodigoEAN").Value &amp;amp; "&lt;/cean&gt;" Print #1, " &lt;xprod&gt;" &amp;amp; .Fields("xDescrProduto").Value &amp;amp; "&lt;/xprod&gt;" If Len(Replace(.Fields("xCodigoNCM").Value, ".", "")) &amp;gt; 0 Then Print #1, " &lt;ncm&gt;" &amp;amp; .Fields("xCodigoNCM").Value &amp;amp; "&lt;/ncm&gt;" End If Print #1, " &lt;genero&gt;" &amp;amp; "0" &amp;amp; "&lt;/genero&gt;" Print #1, " &lt;cfop&gt;" &amp;amp; .Fields("xCFOP").Value &amp;amp; "&lt;/cfop&gt;" Print #1, " &lt;ucom&gt;" &amp;amp; .Fields("xUnidade").Value &amp;amp; "&lt;/ucom&gt;" Print #1, " &lt;qcom&gt;" &amp;amp; .Fields("xQuantidade").Value &amp;amp; "&lt;/qcom&gt;" Print #1, " &lt;vuncom&gt;" &amp;amp; .Fields("xPrecoUnitario").Value &amp;amp; "&lt;/vuncom&gt;" Print #1, " &lt;vprod&gt;" &amp;amp; .Fields("xTotalProduto").Value &amp;amp; "&lt;/vprod&gt;" Print #1, " &lt;ceantrib&gt;" &amp;amp; .Fields("xCodigoEAN").Value &amp;amp; "&lt;/ceantrib&gt;" Print #1, " &lt;utrib&gt;" &amp;amp; .Fields("xUnidade").Value &amp;amp; "&lt;/utrib&gt;" Print #1, " &lt;qtrib&gt;" &amp;amp; .Fields("xQuantidade").Value &amp;amp; "&lt;/qtrib&gt;" Print #1, " &lt;vuntrib&gt;" &amp;amp; .Fields("xPrecoUnitario").Value &amp;amp; "&lt;/vuntrib&gt;" 'Dados da Importação '-------------------- If Len(rstCabec.Fields("xDINumero").Value) &amp;gt; 0 Then Print #1, " &lt;/span&gt;&lt;di&gt;&lt;span style="font-family:trebuchet ms;"&gt;" Print #1, " &lt;ndi&gt;" &amp;amp; rstCabec.Fields("xDINumero").Value &amp;amp; "&lt;/ndi&gt;" ' &amp;amp; .Fields("xNumeroDI") &amp;amp; "" Print #1, " &lt;ddi&gt;" &amp;amp; rstCabec.Fields("xDIDataRegistro").Value &amp;amp; "&lt;/ddi&gt;" ' &amp;amp; Format(.Fields("xDataRegistroDI"), "YYYY-mm-dd") &amp;amp; "" Print #1, " &lt;xlocdesemb&gt;" &amp;amp; rstCabec.Fields("xDILocalDesembaraco").Value &amp;amp; "&lt;/xlocdesemb&gt;" ' &amp;amp; .Fields("xLocalDesemb") &amp;amp; "" Print #1, " &lt;ufdesemb&gt;" &amp;amp; rstCabec.Fields("xDIUFDesembaraco").Value &amp;amp; "&lt;/ufdesemb&gt;" ' &amp;amp; .Fields("xUFDesemb") &amp;amp; "" Print #1, " &lt;ddesemb&gt;" &amp;amp; rstCabec.Fields("xDIDataDesembaraco").Value &amp;amp; "&lt;/ddesemb&gt;" ' &amp;amp; Format(.Fields("xDataDesemb"), "YYYY-mm-dd") &amp;amp; "" Print #1, " &lt;cexportador&gt;" &amp;amp; rstCabec.Fields("xDICodExportador").Value &amp;amp; "&lt;/cexportador&gt;" ' &amp;amp; rstCabec.Fields("xCodExportador") &amp;amp; "" If Len(rstCabec.Fields("xNumeroAD").Value) &amp;gt; 0 Then Print #1, " &lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;adi&gt;" Print #1, " &lt;nadicao&gt;" &amp;amp; rstCabec.Fields("xNumeroAD").Value &amp;amp; "&lt;/nadicao&gt;" ' &amp;amp; .Fields("xNumeroAdicao").Value &amp;amp; "" Print #1, " &lt;nseqadic&gt;" &amp;amp; rstCabec.Fields("xItemAD").Value &amp;amp; "&lt;/nseqadic&gt;" '&amp;amp; .Fields("xSequenciaAdicao").Value &amp;amp; "" Print #1, " &lt;cfabricante&gt;" &amp;amp; rstCabec.Fields("xFabricanteAD").Value &amp;amp; "&lt;/cfabricante&gt;" '&amp;amp; .Fields("xCodFabricante").Value &amp;amp; "" 'Verifica se tem desconto na DI '------------------------------ If rstCabec.Fields("xDescontoAD") &amp;gt; 0 Then Print #1, " &lt;vdescdi&gt;" &amp;amp; Replace(Format(rstCabec.Fields("xDescontoAD"), "0.00"), ",", ".") &amp;amp; "&lt;/vdescdi&gt;" End If Print #1, " &lt;/adi&gt;" '------------------------------ End If Print #1, " &lt;/span&gt;&lt;/di&gt;&lt;span style="font-family:trebuchet ms;"&gt;" End If Print #1, " &lt;/span&gt;&lt;/prod&gt;&lt;span style="font-family:trebuchet ms;"&gt;" '-------------------------------------------------------------------------------------------------------- 'Destacamento dos Impostos '------------------------- Print #1, " &lt;/span&gt;&lt;imposto&gt;&lt;span style="font-family:trebuchet ms;"&gt;" 'ICMS '--------- Print #1, " &lt;/span&gt;&lt;icms&gt;&lt;span style="font-family:trebuchet ms;"&gt;" Print #1, " &lt;/span&gt;&lt;icms"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Print #1, " &lt;orig&gt;" &amp;amp; rstCabec.Fields("xICMSOrigem") &amp;amp; "&lt;/orig&gt;" Print #1, " &lt;cst&gt;" &amp;amp; .Fields("xSitTrib").Value &amp;amp; "&lt;/cst&gt;" If .Fields("xSitTrib").Value = "00" Then 'Tributada Integralmente Print #1, " &lt;modbc&gt;" &amp;amp; rstCabec.Fields("xICMS_Modalidade").Value &amp;amp; "&lt;/modbc&gt;" Print #1, " &lt;/span&gt;&lt;vbc&gt;&lt;span style="font-family:trebuchet ms;"&gt;" &amp;amp; rstCabec.Fields("xI &lt;strong&gt;&lt;br /&gt;&lt;p&gt;O código acima pode também ser encontrado em:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/strong&gt;http://www.vbmania.com.br/pages/index.php?varModulo=Forum&amp;amp;varMethod=abrir&amp;amp;varID=342709 &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Sucesso mais uma vez a todos!!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/vbc&gt;&lt;/icms"&gt;&lt;/icms&gt;&lt;/imposto&gt;&lt;/det&gt;&lt;/infnfe&gt;&lt;/nfe&gt;&lt;br /&gt;&lt;p&gt;&lt;nfe xmlns=" &amp;amp; Chr(34) &amp;amp; "&gt;&lt;infnfe versao=" &amp;amp; Chr(34) &amp;amp; "&gt;&lt;det nitem=" &amp;amp; Chr(34) &amp;amp; .AbsolutePosition &amp;amp; Chr(34) &amp;amp; "&gt;&lt;imposto&gt;&lt;icms&gt;&lt;icms"&gt;&lt;vbc&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/vbc&gt;&lt;/icms"&gt;&lt;/icms&gt;&lt;/imposto&gt;&lt;/det&gt;&lt;/infnfe&gt;&lt;/nfe&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;nfe xmlns=" &amp;amp; Chr(34) &amp;amp; "&gt;&lt;infnfe versao=" &amp;amp; Chr(34) &amp;amp; "&gt;&lt;det nitem=" &amp;amp; Chr(34) &amp;amp; .AbsolutePosition &amp;amp; Chr(34) &amp;amp; "&gt;&lt;imposto&gt;&lt;icms&gt;&lt;icms"&gt;&lt;vbc&gt;&lt;span style="font-family:trebuchet ms;"&gt;By&lt;/span&gt;&lt;/vbc&gt;&lt;/icms"&gt;&lt;/icms&gt;&lt;/imposto&gt;&lt;/det&gt;&lt;/infnfe&gt;&lt;/nfe&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;nfe xmlns=" &amp;amp; Chr(34) &amp;amp; "&gt;&lt;infnfe versao=" &amp;amp; Chr(34) &amp;amp; "&gt;&lt;det nitem=" &amp;amp; Chr(34) &amp;amp; .AbsolutePosition &amp;amp; Chr(34) &amp;amp; "&gt;&lt;imposto&gt;&lt;icms&gt;&lt;icms"&gt;&lt;vbc&gt;&lt;span style="font-family:trebuchet ms;"&gt;Leonardo Metelys&lt;/span&gt;&lt;/vbc&gt;&lt;/icms"&gt;&lt;/icms&gt;&lt;/imposto&gt;&lt;/det&gt;&lt;/infnfe&gt;&lt;/nfe&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;nfe xmlns=" &amp;amp; Chr(34) &amp;amp; "&gt;&lt;infnfe versao=" &amp;amp; Chr(34) &amp;amp; "&gt;&lt;det nitem=" &amp;amp; Chr(34) &amp;amp; .AbsolutePosition &amp;amp; Chr(34) &amp;amp; "&gt;&lt;imposto&gt;&lt;icms&gt;&lt;icms"&gt;&lt;vbc&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;a href="mailto:leo_florindo@hotmail.com"&gt;leo_florindo@hotmail.com&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;/vbc&gt;&lt;/icms"&gt;&lt;/icms&gt;&lt;/imposto&gt;&lt;/det&gt;&lt;/infnfe&gt;&lt;/nfe&gt;&lt;nfe xmlns=" &amp;amp; Chr(34) &amp;amp; "&gt;&lt;/nfe&gt;&lt;nfe xmlns=" &amp;amp; Chr(34) &amp;amp; "&gt;&lt;/nfe&gt;&lt;nfe xmlns=" &amp;amp; Chr(34) &amp;amp; "&gt;&lt;/nfe&gt;&lt;nfe xmlns=" &amp;amp; Chr(34) &amp;amp; "&gt;&lt;/nfe&gt;&lt;/nfe&gt;&lt;/nfe&gt;&lt;/nfe&gt;&lt;/nfe&gt;&lt;/nfe&gt;&lt;/nfe&gt;&lt;/nfe&gt;&lt;/nfe&gt;&lt;/nfe&gt;&lt;/nfe&gt;&lt;/nfe&gt;&lt;/nfe&gt;&lt;/nfe&gt;&lt;/nfe&gt;&lt;/nfe&gt;&lt;/nfe&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-4588593932478419851?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/4588593932478419851/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=4588593932478419851' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/4588593932478419851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/4588593932478419851'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2011/03/gerando-o-xml-da-nfe-em-visual-basic-6.html' title='GERANDO O XML DA NFe EM VISUAL BASIC 6'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-119328500059043677</id><published>2011-03-15T18:22:00.000-07:00</published><updated>2011-03-15T18:52:13.733-07:00</updated><title type='text'>DANFE: LINHA DE CHAMADA &amp; UTILIDADES</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Olá, pessoal!&lt;br /&gt;&lt;br /&gt;Ao longo dos últimos dois anos este pequeno projeto sofreu muitas melhorias que evoluíram com a necessidade daqueles que necessitavam desta parte do longo projeto da NF-e.&lt;br /&gt;&lt;br /&gt;Aqui farei um resumo das melhorias de implementação constantes neste projeto de DANFE, que deve ser comum a maioria dos projetos disponíveis no mercado. O diferencial deste projeto é que esta venda não é destinada ao consumidor final, mas a desenvolvedores que necessitam de conhecimentos sobre a Nf-e eletrônica e necessitam desenvolver uma solução mais própria do que um pacote fechado possa oferecer - por isso coloco à venda os fontes do aplicativo.&lt;br /&gt;&lt;br /&gt;A versatilidade desse aplicativo também colabora para o desenvolvimento de outros possívels utilitários para a Nf-e. Por exemplo, o mesmo código-fonte utilizado para a leitura do XML na geração da DANFE pode ser reaproveitado para criar-se um módulo de leitura para qualquer arquivo XML de nota fiscal eletrônica o que facilitará no futuro a entrada de notas fiscais em sua base de dados. Com pequenas alterações, você conseguirá desenvolver um bom leitor de arquivos XML de notas fiscais eletrônicas.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Os fontes de minha DANFE ficaram mais fáceis de manipular com a criação de um aplicativo em LINHA DE CHAMADA, que permite que esta DANFE possa ser utilizada com outras linguagens de programação, como DELPHI, C# ou Visual Basic 6.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A chamada do aplicativo é como mostrado abaixo:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Danfechamada CaminhoXML CaminhoPDF NomePDF CaminhoLogotipo&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Onde:&lt;br /&gt;CaminhoXML -&gt; Indica a pasta onde se encontra o arquivo XML a ser fornecido para a geração da DANFE&lt;br /&gt;CaminhoPDF -&gt; Indica o caminho onde deve ser gravado o arquivo PDF a ser gerado&lt;br /&gt;NomePDF -&gt; Indica o nome do arquivo PDF a ser gerado&lt;br /&gt;CaminhoLogotipo -&gt; Indica o caminho e o nome do logotipo que devem ser inseridos na impressão da DANFE&lt;br /&gt;&lt;br /&gt;Exemplo:&lt;br /&gt;&lt;br /&gt;No Iniciar -&gt; Executar do Windows XP ou Windows 7:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;C:\Nfe\DanfeChamada.exe C:\Nfe\Nfe.xml C:\Nfe Danfe123 C:\Nfe\Imagem1.jpg&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;No &lt;strong&gt;CMD.EXE:&lt;br /&gt;&lt;/strong&gt;Mude para a pasta c:\nfe. Em seguida, digite a linha conforme abaixo:&lt;br /&gt;Danfechamada c:\nfe\nfe.xml c:\nfe\ notadanfe2.pdf c:\nfe\imagem2.jpg&lt;br /&gt;Troque, por exemplo, os parâmetros para a gravação do pdf e a imagem para a imagem1.jpg.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Recentemente fiz a venda somente do aplicativo compilado e o mesmo também pode estar à disposição, desde que você siga todos os passos para sua utilização no momento da compra. Contudo, isso me isenta de erros que possam vir a ocorrer devido a não-aquisição do código-fonte do projeto. A limitação imposta a este tipo de aquisição é descrita no momento da compra por parte do cliente.&lt;br /&gt;&lt;br /&gt;No código-fonte há dois modos de impressão da DANFE. Um que diz respeito a DANFE somente com uma página e o outro que diz respeito a impressão da DANFE COMPLEMENTAR com mais de doze itens. O código da DANFE COMPLEMENTAR geralmente estará comentando no interior do código-fonte. Caso deseje imprimir a DANFE COMPLEMENTAR deve descomentar as linhas que geram o relatório e comentar as que geram a primeira página da DANFE. Geralmente tenho orientado que se criem dois botões, um que imprime a capa da DANFE (a primeira página) e outro que, caso a DANFE possua mais de doze itens habilite o botão e imprima a DANFE EM MODO COMPLEMENTAR.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Dependências do aplicativo:&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;1. Net Framework 3.5&lt;br /&gt;2. Crystal Reports Basic for Visual Studio 2008 (x86,x64)&lt;br /&gt;3. Microsoft Visual Studio 2008 Reportr Viewer&lt;br /&gt;4. SQL Server Compact3.5&lt;br /&gt;5. Visual Studio Tools for the Office system 3.0 Runtime&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Os &lt;strong&gt;conhecimentos necessários&lt;/strong&gt; para a utilização do código-fonte:&lt;br /&gt;&lt;br /&gt;1) Conhecimentos em Vb.NET 2008&lt;br /&gt;2) Conhecimentos em Crystal Reports&lt;br /&gt;3) Conhecimentos de instalação de requisitos de aplicativos. Como um bom técnico de suporte e um bom desenvolvedor sabem isso é&lt;br /&gt;estritamente necessário para desenvolvedores que entendam a diferente entre instalar uma aplicação em um ambiente cliente-servidor&lt;br /&gt;e um ambiente de servidor. Você deve compreender como criar um pacote de instalação do código-fonte do aplicativo e instalar o mesmo&lt;br /&gt;com sucesso em uma máquina-cliente bem como entender que este mesmo pacote não é o mesmo para uma implementação em um servidor.&lt;br /&gt;&lt;br /&gt;Abril pode ser o último prazo para adoção da nova NFe.&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;Sucesso a todos!!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Trebuchet MS;"&gt;By&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Trebuchet MS;"&gt;Leonardo Metelys&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;a href="mailto:leo_florindo@hotmail.com"&gt;leo_florindo@hotmail.com&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-119328500059043677?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/119328500059043677/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=119328500059043677' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/119328500059043677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/119328500059043677'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2011/03/danfe-linha-de-chamada-utilidades.html' title='DANFE: LINHA DE CHAMADA &amp; UTILIDADES'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-724359524275417387</id><published>2010-12-21T05:11:00.000-08:00</published><updated>2010-12-22T05:12:07.369-08:00</updated><title type='text'>DANFE EM VB.NET 2008: NOVAS MELHORIAS</title><content type='html'>&lt;strong&gt;&lt;span style="font-family:trebuchet ms;"&gt;Seguem abaixo algumas da novas melhorias implementadas no projeto da DANFE em VB.NET 2008:&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;1 - Geração da DANFE em formato PDF com a indicação de uma pasta para &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;gravação da mesma &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;2 - Inclusão do logotipo da empresa na chamada da função de DANFE com a indicação do caminho onde esta imagem se encontra&lt;br /&gt;3 - DANFE gerada em modo de uma página e com os complementos de itens, caso o número de itens extrapole a primeira página da DANFE&lt;br /&gt;4 - Facilidade no manuseio do código-fonte, totalmente escrito em VB.NET e relatório gerado em Crystal Reports totalmente adaptável a outras&lt;br /&gt;aplicações caso você deseje utilizar o código-fonte do relatório com alguma outra linguagem de programação - alguns clientes conseguiram&lt;br /&gt;realizar isso com sucesso em mais de uma de suas aplicações.&lt;br /&gt;5 - O código-fonte pode ser empregado de vários formas inclusive com linha de chamada para que você possa utilizá-lo com outras linguagens -&lt;br /&gt;como Delphi 7 ou Visual Basic 6, por exemplo - sem alterar a linguagem nativa do mesmo que é em VB.NET. A versatilidade do VB.NET permite&lt;br /&gt;que você utilize o código-fonte de váras maneiras e em várias situações.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Esta DANFE já está padronizada para o Manual 4.01 da Nfe eletrônica. O código XML a ser lido pode ser tanto o 2.0 quanto o antigo. &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Devido a má-fé de algumas pessoas não estou mais disponibilizando testes do aplicativo.&lt;br /&gt;Em minhas últimas experiências consegui comprovar que os que receberam os arquivos estavam trabalhando com ofuscagem na&lt;br /&gt;tentativa de visualizar o código-fonte. Também tive problemas após realizar uma venda com um cliente de uma loja de software&lt;br /&gt;que alegou problemas de instalação simplesmente para não pagar a última parcela acordada e que já está utilizando a Danfe em seus aplicativos.&lt;/span&gt; &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Também não há parceria com qualquer loja de software ou empresa de software para a venda do código-fonte desta DANFE. Se você adquirir este código-fonte das mãos de terceiros saiba que não há parceriais existentes com qualquer parceiro. A venda destes fontes está sendo realizada a baixo custo com o objetivo de que também o conhecimento seja expandido para mais pessoas e não com o objetivo principal de ganho financeiro que faz com que muitas pessoas enganem e mintam acerca do trabalho de outras pessoas.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Por tudo isso, lamento que o mau-comportamento induzido de alguns prejudiquem o bom trabalho adquirido por outros.&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Os conhecimentos necessários para a utilização do código-fonte:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;1) Conhecimentos em Vb.NET 2008&lt;br /&gt;2) Conhecimentos em Crystal Reports&lt;br /&gt;3) Conhecimentos de instalação de requisitos de aplicativos. Como um bom técnico de suporte e um bom desenvolvedor sabem isso é&lt;br /&gt;estritamente necessário para desenvolvedores que entendam a diferente entre instalar uma aplicação em um ambiente cliente-servidor&lt;br /&gt;e um ambiente de servidor. Você deve compreender como criar um pacote de instalação do código-fonte do aplicativo e instalar o mesmo&lt;br /&gt;com sucesso em uma máquina-cliente bem como entender que este mesmo pacote não é o mesmo para uma implementação em um servidor.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Lembramos que este produto requer conhecimentos tecnológicos específicos cujo o entendimento é necessário para que o mesmo possa ser manipulado adequadamente.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;O preço para a &lt;strong&gt;aquisição da DANFE com o código-fonte incluído&lt;/strong&gt; é de &lt;strong&gt;R$ 350,00&lt;/strong&gt; (&lt;strong&gt;Trezentos e cinquenta reais&lt;/strong&gt;).&lt;br /&gt;&lt;br /&gt;Caso deseje adquirir os fontes, &lt;strong&gt;faça o depósito em dinheiro&lt;/strong&gt; na seguinte conta corrente:&lt;br /&gt;&lt;br /&gt;Banco: &lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;Bradesco S/A&lt;br /&gt;&lt;/strong&gt;Agência: &lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;2690-5&lt;br /&gt;&lt;/strong&gt;Conta Corrente: &lt;strong&gt;10414-0&lt;/strong&gt;&lt;br /&gt;Nome do favorecido:&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt; Manoel Leonardo Metelys Florindo&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;O código-fonte será enviado a você compactado em winrar com senha após a confirmação de seu depósito. Peço que, se possível, enviem-me uma cópia em PDF de seu comprovante de depósito a fim de que o processo possa ser agilizado para o e-mail&lt;strong&gt; &lt;/strong&gt;&lt;a href="mailto:leo_florindo@hotmail.com"&gt;&lt;strong&gt;leo_florindo@hotmail.com&lt;/strong&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-724359524275417387?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/724359524275417387/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=724359524275417387' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/724359524275417387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/724359524275417387'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2010/12/danfe-em-vbnet-2008-novas-melhorias.html' title='DANFE EM VB.NET 2008: NOVAS MELHORIAS'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-8117141026287150193</id><published>2010-09-29T10:21:00.000-07:00</published><updated>2010-09-29T10:43:19.974-07:00</updated><title type='text'>GERAR A DANFE DA NF-e em PDF VIA CÓDIGO-FONTE</title><content type='html'>Olá, amigos!!&lt;br /&gt;&lt;br /&gt;Para aqueles que já adquiriram o pacote da DANFE aqui comigo, eis aqui mais um quitute para ser acrescentado ao código-fonte da mesma: A geração da DANFE no formato PDF via código-fonte!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para quem já possui o projeto, basta adicionar as linhas abaixo para que o próprio Crystal Reports realize a geração de uma cópia da DANFE no formato em PDF via código-fonte quando a DANFE está sendo processada.&lt;br /&gt;&lt;br /&gt;O código abaixo cria uma cópia da DANFE gerada salvando-a na pasta indicada &lt;br /&gt;no formato PDF, evitando assim qualquer interação do usuário para que uma cópia em PDF da DANFE seja criada - basta acessar a pasta de trabalho que uma cópia da DANFE gerada estará lá no formato em PDF, prontinha para ser enviada aos clientes ou fornecedores!!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Agora, em que posição colocar este código deixo por conta dos desenvolvedores!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; 'Data: 29/09/2010 10:30h&lt;br /&gt; 'Geração da DANFE em formato PDF&lt;br /&gt;        Dim cryRpt As New ReportDocument&lt;br /&gt;        Dim CrExportOptions As ExportOptions&lt;br /&gt;        Dim CrDiskFileDestinationOptions As New  _&lt;br /&gt;        DiskFileDestinationOptions()&lt;br /&gt;        Dim CrFormatTypeOptions As New PdfRtfWordFormatOptions()&lt;br /&gt;        CrDiskFileDestinationOptions.DiskFileName = "c:\Nfe\NotaNfe.pdf"&lt;br /&gt;        'CrExportOptions = cryRpt.ExportOptions&lt;br /&gt;        CrExportOptions = myRelatorio.ExportOptions&lt;br /&gt;&lt;br /&gt;        With CrExportOptions&lt;br /&gt;            .ExportDestinationType = ExportDestinationType.DiskFile&lt;br /&gt;            .ExportFormatType = ExportFormatType.PortableDocFormat&lt;br /&gt;            .DestinationOptions = CrDiskFileDestinationOptions&lt;br /&gt;            .FormatOptions = CrFormatTypeOptions&lt;br /&gt;        End With&lt;br /&gt;        myRelatorio.Export()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sucesso a todos em 2010!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;By&lt;br /&gt;Leonardo Metelys&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-8117141026287150193?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/8117141026287150193/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=8117141026287150193' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/8117141026287150193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/8117141026287150193'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2010/09/gerar-danfe-da-nf-e-em-pdf.html' title='GERAR A DANFE DA NF-e em PDF VIA CÓDIGO-FONTE'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-2742082270870759359</id><published>2010-07-20T10:03:00.001-07:00</published><updated>2010-07-20T10:06:42.470-07:00</updated><title type='text'>FATORAÇÃO EM DEV C++</title><content type='html'>Aos alunos de plantão, aqui vai um algoritmo simples de matemática que muitas vezes podem pintar em provinhas básicas de sala de aula.&lt;br /&gt;&lt;br /&gt;O código está em DEV C++ e pode ser utilizado livremente. &lt;br /&gt;&lt;br /&gt;Trata-se de C++ puro!&lt;br /&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;int Fatoracao(int i)&lt;br /&gt;{&lt;br /&gt;    int x;&lt;br /&gt;    int y;&lt;br /&gt;    int fatorar;&lt;br /&gt;    printf ("Estamos na funcao Fatoracao().\n");&lt;br /&gt;    x = i;&lt;br /&gt;    y = 1;&lt;br /&gt;    fatorar = 1;&lt;br /&gt;    &lt;br /&gt;    if (x == 1 )// se o número for 1, o fatorial é 1&lt;br /&gt;    {&lt;br /&gt;      fatorar = 1;&lt;br /&gt;      goto saida;             &lt;br /&gt;    }  &lt;br /&gt;    &lt;br /&gt;      &lt;br /&gt;    fatorar =0;     &lt;br /&gt;    while (y &lt;  x)&lt;br /&gt;    {         &lt;br /&gt;                        &lt;br /&gt;         if (y==1) // faz a primeira multiplicação&lt;br /&gt;         {&lt;br /&gt;           fatorar = fatorar + (x * (x-y));         &lt;br /&gt;         }&lt;br /&gt;         &lt;br /&gt;         ++y; &lt;br /&gt;         &lt;br /&gt;         if (y &gt; 1)  // faz as multiplicações subsquentes&lt;br /&gt;         {&lt;br /&gt;          &lt;br /&gt;          if ((x-y) &gt; 0 )&lt;br /&gt;          {     &lt;br /&gt;            fatorar = fatorar * (x-y);             &lt;br /&gt;          }&lt;br /&gt;         }   &lt;br /&gt;     &lt;br /&gt;         if (y == x)  // se atingiu o número, deve finalizar&lt;br /&gt;         {&lt;br /&gt;            break;&lt;br /&gt;         }      &lt;br /&gt;                     &lt;br /&gt;    }  // fim do while   &lt;br /&gt;saida:      &lt;br /&gt;   return (fatorar);&lt;br /&gt;} // Fim de Soma(int, int)&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt; &lt;br /&gt;main ()&lt;br /&gt;{&lt;br /&gt;      int valor;&lt;br /&gt;      int valor2;&lt;br /&gt;      int valorencerra;&lt;br /&gt;      int z;&lt;br /&gt;     &lt;br /&gt;      printf("Digite o número a fatorar: ");&lt;br /&gt;      scanf("%d",&amp;valor);&lt;br /&gt;      printf("\n");&lt;br /&gt;      if (valor &lt; 0) &lt;br /&gt;      {&lt;br /&gt;       printf("Valor menor que zero!! %d", valor, "\n");  &lt;br /&gt;       printf("\n");      &lt;br /&gt;       printf("Informe um valor qualquer para encerrar...\n");&lt;br /&gt;       scanf("%d",&amp;valorencerra); &lt;br /&gt;      }  &lt;br /&gt;      else&lt;br /&gt;      {&lt;br /&gt;        z = Fatoracao(valor);      &lt;br /&gt;        printf("\n");&lt;br /&gt;        printf("Valor da Fatoracao: %d", z, "\n");&lt;br /&gt;        printf("\n");       &lt;br /&gt;        printf("Digite um valor qualquer para encerrar...\n");&lt;br /&gt;        scanf("%d",&amp;valorencerra);              &lt;br /&gt;      }&lt;br /&gt;     &lt;br /&gt; }&lt;br /&gt;     &lt;br /&gt;&lt;br /&gt;Considerações: O aplicativo executa somente uma vez e você deve informar um valor para encerrar na sequência. Para refinar o algoritimo, sugiro que seja acrescentado um loop while que execute até que o usuário informe o número 0 para encerrar o aplicativo.&lt;br /&gt;&lt;br /&gt;Sorte a todos!!&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-2742082270870759359?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/2742082270870759359/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=2742082270870759359' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/2742082270870759359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/2742082270870759359'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2010/07/fatoracao-em-dev-c.html' title='FATORAÇÃO EM DEV C++'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-1786695291787946612</id><published>2010-07-12T14:07:00.000-07:00</published><updated>2010-07-12T14:49:53.132-07:00</updated><title type='text'>ARQUIVO-TEXTO EM C#.NET</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Fontes deste pequeno aplicativo completo (no formato .rar):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.4shared.com/file/p1AxJaYd/LerArquivoTexto.html"&gt;http://www.4shared.com/file/p1AxJaYd/LerArquivoTexto.html&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;&lt;br /&gt;Incluso com os fontes está o arquivo .CSV que você deve colocar em uma pasta C:\Util em seu computador para que funcionem corretamente.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Em alguns momentos, aqueles &lt;strong&gt;&lt;em&gt;provinhas práticas&lt;/em&gt; &lt;/strong&gt;básicas que você faz para uma vaga em empresa podem requerer bem mais tempo que as quatro horas definidas para toda a aplicação da parte téórica e prática.&lt;br /&gt;&lt;br /&gt;Nesta manhã, tive o desprazer de cruzar com uma dessas. Vou postar aqui o código da bendita, que realmente é interessante de ser gerado e que está em C#.NET.&lt;br /&gt;&lt;br /&gt;Tínhamos a opção de dar esta solução em Delphi 7 ou C#.Net. Como a máquina em que peguei o Delphi 7 estava com uns erros horríveis, eu até "iniciei" este projetinho, mas acabei me estressando e achando a coisa enjoada de fazer.&lt;br /&gt;&lt;br /&gt;Pois bem! &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;Desenvolvedor que é desenvolvedor deixa algumas respostas para tudo. Eis aqui o código total em C#.Net, porque fiquei com comichão de finalizar o bendito!! &lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;E não é que ia mesmo levar um tempo bom fazendo o bicho!!???&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;Vamos ao código!!&lt;/p&gt;&lt;/span&gt;O &lt;strong&gt;arquivo CSV&lt;/strong&gt; fornecido tinha uma estrutura parecida com esta:&lt;br /&gt;&lt;br /&gt;12345;12072010;142300;8980090&lt;br /&gt;12345;12072010;142400;8980091&lt;br /&gt;12345;12072010;152700;8980092&lt;br /&gt;12345;12072010;182300;8980093&lt;br /&gt;12345;12072010;192300;8980094&lt;br /&gt;12345;12072010;232300;8980095&lt;br /&gt;12345;12072010;072300;8980096&lt;br /&gt;12346;12072010;102300;8980097&lt;br /&gt;12346;14072010;114500;8980098&lt;br /&gt;12346;14072010;123300;8980099&lt;br /&gt;12346;14072010;120100;8980100&lt;br /&gt;12346;14072010;061300;8980101&lt;br /&gt;12346;14072010;064300;8980102&lt;br /&gt;&lt;br /&gt;Os campos na ordem devem ser (&lt;em&gt;segundo me recordo&lt;/em&gt;):&lt;br /&gt;código do cliente;data;hora;código de pedido&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;O aplicativo deve gerar um arquivo-texto deste csv inicial fornecido com os pedidos dos clientes feito a cada hora.&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Ou seja, você deve sumarizar no arquivo-texto a ser gerado os pedidos de cada cliente a cada hora do dia.&lt;br /&gt;&lt;br /&gt;Iniciei um novo projeto no C#.Net.&lt;br /&gt;Dê a ele o nome de LerArquivoTexto.&lt;br /&gt;&lt;br /&gt;Vamos precisar de um TextBox, três botões e um OpenDialog que nomeei como OpTexto. Insira-os todos em seu form.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ao clicar no botão com " ... " o aplicativo deverá ler o diretório inicial configurado no OpenDialog (nada impedindo que o usuário possa selecionar outro local). No caso específico e conforme a figura abaixo, configurei o aplicativo para abrir no C:\Util.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;a href="http://3.bp.blogspot.com/_bdQp47NOTVo/TDuIfljnjXI/AAAAAAAABJ0/irwHqcwmbiU/s1600/Arquivo-texto+em+C%23.Net+1.jpg"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 225px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5493134246747278706" border="0" alt="" src="http://3.bp.blogspot.com/_bdQp47NOTVo/TDuIfljnjXI/AAAAAAAABJ0/irwHqcwmbiU/s400/Arquivo-texto+em+C%23.Net+1.jpg" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;O código do botão ... fica assim:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;private void button3_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;this.opTexto.FileName = "";&lt;br /&gt;this.opTexto.RestoreDirectory = true;// para não mudar o diretório da aplicação definido no inicio&lt;br /&gt;this.opTexto.Filter = "Arquivos CSV*.csv";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if (this.opTexto.ShowDialog () == DialogResult.OK)&lt;br /&gt;{&lt;br /&gt;this.txtArquivo.Text = this.opTexto.FileName.ToString();&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;O caminho do arquivo-texto será preenchido no textbox, conforme mostrado na figura abaixo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;p&gt;&lt;/span&gt;&lt;a href="http://3.bp.blogspot.com/_bdQp47NOTVo/TDuHVlSb-tI/AAAAAAAABJs/ZiPddYNNJO4/s1600/Arquivo-texto+em+C%23.Net+2.jpg"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 225px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5493132975364897490" border="0" alt="" src="http://3.bp.blogspot.com/_bdQp47NOTVo/TDuHVlSb-tI/AAAAAAAABJs/ZiPddYNNJO4/s400/Arquivo-texto+em+C%23.Net+2.jpg" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;Após clicar no botão &lt;em&gt;Processar&lt;/em&gt;, os dados serão gerados. A leitura de dados será realizada através de um stremreader:&lt;br /&gt;&lt;br /&gt;private void button1_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;StreamReader sr = new StreamReader(txtArquivo.Text);&lt;br /&gt;string HoraPedido = "";&lt;br /&gt;string NoCliente= "";&lt;br /&gt;string NoClienteInicial = ""; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;int sLinhas = 0;&lt;br /&gt;int SomaPedido00 = 0 ; // variáveis para a soma dos pedidos a mensurar&lt;br /&gt;int SomaPedido01 = 0;&lt;br /&gt;int SomaPedido02 = 0;&lt;br /&gt;int SomaPedido03 = 0;&lt;br /&gt;int SomaPedido04 = 0;&lt;br /&gt;&lt;br /&gt;....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A abertura de um arquivo-texto será necessária para gerar os dados dos pedidos de cada cliente do arquivo csv para um arquivo-texto com os dados sumarizados:&lt;br /&gt;&lt;br /&gt;// Gravar no arquivo-texto os dados gerados para este cliente&lt;br /&gt;StreamWriter valor = new StreamWriter("C:\\Util\\clientes.txt", true, Encoding.ASCII);&lt;br /&gt;&lt;br /&gt;if (File.Exists(txtArquivo.Text))&lt;br /&gt;{&lt;br /&gt;using (StreamReader fluxotexto = new StreamReader(txtArquivo.Text))&lt;br /&gt;while (true)&lt;br /&gt;{&lt;br /&gt;string linhatexto = fluxotexto.ReadLine();&lt;br /&gt;sLinhas = sLinhas + 1;&lt;br /&gt;if (linhatexto == null)&lt;br /&gt;{&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;if (linhatexto != "")&lt;br /&gt;{&lt;br /&gt;// Ler os dados do cliente&lt;br /&gt;NoCliente = linhatexto.Substring(0, 5);&lt;br /&gt;if (sLinhas == 2)&lt;br /&gt;{&lt;br /&gt;NoClienteInicial = NoCliente;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;RefazerNovoCliente:&lt;br /&gt;// faz a somatória de pedidos enquanto for o mesmo código de cliente...&lt;br /&gt;if (NoClienteInicial == linhatexto.Substring(0, 5))&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//obter a soma de todos os possíveis registros em casa horário&lt;br /&gt;//simplesmente abstraia a hora de cada registro&lt;br /&gt;HoraPedido = linhatexto.Substring(15, 2);&lt;br /&gt;&lt;br /&gt;if (HoraPedido == "00")&lt;br /&gt;{&lt;br /&gt;SomaPedido00 = SomaPedido00 + 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if (HoraPedido == "01")&lt;br /&gt;{&lt;br /&gt;SomaPedido01 = SomaPedido01 + 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if (HoraPedido == "02")&lt;br /&gt;{&lt;br /&gt;SomaPedido02 = SomaPedido02 + 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if (HoraPedido == "03")&lt;br /&gt;{&lt;br /&gt;SomaPedido03 = SomaPedido03 + 1;&lt;br /&gt;}&lt;br /&gt;if (HoraPedido == "04")&lt;br /&gt;{&lt;br /&gt;SomaPedido04 = SomaPedido04 + 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cada Pedido será devidamente catalogado e somado de acordo com o cliente encontrado.&lt;br /&gt;&lt;br /&gt;Se o número do cliente mudar, o comando else será acionado, fazendo a gravação em arquivo-texto dos dados do cliente atual e seus pedidos hora a hora:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;} // fechamento do if do cliente&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;valor.WriteLine("Cliente: " + Convert.ToString(NoClienteInicial));&lt;br /&gt;//valor.Write (Convert.ToString(NoClienteInicial));&lt;br /&gt;valor.WriteLine("Hora 00: " + Convert.ToString (SomaPedido00));&lt;br /&gt;valor.WriteLine("Hora 01: " + Convert.ToString (SomaPedido01));&lt;br /&gt;valor.WriteLine("Hora 02: " + Convert.ToString (SomaPedido02));&lt;br /&gt;valor.WriteLine("Hora 03: " + Convert.ToString (SomaPedido03));&lt;br /&gt;valor.WriteLine("Hora 04: " + Convert.ToString (SomaPedido04));&lt;br /&gt;&lt;br /&gt;....&lt;br /&gt;&lt;br /&gt;O arquivo-texto será fechado, a variável clienteinicial receberá o valor do cliente atual e o aplicativo deverá refazer as contagens para o novo cliente, zerando os contadores criados inicialmente. Em seguida, o processamento deverá ser retomando para a análise da linha do novo pedido a ser contado:&lt;br /&gt;&lt;br /&gt;valor.Close();&lt;br /&gt;&lt;br /&gt;NoClienteInicial = NoCliente;&lt;br /&gt;&lt;br /&gt;//zerar as variáveis de soma&lt;br /&gt;SomaPedido00 = 0;&lt;br /&gt;SomaPedido01 = 0;&lt;br /&gt;SomaPedido02 = 0;&lt;br /&gt;SomaPedido03 = 0;&lt;br /&gt;SomaPedido04 = 0;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;//reavaliar a linha para o novo cliente&lt;br /&gt;goto RefazerNovoCliente;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://4.bp.blogspot.com/_bdQp47NOTVo/TDuFQ7mTGqI/AAAAAAAABJk/1jsGDqRLr-M/s1600/Arquivo-texto+em+C%23.Net+3.jpg"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 225px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5493130696431180450" border="0" alt="" src="http://4.bp.blogspot.com/_bdQp47NOTVo/TDuFQ7mTGqI/AAAAAAAABJk/1jsGDqRLr-M/s400/Arquivo-texto+em+C%23.Net+3.jpg" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;Conforme abaixo, após clicar no messagebox, o arquivo-texto será aberto no notepad, pela linha de comando:&lt;br /&gt;&lt;br /&gt;MessageBox.Show ("Arquivo-Texto criado com sucesso!!");&lt;br /&gt;&lt;br /&gt;// Abrir o arquivo-texrto gerado na sequencia&lt;br /&gt;System.Diagnostics.Process.Start(@"C:\util\clientes.txt");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://3.bp.blogspot.com/_bdQp47NOTVo/TDuElAZxUWI/AAAAAAAABJc/lzBSOnIieS0/s1600/Arquivo-texto+em+C%23.Net+4.jpg"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 225px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5493129941806567778" border="0" alt="" src="http://3.bp.blogspot.com/_bdQp47NOTVo/TDuElAZxUWI/AAAAAAAABJc/lzBSOnIieS0/s400/Arquivo-texto+em+C%23.Net+4.jpg" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;Algumas ressalvas:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. O código compartilhado no link trabalha somente com os dados do arquivo csv aqui informado. O da prova era bem mais complexo e com certeza outros acertos seriam necessários no código para um bom funcionamento &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;2. O arquivo .rar não estará disponível para download por muito tempo, então aproveitem para baixar um exemplo prático de arquivo-texto em C#.Net&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;No mais, sorte a todos e valeu, professor Werley, pela chance de exercitar os conhecimentos!&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Trebuchet MS;"&gt;Que seu novo desenvolver dê conta do recado...&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Trebuchet MS;"&gt;Fui!!&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-1786695291787946612?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/1786695291787946612/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=1786695291787946612' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/1786695291787946612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/1786695291787946612'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2010/07/arquivo-texto-em-cnet.html' title='ARQUIVO-TEXTO EM C#.NET'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_bdQp47NOTVo/TDuIfljnjXI/AAAAAAAABJ0/irwHqcwmbiU/s72-c/Arquivo-texto+em+C%23.Net+1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-6082449649385146871</id><published>2010-06-29T17:37:00.000-07:00</published><updated>2010-07-07T07:01:58.438-07:00</updated><title type='text'>DACTE EM VB.NET e CRYSTAL REPORTS</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Salve, salve, turma dos bytes!!&lt;br /&gt;&lt;br /&gt;Bem, pessoal, para os que desejam curtir algumas fotos de meu&lt;br /&gt;passeio em Fortaleza, ai vai o link do meu orkut:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.orkut.com.br/Main#Profile?rl=mp&amp;amp;uid=12247594032911620490"&gt;http://www.orkut.com.br/Main#Profile?rl=mp&amp;amp;uid=12247594032911620490&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;E sim, eu sou moreno!&lt;br /&gt;&lt;br /&gt;No mais, vamos tratar de desenvolvimento!!&lt;br /&gt;&lt;br /&gt;Estou cumprindo o prometido e postando as informações referentes ao DACTE para salvar talvez a vida de alguns desenvoldores em empresas de transporte.&lt;br /&gt;&lt;br /&gt;Vamos ao que interessa:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://4.bp.blogspot.com/_bdQp47NOTVo/TCqT31GEtDI/AAAAAAAABJU/MRtqAOuotTA/s1600/Dacte1.jpg"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;img style="MARGIN: 0px 0px 10px 10px; WIDTH: 400px; FLOAT: right; HEIGHT: 217px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5488361683259012146" border="0" alt="" src="http://4.bp.blogspot.com/_bdQp47NOTVo/TCqT31GEtDI/AAAAAAAABJU/MRtqAOuotTA/s400/Dacte1.jpg" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt; Nesse meu pequeno exemplo - que está funcional, acreditem! - simplesmente criei o DACTE em Crystal Reports e um table Adapter para associar ao mesmo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;O Table Adapter contêm todos os campos informado no Manual do CT-e, versão 1.03.&lt;br /&gt;&lt;br /&gt;Separei os campos em tags criando uma notação com o uso do " _ " como separador.&lt;br /&gt;Assim, os campos da tag toma04 são identificados desse modo:&lt;br /&gt;&lt;br /&gt;toma04_toma&lt;br /&gt;toma04_CNPJ&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;O importante de se ter todos os campos presentes é a possível necessidade de codificação&lt;br /&gt;extra caso ocorra no futuro a criação de um CTe com campos a mais a informar, e&lt;br /&gt;conforme minhas experiências com a DANFE isso com certeza sempre irá acontecer:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://3.bp.blogspot.com/_bdQp47NOTVo/TCqS28wvMBI/AAAAAAAABJM/ZWgj_H5g3m8/s1600/TableAdapter.jpg"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;img style="MARGIN: 0px 0px 10px 10px; WIDTH: 400px; FLOAT: right; HEIGHT: 225px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5488360568625508370" border="0" alt="" src="http://3.bp.blogspot.com/_bdQp47NOTVo/TCqS28wvMBI/AAAAAAAABJM/ZWgj_H5g3m8/s400/TableAdapter.jpg" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;Note na figura ao lado como estes dados foram dispostos de modo coerente. O tableAdapter deve fazer parte de seu projeto a fim de que o relatório em Crystal Reports do DACTE possa ser linkado com sucesso.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para desenvolver o Dacte em VB.NET 2008 você precisará criar um Table Adapter para que o Crystal Reportes possa ler os dados do CT-e que será fornecido para a impressão do DACTe.&lt;br /&gt;&lt;br /&gt;Os dados do arquivo XML do CT-e fornecidos deverão ser lidos e repassados para o Table&lt;br /&gt;Adapter, que será associado via código ao relatório em Crystal Reports - e isso você&lt;br /&gt;deverá criar arrastando e soltando conforme mostrado na figura abaixo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://4.bp.blogspot.com/_bdQp47NOTVo/TCqSblLJ2DI/AAAAAAAABJE/h68pBQiM7pw/s1600/Dacte+crystal.png"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;img style="MARGIN: 0px 0px 10px 10px; WIDTH: 400px; FLOAT: right; HEIGHT: 225px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5488360098437388338" border="0" alt="" src="http://4.bp.blogspot.com/_bdQp47NOTVo/TCqSblLJ2DI/AAAAAAAABJE/h68pBQiM7pw/s400/Dacte+crystal.png" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;&lt;br /&gt;Veja que os campos do TableAdapater criado se encontram no painel à esquerda. Basta clicar sobre o campo que se deseja e arrastar até o relatório em Crystal para a posição deseja, associando assim cada campo criado com o seu respectivo local de impressão no DACTE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;Eis aqui os quitutes do post de hoje:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.4shared.com/file/GGE9Zpf4/Dacte_free.html"&gt;http://www.4shared.com/file/GGE9Zpf4/Dacte_free.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;&lt;strong&gt;Aproveitem, pois o link estará disponível por poucos dias.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;No pacote a baixar vocês encontram o Dacte.rpt e um dsXML1, que na verdade é um Table Adapter com todos os dados do CT-e para uso em conjunto com o relatório em Crystal Reports.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Vejam que este é o mesmo caminho que seguimos para o desenvolvimento da DANFE em VB.NET 2008.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Este fontes também estarão à disposição para aquisição, nos mesmos termos da DANFE a todos os interessados.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS;"&gt;Boa sorte e bom projeto a todos!!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-6082449649385146871?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/6082449649385146871/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=6082449649385146871' title='5 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/6082449649385146871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/6082449649385146871'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2010/06/salve-salve-turma-dos-bytes-bem-pessoal.html' title='DACTE EM VB.NET e CRYSTAL REPORTS'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_bdQp47NOTVo/TCqT31GEtDI/AAAAAAAABJU/MRtqAOuotTA/s72-c/Dacte1.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-7902017685046186292</id><published>2010-06-09T12:51:00.000-07:00</published><updated>2010-06-09T13:25:18.532-07:00</updated><title type='text'>DESCANSO DE TELA EM VB.NET</title><content type='html'>&lt;strong&gt;Vamos criar um descanso de tela em Vb.NEt com somente um formulário!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. Inicie um novo projeto no VB.NET e dê o nome a ele de &lt;strong&gt;Descanso&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;2. No Form1 (se não houver um, insira um Add New Form ao projeto), abra o Solution Explorer clique no View Designer.&lt;br /&gt;&lt;br /&gt;3. Defina as seguintes propriedades no Form1:&lt;br /&gt;&lt;br /&gt;StartPosition: Center&lt;br /&gt;&lt;br /&gt;Size - Width: 1230; Height : 647&lt;br /&gt;&lt;br /&gt;WindowState: Maximized&lt;br /&gt;&lt;br /&gt;FormBorderStyle: None&lt;br /&gt;&lt;br /&gt;KeyPreview: True&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. Acrescente ao formulário um componente Label e um componente Timer, e defina as propriedades do mesmo&lt;br /&gt;como segue:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Componente Label&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;TextAlign : MiddleCenter&lt;br /&gt;&lt;br /&gt;Size - Width: 898 ; Height: 578&lt;br /&gt;&lt;br /&gt;Font: Tahoma; Size: 45; Bold: True; Italic: True&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Componente Timer&lt;/strong&gt;&lt;br /&gt;Interval: 1500&lt;br /&gt;Enabled: True&lt;br /&gt;&lt;br /&gt;5. Agora, vamos definir as propriedades de execução de nosso descanso de tela. No Solution Explorer, clique no botão View Code.&lt;br /&gt;&lt;br /&gt;No início do Formulário, declare os seguintes imports:&lt;br /&gt;&lt;br /&gt;Imports System.Random&lt;br /&gt;Imports System&lt;br /&gt;Imports System.Drawing&lt;br /&gt;Imports System.Windows.Forms&lt;br /&gt;Imports System.Drawing.Text&lt;br /&gt;&lt;br /&gt;A seguir, declare estas variáveis dentro da classe Form1:&lt;br /&gt;&lt;br /&gt;Public Class Form1&lt;br /&gt;&lt;br /&gt;    Public Numero As Integer&lt;br /&gt;    Public Valor As Random = New Random&lt;br /&gt;    Public ultimaPosicaoDoMouse As New Point(-1, -1)&lt;br /&gt;&lt;br /&gt;6. Defina as propriedades abaixo, como seguem:&lt;br /&gt;&lt;br /&gt;  Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        'Qualquer tecla pressionada encerra o aplicativo&lt;br /&gt;        If Asc(e.KeyChar) Then&lt;br /&gt;&lt;br /&gt;            Windows.Forms.Cursor.Show()&lt;br /&gt;&lt;br /&gt;            End&lt;br /&gt;&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        Windows.Forms.Cursor.Hide()&lt;br /&gt;&lt;br /&gt;        ''LbTexto2.Font = New Font("Tahoma", 50, FontStyle.Bold)&lt;br /&gt;&lt;br /&gt;        'LbTexto2.Text = "Esperei com paciência no SENHOR. Salmo 40:1"&lt;br /&gt;        'LbTexto2.ForeColor = Color.Black&lt;br /&gt;&lt;br /&gt;        EscolheVersiculo()&lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick&lt;br /&gt;&lt;br /&gt;        EscolheVersiculo()&lt;br /&gt;       &lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7. A função EscolheVersiculo é dada abaixo. A mesma define um número entre 0 e 7 e adiciona o texto a tela. A função escolheCor define uma cor de fundo e do texto de modo aleatório.&lt;br /&gt;&lt;br /&gt; Private Sub EscolheVersiculo()&lt;br /&gt;&lt;br /&gt;        Dim Stexto As String = ""&lt;br /&gt;&lt;br /&gt;        'Pegar próximo número aleatório sendo gerado entre 0 e 21&lt;br /&gt;        Numero = Valor.Next(7)&lt;br /&gt;&lt;br /&gt;        EscolherCor()&lt;br /&gt;&lt;br /&gt;        'Numero = 10&lt;br /&gt;&lt;br /&gt;        If Numero = 0 Then&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            LbTexto2.Text = ""&lt;br /&gt;            LbTexto2.Text = " Bem-aventurados os que têm fome e sede de justiça, porque eles serão fartos" + vbCrLf + vbCrLf + " Mateus 5:6"&lt;br /&gt;&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;        If Numero = 1 Then&lt;br /&gt;&lt;br /&gt;            LbTexto2.Text = ""&lt;br /&gt;            LbTexto2.Text = "Alegrei-em quando me disseram: Vamos à casa do SENHOR" + vbCrLf + vbCrLf + " Salmo 122:1"&lt;br /&gt;&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;  If Numero = 3 Then&lt;br /&gt;&lt;br /&gt;            LbTexto2.Text = ""&lt;br /&gt;            LbTexto2.Text = "Ponha sua esperança no SENHOR, ó Israel, desde agora e para sempre " + vbCrLf + vbCrLf + "Salmo 131:3"&lt;br /&gt;&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;        If Numero = 4 Then&lt;br /&gt;&lt;br /&gt;            LbTexto2.Text = ""&lt;br /&gt;            LbTexto2.Text = "A tua palavra é lâmpada que ilumina meus passos e luz que clareia o meu caminho " + vbCrLf + vbCrLf + " Salmo 119:105"&lt;br /&gt;&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;        If Numero = 5 Then&lt;br /&gt;&lt;br /&gt;            LbTexto2.Text = ""&lt;br /&gt;            LbTexto2.Text = "Chega até os céus, até as nuvens, a Tua fidelidade " + vbCrLf + vbCrLf + " Salmo 36:5"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;        If Numero = 6 Then&lt;br /&gt;&lt;br /&gt;            LbTexto2.Text = ""&lt;br /&gt;            LbTexto2.Text = "Jamais retirarei dele a Minha bondade, nem desmentirei a Minha fidelidade " + vbCrLf + vbCrLf + "Salmo 89:33"&lt;br /&gt;&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;        If Numero = 7 Then&lt;br /&gt;&lt;br /&gt;            LbTexto2.Text = ""&lt;br /&gt;            LbTexto2.Text = "Grande é a Tua fidelidade " + vbCrLf + vbCrLf + "Lamentações 2:23"&lt;br /&gt;&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;8. A função EscolheCor também trabalha de modo aleatório. Abaixo, inclui três opções de cores possíveis, mas você pode aumentar o número de cores e incrementar esta função&lt;br /&gt;&lt;br /&gt;Private Sub EscolherCor()&lt;br /&gt;&lt;br /&gt;        'Pegar próximo número aleatório sendo gerado entre 0 e 21&lt;br /&gt;        Numero = Valor.Next(3)&lt;br /&gt;&lt;br /&gt;        If Numero = 0 Then&lt;br /&gt;            Me.BackColor = Color.Black&lt;br /&gt;            LbTexto2.ForeColor = Color.White&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;        If Numero = 1 Then&lt;br /&gt;            Me.BackColor = Color.Black&lt;br /&gt;            LbTexto2.ForeColor = Color.White&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;        If Numero = 2 Then&lt;br /&gt;            Me.BackColor = Color.White&lt;br /&gt;            LbTexto2.ForeColor = Color.Black&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;        If Numero = 3 Then&lt;br /&gt;            Me.BackColor = Color.Blue&lt;br /&gt;            LbTexto2.ForeColor = Color.White&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;9. Finalmente, as funções abaixo realizam o controle do teclado, em conjunto com a função KeyPreview. Se uma tecla for pressionada, o mouse movido em qualquer sentido, o descanso de tela é encerrado automaticamente, retornando para a tela anterior.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Private Sub Form1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseClick&lt;br /&gt;&lt;br /&gt;        Windows.Forms.Cursor.Show()&lt;br /&gt;        End&lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown&lt;br /&gt;        ' ----- ao clicar pára o programa.&lt;br /&gt;        Windows.Forms.Cursor.Show()&lt;br /&gt;        End&lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove&lt;br /&gt;&lt;br /&gt;        ' ----- Ao mover o mouse -&gt; para o programa&lt;br /&gt;        If (ultimaPosicaoDoMouse &lt;&gt; New Point(-1, -1)) Then&lt;br /&gt;            ' ----- Verifica se o mouse moveu-se &lt;br /&gt;            If (ultimaPosicaoDoMouse &lt;&gt; New Point(e.X, e.Y)) Then&lt;br /&gt;                Windows.Forms.Cursor.Show()&lt;br /&gt;                End&lt;br /&gt;            End If&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;        '----- Grava a posicao atual&lt;br /&gt;        ultimaPosicaoDoMouse = New Point(e.X, e.Y)&lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finalmente, Você pode compilar este pequeno projeto e gerar o executável do mesmo. Basta clicar na opção Build no menu do Visual Studio 2008 e em seguida em Build Descanso. Após a compilação, vá até a pasta do projeto. Dentro da pasta Bin haverá a pasta Release e o executável da aplicação estará dentro desta última pasta.&lt;br /&gt;&lt;br /&gt;Se você Renomear este executável gerado para Descanso.scr poderá usar o mesmo como um descanso de tela do Windows!&lt;br /&gt;&lt;br /&gt;Basta copiar o arquivo renomeado para a pasta C:\Windows\System32. Em seguida volte para a área do Desktop, clique no botão direito do mouse e Selecione Propriedades no menu que Surge. A tela de Propriedades do Desktop será aberta. Vá até a aba ScreenSaver. &lt;br /&gt;&lt;br /&gt;O descanso.scr estará na lista de screensavers válidos do sistema operacional.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bom divertimento a todos e até a próxima!!&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-7902017685046186292?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/7902017685046186292/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=7902017685046186292' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/7902017685046186292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/7902017685046186292'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2010/06/descanso-de-tela-em-vbnet.html' title='DESCANSO DE TELA EM VB.NET'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-4261335702507010738</id><published>2010-05-09T11:05:00.000-07:00</published><updated>2010-05-09T11:44:28.036-07:00</updated><title type='text'>GERANDO O CÓDIGO DE BARRAS PARA A DANFE EM CONTIGÊNCIA</title><content type='html'>Gerar os dados para a Danfe em Contigência é uma tarefa simples via código:&lt;br /&gt;&lt;br /&gt;'Selecionar o Tipo de Emissao&lt;br /&gt;TipodeEmissao = myRow2.tpEmis&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'Compõe a chave para o c¢digo de barras da Danfe em Contigˆncia, se for necess rio&lt;br /&gt;DiadaEmissao = Mid(myRow2.dEmi, 1, 2)&lt;br /&gt;TipodeEmissao = myRow2.tpEmis&lt;br /&gt;CodigoUF = DigitoUF(myRow2.destUF)&lt;br /&gt;DadosdaNfe = Trim(CodigoUF + TipodeEmissao + myRow2.destCNPJ + ValorvNF + "2" + "2" + DiadaEmissao)&lt;br /&gt;DigitoDadosNfe = Calculo_DV11(DadosdaNfe)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'Inser‡ão do d¡gito verificador do m¢dulo 11 para a Nf-e&lt;br /&gt;DadosdaNfe = DadosdaNfe + Trim(DigitoDadosNfe)&lt;br /&gt;&lt;br /&gt;'Nf-e em contingˆncia / Gerar c¢digo de Barras dos dadosdaNFE&lt;br /&gt;If TipodeEmissao &lt;&gt; "1" Then&lt;br /&gt;'Cria o c¢digo de barras para a Danfe em Contingˆncia, se houver&lt;br /&gt;'P“r o c¢digo de barras em oculto, se não houver o que gerar&lt;br /&gt;myRow2.DadosNfe = DadosdaNfe&lt;br /&gt;Dim Barcode2 As New BarcodeLib.Barcode(DadosdaNfe, BarcodeLib.TYPE.CODE128C)&lt;br /&gt;PictureBox3.Image = Barcode2.Encode(BarcodeLib.TYPE.CODE128C, DadosdaNfe, 300, 150)&lt;br /&gt;Barcode2.SaveImage("C:\NF-E\Barras\BARRAS2.JPG", BarcodeLib.SaveTypes.JPG)&lt;br /&gt;Dim fs As New FileStream("C:\NF-E\Barras\BARRAS2.JPG", FileMode.Open)&lt;br /&gt;Dim br As New BinaryReader(fs)&lt;br /&gt;myRow2.Imagem2 = br.ReadBytes(br.BaseStream.Length)&lt;br /&gt;br.Close()&lt;br /&gt;fs.Close()&lt;br /&gt;br = Nothing&lt;br /&gt;fs = Nothing&lt;br /&gt;Else&lt;br /&gt;myRow2.Imagem2 = Nothing&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A função que gera o dígito verificador já foi mostrada aqui anteriormente:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Function Calculo_DV11(ByVal strNumero As String) As String&lt;br /&gt;'declara As vari veis&lt;br /&gt;Dim intContador As Integer&lt;br /&gt;Dim intNumero As Integer&lt;br /&gt;Dim intTotalNumero As Integer&lt;br /&gt;Dim intMultiplicador As Integer&lt;br /&gt;Dim intResto As Integer&lt;br /&gt;Dim ValorDigito As Integer&lt;br /&gt;' se nao for um valor numerico sai da fun‡ão&lt;br /&gt;If Not IsNumeric(strNumero) Then&lt;br /&gt;Calculo_DV11 = ""&lt;br /&gt;Exit Function&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;'inicia o multiplicador&lt;br /&gt;intMultiplicador = 2&lt;br /&gt;&lt;br /&gt;'pega cada caracter do numero a partir da direita&lt;br /&gt;For intContador = Len(strNumero) To 1 Step -1&lt;br /&gt;' extrai o caracter e multiplica pelo multiplicador&lt;br /&gt;intNumero = Val(Mid(strNumero, intContador, 1)) * intMultiplicador&lt;br /&gt;intMultiplicador = intMultiplicador + 1&lt;br /&gt;' se o resultado for maior que nove soma os algarismos do resultado&lt;br /&gt;If intMultiplicador &gt; 9 Then&lt;br /&gt;intMultiplicador = 2&lt;br /&gt;End If&lt;br /&gt;'soma o resultado para totaliza‡ão&lt;br /&gt;intTotalNumero = intTotalNumero + intNumero&lt;br /&gt;Next&lt;br /&gt;&lt;br /&gt;'calcula o resto da divisao do total por 11&lt;br /&gt;intResto = intTotalNumero Mod 11&lt;br /&gt;ValorDigito = 11 - intResto&lt;br /&gt;'verifica as exce‡ões ( 0 -&gt; DV=0 1 -&gt; DV=0 e retorna o DV&lt;br /&gt;&lt;br /&gt;Select Case ValorDigito&lt;br /&gt;Case 0&lt;br /&gt;Calculo_DV11 = "0"&lt;br /&gt;Case 1&lt;br /&gt;Calculo_DV11 = "0"&lt;br /&gt;Case Else&lt;br /&gt;Calculo_DV11 = Str(ValorDigito)&lt;br /&gt;End Select&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="#663366"&gt;CT-e - DADOS SOBRE O DACTE&lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Como o número de perguntas sobre o &lt;strong&gt;DACTE&lt;/strong&gt; tem aumentado ultimamente, estarei divulgando brevemente aqui no blog um módulo para impressão dos dados do &lt;strong&gt;DACTE&lt;/strong&gt; a fim de esclarecer algumas dúvidas.&lt;br /&gt;&lt;br /&gt;Os fontes desse novo trabalho também estarão disponiveis para aquisição, assim como os da &lt;strong&gt;DANFE&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Agradeço a todos os que adquiriram os fontes da DANFE até o momento.&lt;br /&gt;&lt;br /&gt;A todos vocês, o meu obrigado pelo reforço positivo prestado ao trabalho aqui divulgado.&lt;br /&gt;&lt;br /&gt;Que seus esforços para o desenvolvimento integral da NF-e em seus clientes possam ser recompensados.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sucesso e sorte a todos!!&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-4261335702507010738?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/4261335702507010738/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=4261335702507010738' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/4261335702507010738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/4261335702507010738'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2010/05/gerando-o-codigo-de-barras-para-danfe.html' title='GERANDO O CÓDIGO DE BARRAS PARA A DANFE EM CONTIGÊNCIA'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-8067619415974633861</id><published>2010-01-23T08:51:00.000-08:00</published><updated>2010-01-23T08:55:58.959-08:00</updated><title type='text'>FONTES DA DANFE EM VB.NET</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Aos que estiverem interessados, estou comercializando para fins ditáticos e comerciais os fontes da geração da DANFE 3.0 na linguagem VB.NET 2008 aos que necessitam dessas informações para desenvolver a NFe eletrônica.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Para maiores informações, gentileza entrar em &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;contato através do meu e-mail:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="mailto:leo_florindo@hotmail.com"&gt;&lt;span style="font-family:trebuchet ms;"&gt;leo_florindo@hotmail.com&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Sorte a todos e sucesso em 2010!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-8067619415974633861?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/8067619415974633861/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=8067619415974633861' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/8067619415974633861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/8067619415974633861'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2010/01/fontes-da-danfe-em-vbnet.html' title='FONTES DA DANFE EM VB.NET'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-3727983915166390129</id><published>2009-06-18T08:59:00.000-07:00</published><updated>2009-06-18T09:12:14.430-07:00</updated><title type='text'>ENVIANDO E-MAIL VIA VB.NET</title><content type='html'>&lt;span style="font-family:verdana;"&gt;Abaixo, segue um pequeno código que envia e-mails via VB.NET &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;para uma conta no gmail.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;As contas de e-mail abaixo são fictícias. Você deve alterá-las para contas reais.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;O código abaixo foi colocado dentro de um timer programado para ser executado a cada cinco minutos (suas propriedades são timer4.Interval = 300000; timer4.Enabled = True).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Quando o tempo de cinco minutos é atingido, o código é então disparado.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;If ExisteConexaoInternet() = True Then&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            '------------ MANDANDO E-MAILS PELO GMAIL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            Dim NumeroFigura As String = "C:\temp\winnt" + "imagem1.jpg"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            Const destino As String = "teresaflorindo@hotmail.com"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            Const Body As String = "Teste de e-mail. Dê uma olhada!!"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            Dim respostaEnvioLabel As String&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            Dim remetenteEmail As String = "leoflorindo@gmail.com"  '; //O e-mail do remetente&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            Dim mail As MailMessage = New MailMessage()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            mail.To.Add(destino)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            mail.From = New MailAddress(remetenteEmail, "Teresa Florindo", System.Text.Encoding.UTF8)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            mail.Subject = "Assunto: Imagens do computador em uso"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            mail.SubjectEncoding = System.Text.Encoding.UTF8&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            mail.Body = Body&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            mail.BodyEncoding = System.Text.Encoding.UTF8&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            mail.IsBodyHtml = True&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            mail.Priority = MailPriority.High&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            mail.Attachments.Add(New Attachment(NumeroFigura))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            Dim client As SmtpClient = New SmtpClient()  '//Adicionando as credenciais do seu e-mail e senha:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            client.Credentials = New System.Net.NetworkCredential(remetenteEmail, "jeovaedeus")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            client.Port = 25&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            client.Host = "smtp.gmail.com" '; //Definindo o provedor que irá disparar o e-mail&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;           &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            client.EnableSsl = True '; //Gmail trabalha com Server Secured Layer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            Try&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                client.Send(mail)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                respostaEnvioLabel = "Envio do E-mail com sucesso"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                'MsgBox(respostaEnvioLabel)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            Catch ex As Exception&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                respostaEnvioLabel = "Ocorreu um erro ao enviar:" + ex.Message&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                'MsgBox(respostaEnvioLabel)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            End Try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            '-------------------- FIM DO CÓDIGO PARA O GMAIL------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Aqui está somente descrito o envio de um e-mail simples via internet. A porta de acesso é a 25. O servirdor&lt;/span&gt; smtp.gmail.com é informado como host.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;Verifique que uma simples imagem está sendo enviada em anexo com a mensagem.&lt;br /&gt;&lt;br /&gt;Para usar este exemplo, você deve criar uma conta no gmail para uso.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;A função ExisteConexaoInternet() verifica se o computador está no caso logado a internet. Se estiver, é possível passar o e-mail sem que o usuário tenha qualquer conhecimento disso.&lt;br /&gt;&lt;br /&gt;O código da função está descrito abaixo:&lt;br /&gt;&lt;br /&gt;Private Function ExisteConexaoInternet() As Boolean&lt;br /&gt;&lt;br /&gt;       'Define uma URL válida para consultar&lt;br /&gt;&lt;br /&gt;       Dim url As New System.Uri("http://www.globo.com/")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       'Monta a requisição HTTP&lt;br /&gt;&lt;br /&gt;       Dim req As System.Net.WebRequest&lt;br /&gt;&lt;br /&gt;       req = System.Net.WebRequest.Create(url)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       'Tenta fazer a requisição&lt;br /&gt;&lt;br /&gt;       Try&lt;br /&gt;&lt;br /&gt;           Dim resp As System.Net.WebResponse&lt;br /&gt;&lt;br /&gt;           resp = req.GetResponse()&lt;br /&gt;&lt;br /&gt;           resp.Close()&lt;br /&gt;&lt;br /&gt;           req = Nothing&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;           'Tudo certo... Temos conexão com a Internet&lt;br /&gt;&lt;br /&gt;           Return True&lt;br /&gt;&lt;br /&gt;       Catch ex As Exception&lt;br /&gt;&lt;br /&gt;           'Não deu... Conexão não dispon¡vel&lt;br /&gt;&lt;br /&gt;           req = Nothing&lt;br /&gt;&lt;br /&gt;           Return False&lt;br /&gt;&lt;br /&gt;       End Try&lt;br /&gt;&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;A função simplesmente verifica se é possível acessar com sucesso um site na internet (no caso o site da Globo). Se for possível, então há a possibilidade de se enviar e-mail via internet e o código de envio de e-mail é liberado.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-3727983915166390129?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/3727983915166390129/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=3727983915166390129' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/3727983915166390129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/3727983915166390129'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2009/06/enviando-e-mail-via-vbnet.html' title='ENVIANDO E-MAIL VIA VB.NET'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-1379376953889218800</id><published>2009-06-12T07:41:00.000-07:00</published><updated>2009-06-12T08:50:59.609-07:00</updated><title type='text'>NF-E: COLETANDO DADOS DO ARQUIVO DE SITUAÇÃO</title><content type='html'>&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;Em alguns momentos, seja por erro no retorno do web service, seja por algo que impossibilite o acesso, os arquivos -proc-rec.xml para uma nfe enviada normalmente ao servido da sefaz poderão ser perdidos. Ao consultar o site da sefaz você constatará que a mesma já se encontra autorizada para uso, mas não possui ainda o arquivo -pro-rec.xml com número do protocolo informado no site.&lt;br /&gt;&lt;br /&gt;Para alguns aplicativos de ERP isso pode significar um problema se de maneira normal estes aplicativos aguardam a recepção do arquivo -pro-rec.xml para validar no banco de dados da empresa a numeração do protocolo de autorização de uso e o status da nf-e no site da Sefaz.&lt;br /&gt;&lt;br /&gt;Se o seu ERP move os arquivos de num-lot.xml, -rec.xml e -pro-rec.xml para uma outra pasta quando os mesmos são detectados e um deles não retorna - como o -pro-rec.xml - o trabalho do seu ERP estará comprometido. Você terá que criar um arquivo de pedido de situação da nf-e que enviou à Sefaz e atualizar os dados do protocolo de uso, hora de recepção e status da nf-e na mão... trabalho inglório!!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Nessa caso, será preciso obter de um outro modo o número do protocolo de autorização da nf-e. Para obter os dados novamente, pode gerar um arquivo de pedido de status e deixar o retorno na mesma pasta onde deveria estar o arquivo -pro-rec.xml não recebido e dessa forma forçar seu ERP a ler o arquivo -sit.XML para resolver por si mesmo essa situação.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Um pedido de situação da nf-e enviado a Sefaz está listado abaixo. O arquivo é pequeno e bem simples de ser gerado:&lt;br /&gt;&lt;br /&gt;&lt;&lt;code&gt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;conssitnfe xsi="http://www.w3.org/2001/XMLSchema-instance" xsd="http://www.w3.org/2001/XMLSchema" versao="1.07" xmlns="http://www.portalfiscal.inf.br/nfe"&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;tpamb&lt;/code&gt;&lt;code&gt;&gt;1&lt;&lt;code&gt;/tpamb&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;xserv&lt;/code&gt;&lt;code&gt;&gt;CONSULTA&lt;&lt;code&gt;/xserv&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;chnfe&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&gt;13090604672291000115550110000000380000000494&lt;&lt;code&gt;/chnfe&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;/consSitNFe&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;O nome do arquivo de pedido de situação é nfe-sit.xml.&lt;br /&gt;&lt;br /&gt;Exemplo: 13090604672291000115550110000000380000000494-ped-sit.xml&lt;br /&gt;&lt;br /&gt;O arquivo de retorno gerado por um pedido de situação traz em conjunto em seu interior o próprio número da nf-e, o número do protocolo de uso e o status da nf-e no site da sefaz:&lt;br /&gt;&lt;br /&gt;&lt; &lt;code&gt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;retConsSitNFe versao="1.07" xmlns="http://www.portalfiscal.inf.br/nfe"&lt;br /&gt;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://www.portalfiscal.inf.br/nfe retConsSitNFe_v1.07.xsd"&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;infProt&lt;/code&gt;&lt;code&gt;&gt;Id="ID113090003033468"&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;tpamb&lt;/code&gt;&lt;code&gt;&gt;1&lt;&lt;code&gt;/tpamb&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;verAplic&lt;/code&gt;&lt;code&gt;&gt;1&lt;&lt;code&gt;/verAplic&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;cStat&lt;/code&gt;&lt;code&gt;&gt;100&lt;&lt;code&gt;/cStat&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;xMotivo&lt;/code&gt;&lt;code&gt;&gt;Autorizado o uso da NF-e&lt;&lt;code&gt;/xMotivo&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;cUF&lt;/code&gt;&lt;code&gt;&gt;13&lt;&lt;code&gt;/cUF&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;chNFe&lt;/code&gt;&lt;code&gt;&gt;13090604672291000115550110000000400000000514&lt;&lt;code&gt;/chNFe&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;dhRecbto&lt;/code&gt;&lt;code&gt;&gt;2009-06-12T08:50:58&lt;&lt;code&gt;/dhRecbto&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;nProt&lt;/code&gt;&lt;code&gt;&gt;113090003033468&lt;&lt;code&gt;/nProt&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;digVal&lt;/code&gt;&lt;code&gt;&gt;roFtqwdm/MZJQEmiXms/u3hwEe4=&lt;&lt;code&gt;/digVal&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;/infProt&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para coletar a informação do número de protocolo para ser usado na impressão da DANFE, um simples IF a mais precisa ser acrescentado ao código de impressão da DANFE.&lt;br /&gt;&lt;br /&gt;Você pode checar antes da impressão da DANFE se há a existência de um arquivo de pedidido de situação ou o arquivo pro-rec.xml de retorno do recibo.&lt;br /&gt;&lt;br /&gt;Eis um código em VB.NET para isso:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dim NomeArquivoRecibo As String&lt;br /&gt;&lt;br /&gt;NomeArquivoRecibo = "F:\SisWin\IAM\NFE\RETORNO\PROCESSADOS\" + IdNfe + "-pro-rec.xml"&lt;br /&gt;&lt;br /&gt;'Danfe Normal. Pega os dados dos recibos e do protocolo de uso&lt;br /&gt;If TipodeEmissao = "1" Then&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'Verifica se já houve retorno do arquivo selecionado&lt;br /&gt;If IO.File.Exists(NomeArquivoRecibo) = False Then&lt;br /&gt;&lt;br /&gt; Dim NomeArquivoRecibo5 As String&lt;br /&gt;&lt;br /&gt; 'Algo errado com o retorno do recibo. Procurar pelo arquivo de situação&lt;br /&gt; 'da NF-e. Necessário para os erros de falta de dados do arquivo -pro-rec.xml&lt;br /&gt;&lt;br /&gt; 'Ler dados do arquivo de retorno de situação, caso o status do&lt;br /&gt; 'recibo de retorno esteja diferente de 104&lt;br /&gt;&lt;br /&gt; NomeArquivoRecibo5 = "F:\SisWin\NFE\RETORNO\PROCESSADOS" + IdNfe + "-sit.xml"&lt;br /&gt; 'Abrir o arquivo de retorno situação de status&lt;br /&gt; Dim reader_5 As XmlTextReader = New XmlTextReader(NomeArquivoRecibo5)&lt;br /&gt;&lt;br /&gt; If IO.File.Exists(NomeArquivoRecibo5) = False Then&lt;br /&gt;&lt;br /&gt;  MsgBox("Impressão da DANFE Cancelada!!! Sem Recibo de Retorno! Envie a NF-e primeiro a SEFAZ!!", MsgBoxStyle.Critical, "DANFE Coplast")&lt;br /&gt;  Exit Sub&lt;br /&gt;&lt;br /&gt; Else&lt;br /&gt;&lt;br /&gt;                 Do While (reader_5.Read())&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                     Select Case reader_5.NodeType&lt;br /&gt;                         Case XmlNodeType.Element&lt;br /&gt;&lt;br /&gt;                             If reader_5.Name = "nProt" Then&lt;br /&gt;                                 LProtocolo2 = reader_5.ReadString&lt;br /&gt;&lt;br /&gt;                                 If LProtocolo2 &lt;&gt; "" Then&lt;br /&gt;                                     myRow2.NumProtocolo = LProtocolo2&lt;br /&gt;                                 End If&lt;br /&gt;&lt;br /&gt;                             End If&lt;br /&gt;&lt;br /&gt;                     End Select&lt;br /&gt;&lt;br /&gt;                 Loop&lt;br /&gt;                 reader_5.Close()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;             End If&lt;br /&gt;&lt;br /&gt;(...)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Esse pequeno trecho fará a leitura do dado do Protocolo diretamente do arquivo -sit.xml gerado.&lt;br /&gt;&lt;br /&gt;O trecho também pode ser utilizado para gravar o registro de protocolo no banco de dados a fim de evitar problemas quando não se consegue obter o -pro-rec.xml de modo correto no retorno do site da Sefaz.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sorte a todos!&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-1379376953889218800?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/1379376953889218800/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=1379376953889218800' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/1379376953889218800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/1379376953889218800'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2009/06/nf-e-coletando-dados-do-arquivo-de.html' title='NF-E: COLETANDO DADOS DO ARQUIVO DE SITUAÇÃO'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-3125398863756008541</id><published>2009-05-25T05:35:00.000-07:00</published><updated>2009-05-25T05:50:38.372-07:00</updated><title type='text'>MANTENDO A MENTE ABERTA PARA O APRENDIZADO</title><content type='html'>&lt;span style="font-family: trebuchet ms;"&gt;&lt;br /&gt;Já foi-se o tempo em que os programadores possuíam suas linguagens&lt;br /&gt;preferidas para trabalho em empresas.&lt;br /&gt;&lt;br /&gt;Nos tempos modernos de nossos dias é crucial e necessário ter o domínio de mais de uma linguagem de programação e manter sempre a mente aberta para novos aprendizados.&lt;br /&gt;&lt;br /&gt;Foi reunindo os melhores desenvolvedores em VB, ASP e C#  que a Microsoft desenvolveu a plataforma .NET. Interligar em uma mesma ferramenta de desevolvimento várias linguagens promove o conhecimento e gera o crescimento entre os desenvolvedores, expandindo seus horizontes para outras áreas como internet e trabalhos em modo cliente servidor.&lt;br /&gt;&lt;br /&gt;Aprender deve estar no âmago de todo o bom desenvolvedor de software e deve possibilitar saltos de tecnologia. Por mais que seja bem cômodo ocupar uma vaga em uma empresa que usa somente a mesma linguagem de programação e que faça com que se acomode é importante participar de treinamentos e realizar cursos para se manter inteirado das novas soluções corporativas existentes no mercado. Além de ser algo inteligente investir em si mesmo, você pode estar preparado para mudanças em novas áreas, como a NF-e e seus requisitos para a RFB.&lt;br /&gt;&lt;br /&gt;Entender isso é saber que as milhares de linha que você gastará em VB 6 e Delphi para desenvolver a solução são quase nada em comparação no VB.Net. Para isso as linguagens de programação evoluem: permitir que novas soluções e maior interatividade sejam ganhas e tornar as áreas de TI melhor equipadas não somente com um bom hardware, mas com o que de melhor há no mercado no momento.&lt;br /&gt;&lt;br /&gt;É cômodo para algumas empresas não desenvolver de VB 6 para VB.NET por motivos de investimentos altos em tecnologia. Mas grandes empresas vêem nesse caminho um ramo natural para a evolução e ganhos de mercado. Se as áreas de TI se tornam cômodas com o que desenvolvem não aproveitam as novas tecnologias e, com o tempo, caem na armadilha de desenvolver grandes códigos para soluções que são fáceis de realizar em novas linguagens de programação.&lt;br /&gt;&lt;br /&gt;Não é constragedor verificar que se pensa em desenvolver e se fazer atualizações na área de segurança - como alterar o Linux do firewall - mas não se pensa em atualizar as aplicações internas de Visual Basic 6 para Vb.Net aprimorando com isso todo o ganho possível que se terá com o uso da nova linguagem e de suas companheiras??&lt;br /&gt;&lt;br /&gt;Quem se envolve em TI deve estar pronto para aprender o novo e para ser confrotado com o novo. Manter a mente aberta e renovar seus conhecimentos é se fazer apto em vários oportundades que surgirem no mercado.&lt;br /&gt;&lt;br /&gt;Saber somente o Visual Basic 6 e o Delphi já não atendem tanto quem necessita criar soluções para uma Nf-e até setembro de 2009.&lt;br /&gt;&lt;br /&gt;E se nas próximas atualizações se fizer necessário o uso de tecnologias mais atuais somente disponíves na plataforma .NET??&lt;br /&gt;&lt;br /&gt;Evoluir é preciso.&lt;br /&gt;&lt;br /&gt;Trabalhe nesse sentido.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-3125398863756008541?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/3125398863756008541/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=3125398863756008541' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/3125398863756008541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/3125398863756008541'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2009/05/mantendo-mente-aberta-para-o.html' title='MANTENDO A MENTE ABERTA PARA O APRENDIZADO'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-2352149029678128982</id><published>2009-05-18T06:47:00.000-07:00</published><updated>2009-05-18T08:29:31.445-07:00</updated><title type='text'>MANUAL 3.0 - CÓDIGO DE BARRAS PARA A CONTINGÊNCIA EM VB.NET</title><content type='html'>&lt;span style="font-family:verdana;"&gt;O novo manual de integração para a NF-e 3.0 traz vários novos ajustes a realizar na composição da DANFE e deverá entrar em vigor a partir de 31/08/2009.&lt;br /&gt;&lt;br /&gt;Uma das novas alterações diz respeito a impressão da DANFE no modo de contigência que, com esse novo manual, pedirá a emissão de um código de barras próprio para os dados da DANFE em contigência.&lt;br /&gt;&lt;br /&gt;Esse novo código de barras deverá ser impresso abaixo do código de&lt;br /&gt;barras da nf-e&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;, conforme mostrado na figura abaixo:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_bdQp47NOTVo/ShFrV85xOKI/AAAAAAAABI8/O-rCX7cEMOA/s1600-h/Barras+em+Contigencia2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 379px; height: 303px;" src="http://4.bp.blogspot.com/_bdQp47NOTVo/ShFrV85xOKI/AAAAAAAABI8/O-rCX7cEMOA/s400/Barras+em+Contigencia2.JPG" alt="" id="BLOGGER_PHOTO_ID_5337165058280601762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;O campo responsável pela emissão desse código de barras será a tag TpEmis dentro do XML da Nf-e. Se o campo TpEmis for diferente de 1 indicará a emissão de uma DANFE em modo de Contingência.&lt;br /&gt;&lt;br /&gt;O campo &lt;span style="font-style: italic; font-weight: bold;"&gt;DADOS DA NF-e&lt;/span&gt; contêm a composição da chave em código de barras. Ao passar a leitora sobre o segundo código de barras, o resultado de valor esperado deverá ser o que está contido dentro do campo DADOS da NF-e. Quando a DANFE foi emitida em modo normal, o nome desse campo deverá ser PROTOCOLO DE AUTORIZAÇÃO DE USO e deverá conter o referido protocolo de autorização da Nf-e.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A composição do campo DADOS DA NF-e pode ser vista no código VB.Net abaixo:&lt;br /&gt;&lt;br /&gt;'Compõe a chave para o código de barras da Danfe em Contigência, se for necessário&lt;br /&gt;       DiadaEmissao = Mid(myRow2.dEmi, 1, 2)&lt;br /&gt;       TipodeEmissao = myRow2.tpEmis&lt;br /&gt;       CodigoUF = DigitoUF(myRow2.destUF)&lt;br /&gt;       DadosdaNfe = Trim(CodigoUF + TipodeEmissao +  myRow2.destCNPJ  + ValorvNF + "2" + "2" + DiadaEmissao)&lt;br /&gt;       DigitoDadosNfe = Calculo_DV11(DadosdaNfe)&lt;br /&gt;&lt;br /&gt;       'Inserção do dígito verificador do módulo 11 para a Nf-e&lt;br /&gt;       DadosdaNfe = DadosdaNfe + Trim(DigitoDadosNfe)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;A função &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;Calculo_DV11 retorna o cálculo em módulo 11 para o digito verificador dos dados da NF-e e é apresentada abaixo:&lt;br /&gt;&lt;br /&gt;Function Calculo_DV11(ByVal strNumero As String) As String&lt;br /&gt;&lt;br /&gt;       'declara As variáveis&lt;br /&gt;       Dim intContador As Integer&lt;br /&gt;       Dim intNumero As Integer&lt;br /&gt;       Dim intTotalNumero As Integer&lt;br /&gt;       Dim intMultiplicador As Integer&lt;br /&gt;       Dim intResto As Integer&lt;br /&gt;       Dim ValorDigito As Integer&lt;br /&gt;&lt;br /&gt;       ' se nao for um valor numerico sai da função&lt;br /&gt;       If Not IsNumeric(strNumero) Then&lt;br /&gt;           Calculo_DV11 = ""&lt;br /&gt;           Exit Function&lt;br /&gt;       End If&lt;br /&gt;&lt;br /&gt;       'inicia o multiplicador&lt;br /&gt;       intMultiplicador = 2&lt;br /&gt;&lt;br /&gt;       'pega cada caracter do numero a partir da direita&lt;br /&gt;       For intContador = Len(strNumero) To 1 Step -1&lt;br /&gt;&lt;br /&gt;           'extrai o caracter e multiplica pelo multiplicador&lt;br /&gt;           intNumero = Val(Mid(strNumero, intContador, 1)) * intMultiplicador&lt;br /&gt;&lt;br /&gt;           intMultiplicador = intMultiplicador + 1&lt;br /&gt;&lt;br /&gt;           ' se o resultado for maior que nove soma os algarismos do resultado&lt;br /&gt;           If intMultiplicador &gt; 9 Then&lt;br /&gt;               intMultiplicador = 2&lt;br /&gt;           End If&lt;br /&gt;&lt;br /&gt;           'soma o resultado para totalização&lt;br /&gt;           intTotalNumero = intTotalNumero + intNumero&lt;br /&gt;&lt;br /&gt;       Next&lt;br /&gt;&lt;br /&gt;       'calcula o resto da divisao do total por 11&lt;br /&gt;       intResto = intTotalNumero Mod 11&lt;br /&gt;&lt;br /&gt;       ValorDigito = 11 - intResto&lt;br /&gt;       'verifica as exceções ( 0 -&gt; DV=0    1 -&gt; DV=0  e retorna o DV&lt;br /&gt;       Select Case ValorDigito&lt;br /&gt;           Case 0&lt;br /&gt;               Calculo_DV11 = "0"&lt;br /&gt;           Case 1&lt;br /&gt;               Calculo_DV11 = "0"&lt;br /&gt;           Case Else&lt;br /&gt;               Calculo_DV11 = Str(ValorDigito)&lt;br /&gt;       End Select&lt;br /&gt;&lt;br /&gt;   End Function&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Após a chave ser composta, a geração do código de barras poderá então ser realizada, com um código simples de chamada para a geração do código de barras:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'Nf-e em contingência / Gerar código de Barras dos dadosdaNFE&lt;br /&gt;       If TipodeEmissao &lt;&gt; "1" Then&lt;br /&gt;&lt;br /&gt;           'Cria o código de barras para a Danfe em Contingência, se houver&lt;br /&gt;           'Pôr o código de barras em oculto, se não houver o que gerar&lt;br /&gt;           myRow2.DadosNfe = DadosdaNfe&lt;br /&gt;           Dim Barcode2 As New BarcodeLib.Barcode(DadosdaNfe, BarcodeLib.TYPE.CODE128C)&lt;br /&gt;           PictureBox3.Image = Barcode2.Encode(BarcodeLib.TYPE.CODE128C, DadosdaNfe, 300, 150)&lt;br /&gt;           Barcode2.SaveImage("C:\NF-E\Barras\BARRAS2.JPG", BarcodeLib.SaveTypes.JPG)&lt;br /&gt;&lt;br /&gt;           Dim fs As New FileStream("C:\NF-E\Barras\BARRAS2.JPG", FileMode.Open)&lt;br /&gt;           Dim br As New BinaryReader(fs)&lt;br /&gt;           myRow2.Imagem2 = br.ReadBytes(br.BaseStream.Length)&lt;br /&gt;&lt;br /&gt;           br.Close()&lt;br /&gt;           fs.Close()&lt;br /&gt;&lt;br /&gt;           br = Nothing&lt;br /&gt;           fs = Nothing&lt;br /&gt;&lt;br /&gt;       Else&lt;br /&gt;           myRow2.Imagem2 = Nothing&lt;br /&gt;&lt;br /&gt;       End If&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;O campo &lt;span style="font-weight: bold;"&gt;Imagem2&lt;/span&gt; deverá ser criado para receber o código de Barras da DANFE impressa em contigência.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sorte a todos!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-2352149029678128982?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/2352149029678128982/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=2352149029678128982' title='8 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/2352149029678128982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/2352149029678128982'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2009/05/manual-30-codigo-de-barras-para.html' title='MANUAL 3.0 - CÓDIGO DE BARRAS PARA A CONTINGÊNCIA EM VB.NET'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_bdQp47NOTVo/ShFrV85xOKI/AAAAAAAABI8/O-rCX7cEMOA/s72-c/Barras+em+Contigencia2.JPG' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-1500879052797664719</id><published>2009-05-15T11:23:00.000-07:00</published><updated>2009-05-16T05:46:06.965-07:00</updated><title type='text'>NF-e: Criando um validador para a NF-e em VB.NET</title><content type='html'>&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;Vamos criar um pequeno aplicativo de validação da Nf-e, executável&lt;br /&gt;em uma chamada por parâmetro. Para executar esse aplicativo, simplesmente&lt;br /&gt;você deverá clicar no botão Iniciar no Windows e selecionar a opção Executar&lt;br /&gt;no menu, informando o seguinte comando:&lt;br /&gt;&lt;br /&gt;C:\ValidarNfe.exe C:\NF-E\13090404672291000115550040000000270000000730-nfe.xml&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;Veja o o exemplo na figura abaixo&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_bdQp47NOTVo/Sg21l1Oq-lI/AAAAAAAABI0/t_lFk-BBnf8/s1600-h/Executar2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 204px;" src="http://1.bp.blogspot.com/_bdQp47NOTVo/Sg21l1Oq-lI/AAAAAAAABI0/t_lFk-BBnf8/s400/Executar2.JPG" alt="" id="BLOGGER_PHOTO_ID_5336120795052309074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;1) Inicie um novo projeto no Vb.NET.&lt;br /&gt;&lt;br /&gt;2) Defina nas referências do projeto (Menu Projects - ValidarNfe Properties - aba References) os seguintes namespaces:&lt;br /&gt;&lt;br /&gt;System&lt;br /&gt;System.Data&lt;br /&gt;System.Deployment&lt;br /&gt;System.Drawing&lt;br /&gt;System.Security&lt;br /&gt;System.Web.Services&lt;br /&gt;System.Windows.Forms&lt;br /&gt;System.Xml&lt;br /&gt;&lt;br /&gt;3) Inclua no formulário uma timer, uma label,  um listbox e um botão.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;A tela deve ficar como o mostrado abaixo:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_bdQp47NOTVo/Sg21ghC799I/AAAAAAAABIs/KKxtlNh_FU0/s1600-h/validar2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 238px;" src="http://1.bp.blogspot.com/_bdQp47NOTVo/Sg21ghC799I/AAAAAAAABIs/KKxtlNh_FU0/s400/validar2.JPG" alt="" id="BLOGGER_PHOTO_ID_5336120703735035858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;4) Defina a propriedade interval do timer em 1000, e dê dois cliques sobre ele. Informe o seguinte código para o Timer:&lt;br /&gt;&lt;br /&gt;Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick&lt;br /&gt;     Me.Show()&lt;br /&gt; End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5) Dentro do código do formulário (form1.vb), no início do mesmo, inclua as seguintes referências:&lt;br /&gt;&lt;br /&gt;Imports System.Collections.Generic&lt;br /&gt;Imports System.Text&lt;br /&gt;Imports System.Xml&lt;br /&gt;Imports System.Xml.Schema&lt;br /&gt;Imports System.IO&lt;br /&gt;Imports System.Windows.Forms&lt;br /&gt;Imports System.Security.Cryptography.Xml&lt;br /&gt;Imports System.Security.Cryptography.X509Certificates&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6) No evento Load do formulário, acrescente este código:&lt;br /&gt;&lt;br /&gt;Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load&lt;br /&gt;&lt;br /&gt;     Dim Valor As String&lt;br /&gt;&lt;br /&gt;     Me.Show()&lt;br /&gt;     If Command() &lt;&gt; "" Then&lt;br /&gt;         Valor = Command()&lt;br /&gt;         ValidaNfe(Valor)&lt;br /&gt;&lt;br /&gt;         Me.Focus()&lt;br /&gt;         Me.Show()&lt;br /&gt;         Me.WindowState = FormWindowState.Normal&lt;br /&gt;&lt;br /&gt;     End If&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7) O código do botão Fechar deve ser o que segue abaixo:&lt;br /&gt;&lt;br /&gt;Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click&lt;br /&gt;     End&lt;br /&gt; End Sub&lt;br /&gt;&lt;br /&gt;8) A função ValidaNfe é a que segue abaixo:&lt;br /&gt;&lt;br /&gt;Private Sub ValidaNfe(ByVal NfeAler As String)&lt;br /&gt;&lt;br /&gt;     Try&lt;br /&gt;&lt;br /&gt;         'Abrir agora o arquivo XML criado e inserir o Protocolo encontrado!!&lt;br /&gt;         Dim arquivo2 As String = NfeAler&lt;br /&gt;         Dim xDoc As New XmlDocument : xDoc.Load(arquivo2)&lt;br /&gt;         Dim Tamanho As String&lt;br /&gt;         Dim Nfe As String&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;         Nfe = arquivo2&lt;br /&gt;         Tamanho = Replace(Nfe, "C:\", "")&lt;br /&gt;         Tamanho = Replace(Tamanho, "F:\SisWin\NFE\BACKUP\200905\", "")&lt;br /&gt;         Tamanho = Replace(Tamanho, "F:\SisWin\NFE\BACKUP", "")&lt;br /&gt;         Tamanho = Replace(Tamanho, "F:\SisWin\NFE\AENVIAR", "")&lt;br /&gt;         Tamanho = Replace(Tamanho, "F:\SisWin\NFE\AENVIAR", "")&lt;br /&gt;         Tamanho = Replace(Tamanho, "\", "")&lt;br /&gt;         Tamanho = Replace(Tamanho, "\NF-E", "")&lt;br /&gt;         Tamanho = Replace(Tamanho, "NF-E", "")&lt;br /&gt;         Tamanho = Replace(Tamanho, "SisWin", "")&lt;br /&gt;         Tamanho = Replace(Tamanho, "SisWin", "")&lt;br /&gt;&lt;br /&gt;         'Fazer uma cópia d arquivo XML para gerar a assinatura&lt;br /&gt;         Dim CaminhoArquivo As String = "C:\NF-E\XML\" + Tamanho&lt;br /&gt;&lt;br /&gt;         'Salva o Arquivo&lt;br /&gt;         xDoc.Save(CaminhoArquivo)&lt;br /&gt;&lt;br /&gt;         'Selecionar certificado&lt;br /&gt;         SelecionarCertificado()&lt;br /&gt;&lt;br /&gt;         'Assinar o XML&lt;br /&gt;         Dim OAd As New AssinaturaDigitalClass()&lt;br /&gt;         Dim pDadosNfe As String&lt;br /&gt;         Dim vStringNfe As String&lt;br /&gt;         'Dim msgResultado As String&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;         OAd.Assinar(CaminhoArquivo, "infNFe", oCertificado)&lt;br /&gt;&lt;br /&gt;         If OAd.vResultado = 0 Then  'Assinado corretamente&lt;br /&gt;&lt;br /&gt;             pDadosNfe = OAd.vXMLStringAssinado&lt;br /&gt;              vStringNfe = pDadosNfe.Substring(pDadosNfe.IndexOf("&lt;&lt;code&gt;&lt;/code&gt;NFe"), pDadosNfe.Length - pDadosNfe.IndexOf("&lt;&lt;code&gt;&lt;/code&gt;NFe"))&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;         Else  'Ocorreu algum erro na assinatura&lt;br /&gt;             MessageBox.Show(OAd.vResultadoString, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)&lt;br /&gt;         End If&lt;br /&gt;&lt;br /&gt;         'Validar o XML&lt;br /&gt;         Dim TxtXSD As String&lt;br /&gt;&lt;br /&gt;         TxtXSD = "C:\tmp\Schemas NF-e\nfe_v1.10.xsd"&lt;br /&gt;&lt;br /&gt;         If Not CaminhoArquivo = String.Empty And Not TxtXSD = String.Empty Then&lt;br /&gt;&lt;br /&gt;             Resultado = True&lt;br /&gt;             Dim settings As New XmlReaderSettings()&lt;br /&gt;             AddHandler settings.ValidationEventHandler, AddressOf Me.ValidationEventHandler&lt;br /&gt;&lt;br /&gt;             'Valida o arquivo XML com o seu Schema XSD&lt;br /&gt;             lstValida.Items.Add("Validando o arquivo XML " &amp;amp; CaminhoArquivo &amp;amp; " com o arquivo de Schema : " &amp;amp; TxtXSD)&lt;br /&gt;&lt;br /&gt;             Try&lt;br /&gt;&lt;br /&gt;                 settings.ValidationType = ValidationType.Schema&lt;br /&gt;settings.Schemas.Add("http://www.portalfiscal.inf.br/nfe",xmlReader.Create(TxtXSD))&lt;br /&gt;                 Using XmlValidatingReader As XmlReader = XmlReader.Create(CaminhoArquivo, settings)&lt;br /&gt;                     While XmlValidatingReader.Read()&lt;br /&gt;&lt;br /&gt;                     End While&lt;br /&gt;&lt;br /&gt;                 End Using&lt;br /&gt;&lt;br /&gt;             Catch ex As Exception&lt;br /&gt;&lt;br /&gt;                 lstValida.Items.Add(ex.Message)&lt;br /&gt;                 Exit Sub&lt;br /&gt;             End Try&lt;br /&gt;&lt;br /&gt;             lstValida.Items.Add("Status Validação -&gt; " &amp;amp; IIf(Resultado = True, "Arquivo validado com SUCESSO", "Validação FALHOU"))&lt;br /&gt;&lt;br /&gt;         Else&lt;br /&gt;             MsgBox("Informe o arquivo XML e o arquivo XSD.")&lt;br /&gt;         End If&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     Catch ex As Exception&lt;br /&gt;&lt;br /&gt;         'se ocorrer uma exceção exibe a mensagem&lt;br /&gt;         lstValida.Items.Add(ex.Message)&lt;br /&gt;&lt;br /&gt;     End Try&lt;br /&gt;&lt;br /&gt; End Sub&lt;br /&gt;&lt;br /&gt;A função ValidaNfe chama outras duas funções em seu início: uma que seleciona o certificado automaticamente e outra que assina o documento. O código da função SelecionarCertificado() é que segue abaixo:&lt;br /&gt;&lt;br /&gt;Function SelecionarCertificado() As Boolean&lt;br /&gt;&lt;br /&gt;     Dim vRetorna As Boolean&lt;br /&gt;     Dim oX509Cert As New X509Certificate2&lt;br /&gt;     Dim store As New X509Store&lt;br /&gt;     Dim collection As New X509Certificate2Collection&lt;br /&gt;     Dim collection1 As New X509Certificate2Collection&lt;br /&gt;     Dim collection2 As New X509Certificate2Collection&lt;br /&gt;     Dim scollection As New X509Certificate2Collection&lt;br /&gt;     Dim msgResultado As String&lt;br /&gt;     Dim xnome As String&lt;br /&gt;&lt;br /&gt;     xnome = "CN=CERTIFICADOTESTE:09999991000115, OU=Autenticado por AR Fenacon, OU=RFB e-CNPJ A1, OU=Secretaria da Receita Federal do Brasil - RFB, L=Manaus, S=AM, O=ICP-Brasil, C=BR"&lt;br /&gt;&lt;br /&gt;     oX509Cert = New X509Certificate2()&lt;br /&gt;     store = New X509Store("MY", StoreLocation.CurrentUser)&lt;br /&gt;     store.Open(OpenFlags.ReadOnly Or OpenFlags.OpenExistingOnly)&lt;br /&gt;     collection = store.Certificates&lt;br /&gt;     collection1 = collection.Find(X509FindType.FindByTimeValid, DateTime.Now, False)&lt;br /&gt;     collection2 = collection.Find(X509FindType.FindByKeyUsage, X509KeyUsageFlags.DigitalSignature, False)&lt;br /&gt;&lt;br /&gt;     'Encontra o certificado digital pelo nome do mesmo, se precisar pergunta por isso&lt;br /&gt;     'Resolvido em 13/05/2009 às 15:05h&lt;br /&gt;     scollection = collection.Find(X509FindType.FindBySubjectDistinguishedName, xnome, False)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     'Para selecionar o certificado de uma lista&lt;br /&gt;     'scollection = X509Certificate2UI.SelectFromCollection(collection2, "Certificado(s) Digital(is) disponível(is)", "Selecione o certificado digital para uso no aplicativo", X509SelectionFlag.SingleSelection)&lt;br /&gt;&lt;br /&gt;     If (scollection.Count = 0) Then&lt;br /&gt;&lt;br /&gt;         msgResultado = "Nenhum certificado digital foi selecionado ou o certificado selecionado está com problemas."&lt;br /&gt;         MessageBox.Show(msgResultado, "Advertência", MessageBoxButtons.OK, MessageBoxIcon.Warning)&lt;br /&gt;         vRetorna = False&lt;br /&gt;&lt;br /&gt;     Else&lt;br /&gt;&lt;br /&gt;         oX509Cert = scollection.Item(0)  'Para selecionar o item em Vb.NET&lt;br /&gt;         oCertificado = oX509Cert&lt;br /&gt;         vRetorna = True&lt;br /&gt;         'msgResultado = "Certificado Selecionado."&lt;br /&gt;         'MessageBox.Show(msgResultado, "Advertência", MessageBoxButtons.OK, MessageBoxIcon.Warning)&lt;br /&gt;         Return vRetorna&lt;br /&gt;&lt;br /&gt;     End If&lt;br /&gt;&lt;br /&gt; End Function&lt;br /&gt;&lt;br /&gt;-----------------&lt;br /&gt;&lt;br /&gt;Voce deve informar em xnome o nome por extenso do Certificado que irá usar para validar a XML a ser assinado. Para obter o nome por extenso do seu certificado você pode usar a próprioa função acima habilitando a que pede a seleção de certicados de uma lista e colocando o seguinte comando no Else da função acima:&lt;br /&gt;&lt;br /&gt;    xnome = oCertificado.Subject.ToString&lt;br /&gt;&lt;br /&gt;Esse comando colocará o nome do certificado na variável xnome. Se você debugar, pode pegar o nome extenso do certificado que deve usar para validar o XML e colocar dentro da váriavel, como fiz no início do código:&lt;br /&gt;&lt;br /&gt;xnome = "CN=CERTIFICADOTESTE:09999991000115, OU=Autenticado por AR Fenacon, OU=RFB e-CNPJ A1, OU=Secretaria da Receita Federal do Brasil - RFB, L=Manaus, S=AM, O=ICP-Brasil, C=BR"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para a assinatura digital uma classe é acrescentada totalmente no final da classe do formulário. Essa classe é responsável pela assinatura do XML. Eis o código abaixo:&lt;br /&gt;&lt;br /&gt;Public Class AssinaturaDigitalClass&lt;br /&gt;&lt;br /&gt;   Public vResultado As Integer&lt;br /&gt;   Public vResultadoString As String&lt;br /&gt;   Public vXMLStringAssinado As String&lt;br /&gt;   Public XmlDoc As XmlDocument&lt;br /&gt;&lt;br /&gt;   Sub Assinar(ByVal pArqXMLAssinar As String, ByVal pUri As String, ByVal pCertificado As X509Certificate2)&lt;br /&gt;&lt;br /&gt;       'Abrir o arquivo XML a ser assinado e ler o seu conteúdo&lt;br /&gt;       Dim SR As StreamReader&lt;br /&gt;       Dim vXMLString As String&lt;br /&gt;&lt;br /&gt;       SR = File.OpenText(pArqXMLAssinar)&lt;br /&gt;       vXMLString = SR.ReadToEnd()&lt;br /&gt;       SR.Close()&lt;br /&gt;&lt;br /&gt;       '   //Atualizar atributos de retorno com conteúdo padrão&lt;br /&gt;       vResultado = 0&lt;br /&gt;       vResultadoString = "Assinatura realizada com sucesso"&lt;br /&gt;&lt;br /&gt;       Try&lt;br /&gt;&lt;br /&gt;           'Verifica o certificado a ser utilizado na assinatura&lt;br /&gt;           Dim _xnome As String&lt;br /&gt;           Dim _X509Cert As X509Certificate2&lt;br /&gt;           Dim store As X509Store&lt;br /&gt;           Dim collection As X509Certificate2Collection&lt;br /&gt;           Dim collection1 As X509Certificate2Collection&lt;br /&gt;&lt;br /&gt;           _xnome = ""&lt;br /&gt;&lt;br /&gt;           _xnome = pCertificado.Subject.ToString()&lt;br /&gt;&lt;br /&gt;           _X509Cert = New X509Certificate2()&lt;br /&gt;           store = New X509Store("MY", StoreLocation.CurrentUser)&lt;br /&gt;           store.Open(OpenFlags.ReadOnly Or OpenFlags.OpenExistingOnly)&lt;br /&gt;&lt;br /&gt;           collection = store.Certificates&lt;br /&gt;           collection1 = collection.Find(X509FindType.FindBySubjectDistinguishedName, _xnome, False)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;           If (collection1.Count = 0) Then&lt;br /&gt;               vResultado = 2&lt;br /&gt;               vResultadoString = "Problemas no certificado digital"&lt;br /&gt;           Else&lt;br /&gt;&lt;br /&gt;               ' certificado ok&lt;br /&gt;               'oX509Cert = scollection.Item(0)&lt;br /&gt;&lt;br /&gt;               _X509Cert = collection1.Item(0)&lt;br /&gt;               Dim x As String&lt;br /&gt;               x = _X509Cert.GetKeyAlgorithm().ToString()&lt;br /&gt;&lt;br /&gt;               ' Create a new XML document.&lt;br /&gt;               Dim doc As New XmlDocument&lt;br /&gt;               doc = New XmlDocument()&lt;br /&gt;&lt;br /&gt;               'Format the document to ignore white spaces.&lt;br /&gt;               doc.PreserveWhitespace = False&lt;br /&gt;&lt;br /&gt;               ' Load the passed XML file using it’s name.&lt;br /&gt;               Try&lt;br /&gt;                   doc.LoadXml(vXMLString)&lt;br /&gt;&lt;br /&gt;                   ' Verifica se a tag a ser assinada existe é única&lt;br /&gt;                   Dim qtdeRefUri As Integer&lt;br /&gt;                   qtdeRefUri = doc.GetElementsByTagName(pUri).Count&lt;br /&gt;&lt;br /&gt;                   If (qtdeRefUri = 0) Then&lt;br /&gt;                       ' a URI indicada não existe&lt;br /&gt;                       vResultado = 4&lt;br /&gt;                       vResultadoString = "A tag de assinatura " + pUri.Trim() + " não existe"&lt;br /&gt;&lt;br /&gt;                   Else&lt;br /&gt;                       ' Existe mais de uma tag a ser assinada      &lt;br /&gt;                       If (qtdeRefUri &gt; 1) Then&lt;br /&gt;                           ' existe mais de uma URI indicada&lt;br /&gt;                           vResultado = 5&lt;br /&gt;                           vResultadoString = "A tag de assinatura " + pUri.Trim() + " não é unica"&lt;br /&gt;                       Else&lt;br /&gt;&lt;br /&gt;                           Try&lt;br /&gt;                               ' Create a SignedXml object.&lt;br /&gt;                               Dim signedXml As SignedXml&lt;br /&gt;                               signedXml = New SignedXml(doc)&lt;br /&gt;&lt;br /&gt;                               ' Add the key to the SignedXml document&lt;br /&gt;                               signedXml.SigningKey = _X509Cert.PrivateKey&lt;br /&gt;&lt;br /&gt;                               ' Create a reference to be signed&lt;br /&gt;                               Dim reference As New Reference&lt;br /&gt;                               reference = New Reference()&lt;br /&gt;&lt;br /&gt;                               '--------- RETIRAR COMENTÁRIOS DAS LINHAS ABAIXO&lt;br /&gt;                               ' pega o uri que deve ser assinada&lt;br /&gt;                               Dim _Uri As XmlAttributeCollection&lt;br /&gt;                               Dim _atributo As XmlAttribute&lt;br /&gt;&lt;br /&gt;                               _Uri = doc.GetElementsByTagName(pUri).Item(0).Attributes&lt;br /&gt;                               For Each _atributo In _Uri&lt;br /&gt;                                   If (_atributo.Name = "Id") Then&lt;br /&gt;                                       reference.Uri = "#" + _atributo.InnerText&lt;br /&gt;&lt;br /&gt;                                   End If&lt;br /&gt;                               Next&lt;br /&gt;&lt;br /&gt;                               ' Add an enveloped transformation to the reference.&lt;br /&gt;                               Dim env As New XmlDsigEnvelopedSignatureTransform&lt;br /&gt;                               env = New XmlDsigEnvelopedSignatureTransform()&lt;br /&gt;                               reference.AddTransform(env)&lt;br /&gt;&lt;br /&gt;                               Dim c14 As New XmlDsigC14NTransform&lt;br /&gt;                               c14 = New XmlDsigC14NTransform()&lt;br /&gt;                               reference.AddTransform(c14)&lt;br /&gt;&lt;br /&gt;                               ' Add the reference to the SignedXml object.&lt;br /&gt;                               signedXml.AddReference(reference)&lt;br /&gt;&lt;br /&gt;                               ' Create a new KeyInfo object&lt;br /&gt;                               Dim keyinfo As New KeyInfo&lt;br /&gt;                               keyinfo = New KeyInfo()&lt;br /&gt;&lt;br /&gt;                               ' Load the certificate into a KeyInfoX509Data object&lt;br /&gt;                               ' and add it to the KeyInfo object.&lt;br /&gt;                               keyinfo.AddClause(New KeyInfoX509Data(_X509Cert))&lt;br /&gt;&lt;br /&gt;                               ' Add the KeyInfo object to the SignedXml object.&lt;br /&gt;                               signedXml.KeyInfo = keyinfo&lt;br /&gt;                               signedXml.ComputeSignature()&lt;br /&gt;&lt;br /&gt;                               ' Get the XML representation of the signature and save&lt;br /&gt;                               ' it to an XmlElement object.&lt;br /&gt;                               Dim xmlDigitalSignature As XmlElement&lt;br /&gt;                               xmlDigitalSignature = signedXml.GetXml()&lt;br /&gt;&lt;br /&gt;                               ' Gravar o elemento no documento XML&lt;br /&gt;                               doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, True))&lt;br /&gt;                               XmlDoc = New XmlDocument()&lt;br /&gt;                               XmlDoc.PreserveWhitespace = False&lt;br /&gt;                               XmlDoc = doc&lt;br /&gt;&lt;br /&gt;                               ' Atualizar a string do XML já assinada&lt;br /&gt;                               vXMLStringAssinado = XmlDoc.OuterXml&lt;br /&gt;&lt;br /&gt;                               ' Gravar o XML no HD&lt;br /&gt;                               ' abre um stream para escrita e cria um StreamWriter para implementar o stream&lt;br /&gt;                               Dim fs As New FileStream(pArqXMLAssinar, FileMode.OpenOrCreate, FileAccess.Write)&lt;br /&gt;                               Dim SW_2 As New StreamWriter(fs)&lt;br /&gt;                               SW_2.Flush()&lt;br /&gt;                               SW_2.BaseStream.Seek(0, SeekOrigin.Begin)&lt;br /&gt;                               SW_2.Write(vXMLStringAssinado)&lt;br /&gt;                               SW_2.Flush()&lt;br /&gt;                               SW_2.Close()&lt;br /&gt;&lt;br /&gt;                           Catch ex As Exception&lt;br /&gt;                               vResultado = 6&lt;br /&gt;                               vResultadoString = "Erro ao assinar o documento - " + ex.Message&lt;br /&gt;&lt;br /&gt;                           End Try&lt;br /&gt;&lt;br /&gt;                       End If&lt;br /&gt;&lt;br /&gt;                   End If&lt;br /&gt;&lt;br /&gt;               Catch ex As Exception&lt;br /&gt;&lt;br /&gt;                   vResultado = 3&lt;br /&gt;                   vResultadoString = "XML mal formado - " + ex.Message&lt;br /&gt;&lt;br /&gt;               End Try&lt;br /&gt;&lt;br /&gt;           End If&lt;br /&gt;&lt;br /&gt;       Catch ex As Exception&lt;br /&gt;&lt;br /&gt;           vResultado = 1&lt;br /&gt;           vResultadoString = "Problema ao acessar o certificado digital" + ex.Message&lt;br /&gt;&lt;br /&gt;       End Try&lt;br /&gt;&lt;br /&gt;   End Sub&lt;br /&gt;&lt;br /&gt;End Class&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;9) Dentro do botão que faz a validação é repassado o código do arquivo XSD que faz a validação:&lt;br /&gt;&lt;br /&gt;TxtXSD = "C:\tmp\Schemas NF-e\nfe_v1.10.xsd"&lt;br /&gt;&lt;br /&gt;Um EventHandler se faz necessário para a leitura da validação do XSD.&lt;br /&gt;&lt;br /&gt;Abaixo, vemos o código da função de validação do EventHandler:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Public Sub ValidationEventHandler(ByVal sender As Object, ByVal args As ValidationEventArgs)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       Resultado = False&lt;br /&gt;&lt;br /&gt;       'lstValida.Items.Add(vbTab + "Erro de Validação : " + args.Message)&lt;br /&gt;&lt;br /&gt;       If args.Severity = XmlSeverityType.Warning Then&lt;br /&gt;&lt;br /&gt;           MsgBox("Nenhum arquivo de Schema foi encontrado para efetuar a validação...")&lt;br /&gt;&lt;br /&gt;       ElseIf args.Severity = XmlSeverityType.Error Then&lt;br /&gt;&lt;br /&gt;           lstValida.Items.Add(args.Message)&lt;br /&gt;           'MsgBox("Ocorreu um erro durante a validação....")&lt;br /&gt;&lt;br /&gt;       End If&lt;br /&gt;&lt;br /&gt;       If Not (args.Exception Is Nothing) Then ' Erro na validação do schema XSD&lt;br /&gt;&lt;br /&gt;           'lstValida.Items.Add(args.Exception.SourceUri + "," &amp;amp; args.Exception.LinePosition &amp;amp; "," &amp;amp; args.Exception.LineNumber)&lt;br /&gt;           'MsgBox(args.Exception.SourceUri + "," &amp;amp; args.Exception.LinePosition &amp;amp; "," &amp;amp; args.Exception.LineNumber)&lt;br /&gt;&lt;br /&gt;       End If&lt;br /&gt;&lt;br /&gt;   End Sub&lt;br /&gt;&lt;br /&gt;Essa função será chamada para retornar o erro que possa estar acontecendo com algum ponto do arquivo XML.&lt;br /&gt;&lt;br /&gt;Pronto!!&lt;br /&gt;&lt;br /&gt;Cada passo de uma validação para a Nf-e foi descrita acima.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Posto o código completo do arquivo form1.VB abaixo para dirrimir quaisquer dúvidas:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;'Validador para arquivos Nf-e&lt;br /&gt;'Data de criação: 12/05/2009&lt;br /&gt;'Para ser utilizado com o Visual Basic 6&lt;br /&gt;'A aplicação funciona com chamada de parâmetro na linha digitável&lt;br /&gt;'Para executar esse aplicativo, use a linha de comando do Windwos&lt;br /&gt;'clicando no botão iniciar de depois em Executar:&lt;br /&gt;'Exemplo de chamada: C:\ValidarNfe.exe C:\NF-E\13090404672291000115550040000000270000000730-nfe.xml&lt;br /&gt;'Desenvolvedor: Manoel Leonardo Metelis Florindo&lt;br /&gt;&lt;br /&gt;Imports System.Collections.Generic&lt;br /&gt;Imports System.Text&lt;br /&gt;Imports System.Xml&lt;br /&gt;Imports System.Xml.Schema&lt;br /&gt;Imports System.IO&lt;br /&gt;Imports System.Windows.Forms&lt;br /&gt;Imports System.Security.Cryptography.Xml&lt;br /&gt;Imports System.Security.Cryptography.X509Certificates&lt;br /&gt;&lt;br /&gt;Public Class Form1&lt;br /&gt;&lt;br /&gt;   Private Resultado As Boolean = True&lt;br /&gt;   Public oCertificado As New X509Certificate2&lt;br /&gt;   Public vStrXmlRetorno As String&lt;br /&gt;   Public vArqERRRetorno As String&lt;br /&gt;   Public vPastaXMLErro As String&lt;br /&gt;   Public vPastaXMLEnvio As String&lt;br /&gt;   Public vArqXMLRetorno As String&lt;br /&gt;   Public vPastaXMLRetorno As String&lt;br /&gt;   Public vXmlNfeDadosMsg As String&lt;br /&gt;   Public vAmbiente As Integer&lt;br /&gt;   Public vUF As Integer&lt;br /&gt;&lt;br /&gt;   Private Sub ValidaNfe(ByVal NfeAler As String)&lt;br /&gt;&lt;br /&gt;       Try&lt;br /&gt;&lt;br /&gt;           'Abrir agora o arquivo XML criado e inserir o Protocolo encontrado!!&lt;br /&gt;           Dim arquivo2 As String = NfeAler&lt;br /&gt;           Dim xDoc As New XmlDocument : xDoc.Load(arquivo2)&lt;br /&gt;           Dim Tamanho As String&lt;br /&gt;           Dim Nfe As String&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;           Nfe = arquivo2&lt;br /&gt;           Tamanho = Replace(Nfe, "C:\", "")&lt;br /&gt;           Tamanho = Replace(Tamanho, "F:\SisWin\NFE\BACKUP\200905\", "")&lt;br /&gt;           Tamanho = Replace(Tamanho, "F:\SisWin\NFE\BACKUP", "")&lt;br /&gt;           Tamanho = Replace(Tamanho, "F:\SisWin\NFE\AENVIAR", "")&lt;br /&gt;           Tamanho = Replace(Tamanho, "F:\SisWin\NFE\AENVIAR", "")&lt;br /&gt;           Tamanho = Replace(Tamanho, "\", "")&lt;br /&gt;           Tamanho = Replace(Tamanho, "\NF-E", "")&lt;br /&gt;           Tamanho = Replace(Tamanho, "NF-E", "")&lt;br /&gt;           Tamanho = Replace(Tamanho, "SisWin", "")&lt;br /&gt;           Tamanho = Replace(Tamanho, "SisWin", "")&lt;br /&gt;&lt;br /&gt;           'Fazer uma cópia d arquivo XML para gerar a assinatura&lt;br /&gt;           Dim CaminhoArquivo As String = "C:\NF-E\XML\" + Tamanho&lt;br /&gt;&lt;br /&gt;           'Salva o Arquivo&lt;br /&gt;           xDoc.Save(CaminhoArquivo)&lt;br /&gt;&lt;br /&gt;           'Selecionar certificado&lt;br /&gt;           SelecionarCertificado()&lt;br /&gt;&lt;br /&gt;           'Assinar o XML&lt;br /&gt;           Dim OAd As New AssinaturaDigitalClass()&lt;br /&gt;           Dim pDadosNfe As String&lt;br /&gt;           Dim vStringNfe As String&lt;br /&gt;           'Dim msgResultado As String&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;           OAd.Assinar(CaminhoArquivo, "infNFe", oCertificado)&lt;br /&gt;&lt;br /&gt;           If OAd.vResultado = 0 Then  'Assinado corretamente&lt;br /&gt;&lt;br /&gt;               pDadosNfe = OAd.vXMLStringAssinado&lt;br /&gt;              vStringNfe = pDadosNfe.Substring(pDadosNfe.IndexOf("&lt;&lt;code&gt;&lt;/code&gt;NFe"), pDadosNfe.Length - pDadosNfe.IndexOf("&lt;&lt;code&gt;&lt;/code&gt;NFe"))&lt;br /&gt;&lt;br /&gt;           Else  'Ocorreu algum erro na assinatura&lt;br /&gt;               MessageBox.Show(OAd.vResultadoString, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)&lt;br /&gt;           End If&lt;br /&gt;&lt;br /&gt;           'Validar o XML&lt;br /&gt;           Dim TxtXSD As String&lt;br /&gt;&lt;br /&gt;           TxtXSD = "C:\tmp\Schemas NF-e\nfe_v1.10.xsd"&lt;br /&gt;&lt;br /&gt;           If Not CaminhoArquivo = String.Empty And Not TxtXSD = String.Empty Then&lt;br /&gt;&lt;br /&gt;               Resultado = True&lt;br /&gt;               Dim settings As New XmlReaderSettings()&lt;br /&gt;               AddHandler settings.ValidationEventHandler, AddressOf Me.ValidationEventHandler&lt;br /&gt;&lt;br /&gt;               'Valida o arquivo XML com o seu Schema XSD&lt;br /&gt;               lstValida.Items.Add("Validando o arquivo XML " &amp;amp; CaminhoArquivo &amp;amp; " com o arquivo de Schema : " &amp;amp; TxtXSD)&lt;br /&gt;&lt;br /&gt;               Try&lt;br /&gt;&lt;br /&gt;                   settings.ValidationType = ValidationType.Schema&lt;br /&gt;                   settings.Schemas.Add("http://www.portalfiscal.inf.br/nfe", XmlReader.Create(TxtXSD))&lt;br /&gt;                   Using XmlValidatingReader As XmlReader = XmlReader.Create(CaminhoArquivo, settings)&lt;br /&gt;                       While XmlValidatingReader.Read()&lt;br /&gt;&lt;br /&gt;                       End While&lt;br /&gt;&lt;br /&gt;                   End Using&lt;br /&gt;&lt;br /&gt;               Catch ex As Exception&lt;br /&gt;&lt;br /&gt;                   lstValida.Items.Add(ex.Message)&lt;br /&gt;                   Exit Sub&lt;br /&gt;               End Try&lt;br /&gt;&lt;br /&gt;               lstValida.Items.Add("Status Validação -&gt; " &amp;amp; IIf(Resultado = True, "Arquivo validado com SUCESSO", "Validação FALHOU"))&lt;br /&gt;&lt;br /&gt;           Else&lt;br /&gt;               MsgBox("Informe o arquivo XML e o arquivo XSD.")&lt;br /&gt;           End If&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       Catch ex As Exception&lt;br /&gt;&lt;br /&gt;           'se ocorrer uma exceção exibe a mensagem&lt;br /&gt;           lstValida.Items.Add(ex.Message)&lt;br /&gt;&lt;br /&gt;       End Try&lt;br /&gt;&lt;br /&gt;   End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   Function SelecionarCertificado() As Boolean&lt;br /&gt;&lt;br /&gt;       Dim vRetorna As Boolean&lt;br /&gt;       Dim oX509Cert As New X509Certificate2&lt;br /&gt;       Dim store As New X509Store&lt;br /&gt;       Dim collection As New X509Certificate2Collection&lt;br /&gt;       Dim collection1 As New X509Certificate2Collection&lt;br /&gt;       Dim collection2 As New X509Certificate2Collection&lt;br /&gt;       Dim scollection As New X509Certificate2Collection&lt;br /&gt;       Dim msgResultado As String&lt;br /&gt;       Dim xnome As String&lt;br /&gt;&lt;br /&gt;       xnome = "CN=COPLAST INDUSTRIA E COMERCIO DE RESIDUOS PLASTICO:04672291000115, OU=Autenticado por AR Fenacon, OU=RFB e-CNPJ A1, OU=Secretaria da Receita Federal do Brasil - RFB, L=Manaus, S=AM, O=ICP-Brasil, C=BR"&lt;br /&gt;&lt;br /&gt;       oX509Cert = New X509Certificate2()&lt;br /&gt;       store = New X509Store("MY", StoreLocation.CurrentUser)&lt;br /&gt;       store.Open(OpenFlags.ReadOnly Or OpenFlags.OpenExistingOnly)&lt;br /&gt;       collection = store.Certificates&lt;br /&gt;       collection1 = collection.Find(X509FindType.FindByTimeValid, DateTime.Now, False)&lt;br /&gt;       collection2 = collection.Find(X509FindType.FindByKeyUsage, X509KeyUsageFlags.DigitalSignature, False)&lt;br /&gt;&lt;br /&gt;       'Encontra o certificado digital pelo nome do mesmo, se precisar pergunta por isso&lt;br /&gt;       'Resolvido em 13/05/2009 às 15:05h&lt;br /&gt;       scollection = collection.Find(X509FindType.FindBySubjectDistinguishedName, xnome, False)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       'Para selecionar o certificado de uma lista&lt;br /&gt;       'scollection = X509Certificate2UI.SelectFromCollection(collection2, "Certificado(s) Digital(is) disponível(is)", "Selecione o certificado digital para uso no aplicativo", X509SelectionFlag.SingleSelection)&lt;br /&gt;&lt;br /&gt;       If (scollection.Count = 0) Then&lt;br /&gt;&lt;br /&gt;           msgResultado = "Nenhum certificado digital foi selecionado ou o certificado selecionado está com problemas."&lt;br /&gt;           MessageBox.Show(msgResultado, "Advertência", MessageBoxButtons.OK, MessageBoxIcon.Warning)&lt;br /&gt;           vRetorna = False&lt;br /&gt;&lt;br /&gt;       Else&lt;br /&gt;&lt;br /&gt;           oX509Cert = scollection.Item(0)  'Para selecionar o item em Vb.NET&lt;br /&gt;           oCertificado = oX509Cert&lt;br /&gt;           xnome = oCertificado.Subject.ToString&lt;br /&gt;           vRetorna = True&lt;br /&gt;           'msgResultado = "Certificado Selecionado."&lt;br /&gt;           'MessageBox.Show(msgResultado, "Advertência", MessageBoxButtons.OK, MessageBoxIcon.Warning)&lt;br /&gt;           Return vRetorna&lt;br /&gt;&lt;br /&gt;       End If&lt;br /&gt;&lt;br /&gt;   End Function&lt;br /&gt;&lt;br /&gt;   Public Sub ValidationEventHandler(ByVal sender As Object, ByVal args As ValidationEventArgs)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       Resultado = False&lt;br /&gt;&lt;br /&gt;       'lstValida.Items.Add(vbTab + "Erro de Validação : " + args.Message)&lt;br /&gt;&lt;br /&gt;       If args.Severity = XmlSeverityType.Warning Then&lt;br /&gt;&lt;br /&gt;           MsgBox("Nenhum arquivo de Schema foi encontrado para efetuar a validação...")&lt;br /&gt;&lt;br /&gt;       ElseIf args.Severity = XmlSeverityType.Error Then&lt;br /&gt;&lt;br /&gt;           lstValida.Items.Add(args.Message)&lt;br /&gt;           'MsgBox("Ocorreu um erro durante a validação....")&lt;br /&gt;&lt;br /&gt;       End If&lt;br /&gt;&lt;br /&gt;       If Not (args.Exception Is Nothing) Then ' Erro na validação do schema XSD&lt;br /&gt;&lt;br /&gt;           'lstValida.Items.Add(args.Exception.SourceUri + "," &amp;amp; args.Exception.LinePosition &amp;amp; "," &amp;amp; args.Exception.LineNumber)&lt;br /&gt;           'MsgBox(args.Exception.SourceUri + "," &amp;amp; args.Exception.LinePosition &amp;amp; "," &amp;amp; args.Exception.LineNumber)&lt;br /&gt;&lt;br /&gt;       End If&lt;br /&gt;&lt;br /&gt;   End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click&lt;br /&gt;       End&lt;br /&gt;   End Sub&lt;br /&gt;&lt;br /&gt;   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load&lt;br /&gt;&lt;br /&gt;       Dim Valor As String&lt;br /&gt;&lt;br /&gt;       Me.Show()&lt;br /&gt;       'Valor = "F:\SisWin\NFE\BACKUP\200905\13090504672291000115550040000001520000002017-nfe.XML"&lt;br /&gt;       'ValidaNfe(Valor)&lt;br /&gt;       If Command() &lt;&gt; "" Then&lt;br /&gt;           Valor = Command()&lt;br /&gt;           ValidaNfe(Valor)&lt;br /&gt;&lt;br /&gt;           Me.Focus()&lt;br /&gt;           Me.Show()&lt;br /&gt;           Me.WindowState = FormWindowState.Normal&lt;br /&gt;&lt;br /&gt;       End If&lt;br /&gt;&lt;br /&gt;   End Sub&lt;br /&gt;&lt;br /&gt;   Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick&lt;br /&gt;       Me.Show()&lt;br /&gt;   End Sub&lt;br /&gt;End Class&lt;br /&gt;Public Class AssinaturaDigitalClass&lt;br /&gt;&lt;br /&gt;   Public vResultado As Integer&lt;br /&gt;   Public vResultadoString As String&lt;br /&gt;   Public vXMLStringAssinado As String&lt;br /&gt;   Public XmlDoc As XmlDocument&lt;br /&gt;&lt;br /&gt;   Sub Assinar(ByVal pArqXMLAssinar As String, ByVal pUri As String, ByVal pCertificado As X509Certificate2)&lt;br /&gt;&lt;br /&gt;       'Abrir o arquivo XML a ser assinado e ler o seu conteúdo&lt;br /&gt;       Dim SR As StreamReader&lt;br /&gt;       Dim vXMLString As String&lt;br /&gt;&lt;br /&gt;       SR = File.OpenText(pArqXMLAssinar)&lt;br /&gt;       vXMLString = SR.ReadToEnd()&lt;br /&gt;       SR.Close()&lt;br /&gt;&lt;br /&gt;       '   //Atualizar atributos de retorno com conteúdo padrão&lt;br /&gt;       vResultado = 0&lt;br /&gt;       vResultadoString = "Assinatura realizada com sucesso"&lt;br /&gt;&lt;br /&gt;       Try&lt;br /&gt;&lt;br /&gt;           'Verifica o certificado a ser utilizado na assinatura&lt;br /&gt;           Dim _xnome As String&lt;br /&gt;           Dim _X509Cert As X509Certificate2&lt;br /&gt;           Dim store As X509Store&lt;br /&gt;           Dim collection As X509Certificate2Collection&lt;br /&gt;           Dim collection1 As X509Certificate2Collection&lt;br /&gt;&lt;br /&gt;           _xnome = ""&lt;br /&gt;&lt;br /&gt;           _xnome = pCertificado.Subject.ToString()&lt;br /&gt;&lt;br /&gt;           _X509Cert = New X509Certificate2()&lt;br /&gt;           store = New X509Store("MY", StoreLocation.CurrentUser)&lt;br /&gt;           store.Open(OpenFlags.ReadOnly Or OpenFlags.OpenExistingOnly)&lt;br /&gt;&lt;br /&gt;           collection = store.Certificates&lt;br /&gt;           collection1 = collection.Find(X509FindType.FindBySubjectDistinguishedName, _xnome, False)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;           If (collection1.Count = 0) Then&lt;br /&gt;               vResultado = 2&lt;br /&gt;               vResultadoString = "Problemas no certificado digital"&lt;br /&gt;           Else&lt;br /&gt;&lt;br /&gt;               ' certificado ok&lt;br /&gt;               'oX509Cert = scollection.Item(0)&lt;br /&gt;&lt;br /&gt;               _X509Cert = collection1.Item(0)&lt;br /&gt;               Dim x As String&lt;br /&gt;               x = _X509Cert.GetKeyAlgorithm().ToString()&lt;br /&gt;&lt;br /&gt;               ' Create a new XML document.&lt;br /&gt;               Dim doc As New XmlDocument&lt;br /&gt;               doc = New XmlDocument()&lt;br /&gt;&lt;br /&gt;               'Format the document to ignore white spaces.&lt;br /&gt;               doc.PreserveWhitespace = False&lt;br /&gt;&lt;br /&gt;               ' Load the passed XML file using it’s name.&lt;br /&gt;               Try&lt;br /&gt;                   doc.LoadXml(vXMLString)&lt;br /&gt;&lt;br /&gt;                   ' Verifica se a tag a ser assinada existe é única&lt;br /&gt;                   Dim qtdeRefUri As Integer&lt;br /&gt;                   qtdeRefUri = doc.GetElementsByTagName(pUri).Count&lt;br /&gt;&lt;br /&gt;                   If (qtdeRefUri = 0) Then&lt;br /&gt;                       ' a URI indicada não existe&lt;br /&gt;                       vResultado = 4&lt;br /&gt;                       vResultadoString = "A tag de assinatura " + pUri.Trim() + " não existe"&lt;br /&gt;&lt;br /&gt;                   Else&lt;br /&gt;                       ' Existe mais de uma tag a ser assinada      &lt;br /&gt;                       If (qtdeRefUri &gt; 1) Then&lt;br /&gt;                           ' existe mais de uma URI indicada&lt;br /&gt;                           vResultado = 5&lt;br /&gt;                           vResultadoString = "A tag de assinatura " + pUri.Trim() + " não é unica"&lt;br /&gt;                       Else&lt;br /&gt;&lt;br /&gt;                           Try&lt;br /&gt;                               ' Create a SignedXml object.&lt;br /&gt;                               Dim signedXml As SignedXml&lt;br /&gt;                               signedXml = New SignedXml(doc)&lt;br /&gt;&lt;br /&gt;                               ' Add the key to the SignedXml document&lt;br /&gt;                               signedXml.SigningKey = _X509Cert.PrivateKey&lt;br /&gt;&lt;br /&gt;                               ' Create a reference to be signed&lt;br /&gt;                               Dim reference As New Reference&lt;br /&gt;                               reference = New Reference()&lt;br /&gt;&lt;br /&gt;                               '--------- RETIRAR COMENTÁRIOS DAS LINHAS ABAIXO&lt;br /&gt;                               ' pega o uri que deve ser assinada&lt;br /&gt;                               Dim _Uri As XmlAttributeCollection&lt;br /&gt;                               Dim _atributo As XmlAttribute&lt;br /&gt;&lt;br /&gt;                               _Uri = doc.GetElementsByTagName(pUri).Item(0).Attributes&lt;br /&gt;                               For Each _atributo In _Uri&lt;br /&gt;                                   If (_atributo.Name = "Id") Then&lt;br /&gt;                                       reference.Uri = "#" + _atributo.InnerText&lt;br /&gt;&lt;br /&gt;                                   End If&lt;br /&gt;                               Next&lt;br /&gt;&lt;br /&gt;                               ' Add an enveloped transformation to the reference.&lt;br /&gt;                               Dim env As New XmlDsigEnvelopedSignatureTransform&lt;br /&gt;                               env = New XmlDsigEnvelopedSignatureTransform()&lt;br /&gt;                               reference.AddTransform(env)&lt;br /&gt;&lt;br /&gt;                               Dim c14 As New XmlDsigC14NTransform&lt;br /&gt;                               c14 = New XmlDsigC14NTransform()&lt;br /&gt;                               reference.AddTransform(c14)&lt;br /&gt;&lt;br /&gt;                               ' Add the reference to the SignedXml object.&lt;br /&gt;                               signedXml.AddReference(reference)&lt;br /&gt;&lt;br /&gt;                               ' Create a new KeyInfo object&lt;br /&gt;                               Dim keyinfo As New KeyInfo&lt;br /&gt;                               keyinfo = New KeyInfo()&lt;br /&gt;&lt;br /&gt;                               ' Load the certificate into a KeyInfoX509Data object&lt;br /&gt;                               ' and add it to the KeyInfo object.&lt;br /&gt;                               keyinfo.AddClause(New KeyInfoX509Data(_X509Cert))&lt;br /&gt;&lt;br /&gt;                               ' Add the KeyInfo object to the SignedXml object.&lt;br /&gt;                               signedXml.KeyInfo = keyinfo&lt;br /&gt;                               signedXml.ComputeSignature()&lt;br /&gt;&lt;br /&gt;                               ' Get the XML representation of the signature and save&lt;br /&gt;                               ' it to an XmlElement object.&lt;br /&gt;                               Dim xmlDigitalSignature As XmlElement&lt;br /&gt;                               xmlDigitalSignature = signedXml.GetXml()&lt;br /&gt;&lt;br /&gt;                               ' Gravar o elemento no documento XML&lt;br /&gt;                               doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, True))&lt;br /&gt;                               XmlDoc = New XmlDocument()&lt;br /&gt;                               XmlDoc.PreserveWhitespace = False&lt;br /&gt;                               XmlDoc = doc&lt;br /&gt;&lt;br /&gt;                               ' Atualizar a string do XML já assinada&lt;br /&gt;                               vXMLStringAssinado = XmlDoc.OuterXml&lt;br /&gt;&lt;br /&gt;                               ' Gravar o XML no HD&lt;br /&gt;                               ' abre um stream para escrita e cria um StreamWriter para implementar o stream&lt;br /&gt;                               Dim fs As New FileStream(pArqXMLAssinar, FileMode.OpenOrCreate, FileAccess.Write)&lt;br /&gt;                               Dim SW_2 As New StreamWriter(fs)&lt;br /&gt;                               SW_2.Flush()&lt;br /&gt;                               SW_2.BaseStream.Seek(0, SeekOrigin.Begin)&lt;br /&gt;                               SW_2.Write(vXMLStringAssinado)&lt;br /&gt;                               SW_2.Flush()&lt;br /&gt;                               SW_2.Close()&lt;br /&gt;&lt;br /&gt;                           Catch ex As Exception&lt;br /&gt;                               vResultado = 6&lt;br /&gt;                               vResultadoString = "Erro ao assinar o documento - " + ex.Message&lt;br /&gt;&lt;br /&gt;                           End Try&lt;br /&gt;&lt;br /&gt;                       End If&lt;br /&gt;&lt;br /&gt;                   End If&lt;br /&gt;&lt;br /&gt;               Catch ex As Exception&lt;br /&gt;&lt;br /&gt;                   vResultado = 3&lt;br /&gt;                   vResultadoString = "XML mal formado - " + ex.Message&lt;br /&gt;&lt;br /&gt;               End Try&lt;br /&gt;&lt;br /&gt;           End If&lt;br /&gt;&lt;br /&gt;       Catch ex As Exception&lt;br /&gt;&lt;br /&gt;           vResultado = 1&lt;br /&gt;           vResultadoString = "Problema ao acessar o certificado digital" + ex.Message&lt;br /&gt;&lt;br /&gt;       End Try&lt;br /&gt;&lt;br /&gt;   End Sub&lt;br /&gt;&lt;br /&gt;End Class&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-1500879052797664719?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/1500879052797664719/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=1500879052797664719' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/1500879052797664719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/1500879052797664719'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2009/05/nf-e-criando-um-validar-para-nf-e-em.html' title='NF-e: Criando um validador para a NF-e em VB.NET'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_bdQp47NOTVo/Sg21l1Oq-lI/AAAAAAAABI0/t_lFk-BBnf8/s72-c/Executar2.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-2518267104384133750</id><published>2009-04-29T12:11:00.000-07:00</published><updated>2009-05-08T11:12:58.186-07:00</updated><title type='text'>NF-E: UM CAMINHO PARA O CÓDIGO DE BARRAS EM VB6</title><content type='html'>Se você está enfrentando dificuldades para gerar o código de barras em Visual Basic 6, pode pensar de um outro modo e usar o próprio VB.NET como caminho para a geração do código de barras 128C da NF-e.&lt;br /&gt;Para isto, basta compilar uma aplicação Windows Form que simplesmente gere o código de barras e utilizar uma chamada call no Visual Basic 6 para esta simples aplicação.&lt;br /&gt;1. Inicie um novo projeto Windows Form Applicattion no VB.Net&lt;br /&gt;2. Chame este projeto de GerBarras&lt;br /&gt;3. Quando os arquivos forem criados, vá ao menu Project -&gt; GerBarras Properties. Clique na opção References na tela que se abre.&lt;br /&gt;&lt;br /&gt;A tela será como a que segue abaixo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_bdQp47NOTVo/Sfin-RuyDmI/AAAAAAAABIM/7gY54Ry4XbI/s1600-h/barras2.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5330194847346331234" style="margin: 0px auto 10px; display: block; width: 400px; height: 233px; text-align: center;" alt="" src="http://2.bp.blogspot.com/_bdQp47NOTVo/Sfin-RuyDmI/AAAAAAAABIM/7gY54Ry4XbI/s400/barras2.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Clique no botão Add e indique o caminho do diretório onde se encontra o Barcodelib.dll, conforme a figura.&lt;br /&gt;&lt;br /&gt;Usaremos esta dll para fazer a geração do código de barras, recebendo como parâmetro de chamada a numeração que deve ser transformada em código de barras. O aplicativo deverá então gerar uma imagem da numeração do código de barras na pasta C:\NF-e\barras.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Após incluir o barcodelib.dll, clique na pasta Debug e na opção Command Line Arguments digite "parametro", conforme a tela mostrada abaixo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_bdQp47NOTVo/Sfinz0zKbCI/AAAAAAAABIE/_DdzzH6Zavw/s1600-h/barras3.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5330194667781385250" style="margin: 0px auto 10px; display: block; width: 400px; height: 216px; text-align: center;" alt="" src="http://4.bp.blogspot.com/_bdQp47NOTVo/Sfinz0zKbCI/AAAAAAAABIE/_DdzzH6Zavw/s400/barras3.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Agora, nos resta informar o código para geração do código de barras.&lt;br /&gt;&lt;br /&gt;4. No modo design do form1, inclua uma objeto Picture. Para isso, clique no menu View e depois em ToolBox. Do lado esquerdo, será aberto a barra de ferramentas. Procure no Common Controls pelo PictureBox. Pressione o mouse sobre ele e arraste-o para o formulário.&lt;br /&gt;&lt;br /&gt;Defina as propriedades do PictureBox1 como segue:&lt;br /&gt;&lt;br /&gt;Width: 361&lt;br /&gt;Size: 104&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. Em seguida, informe o código abaixo para o form1:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_bdQp47NOTVo/Sfinr2V6L3I/AAAAAAAABH8/PsYo9ObVN-M/s1600-h/barras4.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5330194530756603762" style="margin: 0px auto 10px; display: block; width: 400px; height: 247px; text-align: center;" alt="" src="http://4.bp.blogspot.com/_bdQp47NOTVo/Sfinr2V6L3I/AAAAAAAABH8/PsYo9ObVN-M/s400/barras4.JPG" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;Código na imagem:&lt;/p&gt;&lt;p&gt;Imports System.IO&lt;br /&gt;Imports System.Text&lt;br /&gt;Imports System.Drawing&lt;br /&gt;&lt;br /&gt;Imports System.Collections&lt;br /&gt;Imports System.ComponentModel&lt;br /&gt;Imports System.Drawing.Text&lt;br /&gt;&lt;br /&gt;Public Class Form1&lt;br /&gt;&lt;br /&gt;    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load&lt;br /&gt;        Dim Valor As String&lt;br /&gt;&lt;br /&gt;        If Command() &lt;&gt; "" Then&lt;br /&gt;            Valor = Command()&lt;br /&gt;            Dim Barcode As New BarcodeLib.Barcode(Valor, BarcodeLib.TYPE.CODE128C)&lt;br /&gt;            PictureBox1.Image = Barcode.Encode(BarcodeLib.TYPE.CODE128C, Valor, 300, 150)&lt;br /&gt;            PictureBox1.Visible = True&lt;br /&gt;            Barcode.SaveImage("C:\NF-E\Barras\BARRAS.JPG", BarcodeLib.SaveTypes.JPG)&lt;br /&gt;&lt;br /&gt;            'MsgBox("Gerado com Sucesso")&lt;br /&gt;&lt;br /&gt;            End&lt;br /&gt;        End If&lt;br /&gt;    End Sub&lt;br /&gt;End Class&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Clique no menu Build na opção Build GerBarras.&lt;br /&gt;&lt;br /&gt;A aplicação será gerada. Se não houverem erros, teste o executável gerado:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. Encontre o diretório Bin\Release dentro dos fontes do projeto GerBarras. O caminho dos fontes no VB.NET sempre fica identificado com o nome do seu projeto. Exemplo:&lt;/p&gt;&lt;p&gt;C:\Vb.NEt Fontes\GeraBarras\GerBarras\GerBarras\bin\Release&lt;/p&gt;&lt;p&gt;Dentro do diretório Release está o GerBarras.exe que você acaba de criar. &lt;/p&gt;&lt;p&gt;7. Copie o GerBarras.exe para o C:\ da sua máquina.&lt;/p&gt;&lt;p&gt;8. Após isso, clique no botão Iniciar do Windows XP Professional (estou supondo que o sistema operacional na sua máquina é o Windows XP. Fiz este exemplo em uma máquina com o Windows XP), e selecione a opção Executar no Menu:&lt;/p&gt;&lt;p&gt;Na caixa Abrir, digite C:\GerBarras.exe 123456895&lt;/p&gt;&lt;p&gt;Pronto!&lt;/p&gt;&lt;p&gt;Um arquivo jpg apresentando o código de barras do número 123456895 será criado na pasta C:\Nfe-e\Barras.&lt;/p&gt;&lt;p&gt;É só ir até lá e conferir.&lt;/p&gt;&lt;p&gt;Você pode mudar o diretório mudando a linha:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Barcode.SaveImage("C:\NF-E\Barras\BARRAS.JPG", BarcodeLib.SaveTypes.JPG)&lt;/p&gt;&lt;p&gt;Para o diretório que achar mais apropriado.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Para chamar este pequeno aplicativo no Visual Basic 6, use o comando Call:&lt;/p&gt;&lt;p&gt;'Código de Barras a ser gerado &lt;/p&gt;&lt;p&gt;CodigoNfe = Right(TxtID, 44) &lt;/p&gt;&lt;p&gt;'Gerar Código de barras &lt;/p&gt;&lt;p&gt;Call Shell("C:\GerBarras.exe " &amp;amp; CodigoNfe)&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Abraço a todos!!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-2518267104384133750?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/2518267104384133750/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=2518267104384133750' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/2518267104384133750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/2518267104384133750'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2009/04/nf-e-um-caminho-para-o-codigo-de-barras.html' title='NF-E: UM CAMINHO PARA O CÓDIGO DE BARRAS EM VB6'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_bdQp47NOTVo/Sfin-RuyDmI/AAAAAAAABIM/7gY54Ry4XbI/s72-c/barras2.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-3668587600971064941</id><published>2009-04-11T06:35:00.001-07:00</published><updated>2009-04-12T09:12:37.611-07:00</updated><title type='text'>NF-E: GERANDO RECIBO DE LOTE EM VB.NET</title><content type='html'>&lt;span style="font-family:verdana;"&gt;A seguir é apresentado um pequeno aplicativo gerado em VB.Net 2008 para gerar o pedido de recibo de um lote NF-e enviado a Sefaz. Você deve construir o formulário de acordo com o modelo abaixo apresentado:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Dois Textboxs, três pequenos botões, duas labels e um OpenDialog. A tela gerada deverá ficar como a apresentada abaixo:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_bdQp47NOTVo/SeCcxrNm-7I/AAAAAAAABHs/DFmMGcdWM8M/s1600-h/recibo2.JPG"&gt;&lt;span style="font-family:verdana;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5323427136779254706" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 275px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_bdQp47NOTVo/SeCcxrNm-7I/AAAAAAAABHs/DFmMGcdWM8M/s400/recibo2.JPG" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:verdana;"&gt;Para gerar o código do XML para o pedido de lote, vamos nos aproveitar de um código válido de pedido de lote. Acrescente a seguinte função a seu aplicativo. Ela será chamada quando o botão Pedir Recibo for pressionado, sendo alterada para os dados do arquivo de retorno de lote que você selecionar da pasta retorno:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Function criarDocumentoXML(ByVal Protocolo As String) As XDocument&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;"&gt;'Usa o código de um recibo existente como base para a geração&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;"&gt;'de um novo arquivo xml de pedido de lote&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;code&gt;Return &lt;/code&gt;&lt;br /&gt;&lt; &lt;code&gt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;consReciNFe&lt;/code&gt; &lt;code&gt;xmlns:xsi=&lt;a href="http://www.w3.org/2001/XMLSchema-instance"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/a&gt; &lt;/code&gt;&lt;br /&gt;xmlns:xsd="http://www.w3.org/2001/XMLSchema" versao="1.10" xmlns="http://www.portalfiscal.inf.br/nfe"&gt;&lt;br /&gt;&lt;&lt;code&gt;tpamb&lt;/code&gt;&lt;code&gt;&gt;2&lt;&lt;code&gt;/tpamb&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;nrec&lt;/code&gt;&lt;code&gt;&gt;130000000177443&lt;&lt;code&gt;/nrec&gt;&lt;/code&gt;&lt;br /&gt;&lt;&lt;code&gt;/consReciNFe&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;div&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Return&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;End Function&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Na &lt;strong&gt;cláusula general do formulário&lt;/strong&gt; acrescente essas duas classes:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Imports System.Xml&lt;br /&gt;Imports System.Xml.Linq&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;No &lt;strong&gt;OpenDialog&lt;/strong&gt; altere as seguintes propriedades:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Filename&lt;/strong&gt;: *.xml&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;InitialDirectory&lt;/strong&gt;: C:\NF-E\Retorno&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Dentro do botão com as reticências (...) acrescente o código de chamada do OpenDialog:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;OpenFileDialog1.ShowDialog()&lt;br /&gt;TxtArquivo.Text = OpenFileDialog1.FileName&lt;br /&gt;&lt;br /&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-family:Georgia;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Esse simples código fará a abertura do diretório C:\NF-e\Retorno. Dentro dele, você deverá clicar em um arquivo &lt;strong&gt;num-lot&lt;/strong&gt; de retorno válido. No exemplo da figura foi selecionado o arquivo 13090404672291000115550040000000270000000730-num-lot.xml.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Já deu para perceber o que estamos fazendo?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Vamos selecionar um arquivo num-lot de retorno da NF-e e usar o layout de um arquivo de pedido de lote pré-existente para gerar um novo arquivo de pedido de lote para o arquivo&lt;/span&gt; &lt;span style="font-family:verdana;"&gt;num-lot que selecionarmos.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Para fazer isso, fornecemos o arquivo num-lot. Mas também precisaremos do arquivo de recibo para pegar o número do Protocolo. Usaremos o arquivo num-lot selecionado para pegar o número&lt;/span&gt; &lt;span style="font-family:verdana;"&gt;do recibo constante dentro do mesmo e abrir o arquivo de recibo em sequência dentro do botão Gerar Lote.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;O código para o botão &lt;strong&gt;Gerar Recibo&lt;/strong&gt; é apresentado abaixo:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click&lt;br /&gt;Dim NomeArquivoRecibo As String&lt;br /&gt;Dim Protocolo As String&lt;br /&gt;Dim Status As String&lt;br /&gt;Dim ArquivoLote As String&lt;br /&gt;'Dim CodigoErro As String&lt;br /&gt;Dim Texto As String&lt;br /&gt;' Dim NomeNfe As String&lt;br /&gt;' Dim Tamanho As Integer&lt;br /&gt;Dim Zeros As String&lt;br /&gt;&lt;br /&gt;If TxtArquivo.Text = "" Then&lt;br /&gt;MsgBox("Arquivo XML nÆo selecinado!!")&lt;br /&gt;Exit Sub&lt;br /&gt;TxtArquivo.Focus()&lt;br /&gt;End If&lt;br /&gt;Zeros = ""&lt;br /&gt;ArquivoLote = TxtArquivo.Text&lt;br /&gt;Status = ""&lt;br /&gt;Protocolo = ""&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;'Abrir o arquivo de Status de Retorno&lt;br /&gt;Dim xml As XElement = XElement.Load(ArquivoLote)&lt;br /&gt;Dim elements As IEnumerable(Of XElement) = Xml.Elements()&lt;br /&gt;Texto = xml.Element("NumeroLoteGerado").Value&lt;br /&gt;If Len(Texto) = 1 Then Zeros = "00000000000000"&lt;br /&gt;If Len(Texto) = 2 Then Zeros = "0000000000000"&lt;br /&gt;If Len(Texto) = 3 Then Zeros = "000000000000"&lt;br /&gt;If Len(Texto) = 4 Then Zeros = "00000000000"&lt;br /&gt;NomeArquivoRecibo = "C:\NF-E\Retorno\" + Zeros + Texto + "-rec.xml"&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;'Abrir arquivo de recibo com os dados do arquivo de lote selecionado&lt;br /&gt;'Dim testeXML As XElement = XElement.Load(NomeArquivoRecibo)&lt;br /&gt;Dim reader As XmlTextReader = New XmlTextReader(NomeArquivoRecibo)&lt;br /&gt;Do While (reader.Read())&lt;br /&gt;&lt;br /&gt;Select reader.NodeType&lt;br /&gt;Case XmlNodeType.Element&lt;br /&gt;If reader.Name = "cStat" Then&lt;br /&gt;Status = reader.ReadString&lt;br /&gt;End If&lt;br /&gt;'Obter o n£mero do protocolo&lt;br /&gt;If reader.Name = "nRec" Then&lt;br /&gt;Protocolo = reader.ReadString&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;End Select&lt;br /&gt;Loop&lt;br /&gt;'Console.ReadLine()&lt;br /&gt;reader.Close()&lt;br /&gt;NomeProtocolo = Protocolo&lt;br /&gt;If (Status &lt;&gt; "103") And (Protocolo = "") Then&lt;br /&gt;MsgBox("Problemas com a Nf-e. Erro de Status: " + Status)&lt;br /&gt;End If&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;'Gerando o novo arquivo de pedido de recibo&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Dim arquivo As String = "C:\NF-E\Envio\" + Protocolo + "-ped-rec.xml"&lt;br /&gt;Dim doc = criarDocumentoXML(Protocolo)&lt;br /&gt;'Salvar o XML gerado&lt;br /&gt;doc.Save(arquivo)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;'Abrir agora o arquivo XML criado e inserir o Protocolo encontrado!!&lt;br /&gt;Dim arquivo2 As String = "C:\NF-E\envio\" + Protocolo + "-ped-rec.xml"&lt;br /&gt;Dim xDoc As New XmlDocument : xDoc.Load(arquivo)&lt;br /&gt;'Declara um objeto Lista de Nodes&lt;br /&gt;Dim nodeList As Xml.XmlNodeList&lt;br /&gt;'Obtem todos os nodes para a lista com o nome desejado&lt;br /&gt;nodeList = xDoc.GetElementsByTagName("nRec")&lt;br /&gt;'Faz um la‡o para ler os nodes e alterar o seu conte£do.&lt;br /&gt;For i As Integer = (nodeList.Count - 1) To 0 Step -1&lt;br /&gt;nodeList.Item(i).InnerText = Protocolo&lt;br /&gt;Next&lt;br /&gt;'Salva o Arquivo&lt;br /&gt;xDoc.Save(arquivo2)&lt;br /&gt;LstValida.Text = arquivo2&lt;br /&gt;MsgBox("Arquivo XML gerado com sucesso.")&lt;br /&gt;'Timer1.Enabled = True&lt;br /&gt;'carregaXML()&lt;br /&gt;&lt;br /&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;O botão &lt;strong&gt;Close&lt;/strong&gt; irá fechar o formulário chamado. Estou chamando este formulário de um outro:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;'Fecha o formulário aberto. Altere para o comando END se for necessário sair do aplicativo&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Me.Close()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Com isso, apresentamos um modo rápido de gerar um pedido de recibo de um arquivo de lote.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Abraços a todos!!&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-3668587600971064941?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/3668587600971064941/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=3668587600971064941' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/3668587600971064941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/3668587600971064941'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2009/04/gerando-recibo-de-lote-em-vbnet.html' title='NF-E: GERANDO RECIBO DE LOTE EM VB.NET'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_bdQp47NOTVo/SeCcxrNm-7I/AAAAAAAABHs/DFmMGcdWM8M/s72-c/recibo2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-7150405881147486676</id><published>2009-04-08T11:15:00.000-07:00</published><updated>2009-04-08T12:45:08.608-07:00</updated><title type='text'>VB.NET: DANFE EM CRYSTAL E CÓDIGO DE BARRAS 128C</title><content type='html'>A Danfe pode ser gerada em Crystal 8.5 e depois migrada para dentro do Vb.NET ou,&lt;br /&gt;se você preferir, totalmente criada dentro do VB.NET 2008 com a ferramenta Crystal&lt;br /&gt;ali contida - muito mais poderosa e fácil de trabalhar.&lt;br /&gt;&lt;br /&gt;Usar a DANFE em VB.NET 2008 possibilita utilizar um DATASET para gerar a leitura do arquivo XML da NF-e.&lt;br /&gt;&lt;br /&gt;Usando o VB.NET 2008&lt;br /&gt;&lt;br /&gt;É preciso acrescentar ao form o uso das bibliotecas necessárias:&lt;br /&gt;&lt;br /&gt;Imports System.Xml&lt;br /&gt;Imports System.IO&lt;br /&gt;Imports System.Text&lt;br /&gt;&lt;br /&gt;Imports System.Drawing&lt;br /&gt;Imports System.Collections&lt;br /&gt;Imports System.ComponentModel&lt;br /&gt;Imports System.Drawing.Text&lt;br /&gt;&lt;br /&gt;Cada uma delas será necessária para o projeto em si&lt;br /&gt;&lt;br /&gt;Isso se fará necessário quando o fornecedor da empresa enviar em vez da DANFE em pdf o arquivo XML propriamente dito. Muitas empresas além da DANFE impressa que acompanha a mercadoria podem disponibilizar o arquivo XML via e-mail da nf-e emitida.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;LANÇANDO OS DADOS DO XML EM UM DATASET&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Crie o DATASET normalmente e defina os campos do modo apropriada para receber os&lt;br /&gt;dados do arquivo XML&lt;br /&gt;&lt;br /&gt;No botão de impressão, você poderá definir os dados do seguinte modo:&lt;br /&gt;&lt;br /&gt;Dim myDs1 As New DsXML1()&lt;br /&gt;Dim myRow2 As DsXML1.DtDsXML1Row&lt;br /&gt;Dim reader As XmlTextReader = New XmlTextReader(TxtArquivo.Text)&lt;br /&gt;&lt;br /&gt;'DsXML1 é o nome do DATASET com o campos da XML&lt;br /&gt;&lt;br /&gt;'abrindo o DATASET&lt;br /&gt;myRow2 = myDs1.DtDsXML1.NewDtDsXML1Row&lt;br /&gt;&lt;br /&gt;'Lendo o XML&lt;br /&gt;Do While (reader.Read())&lt;br /&gt;&lt;br /&gt;'Fazendo a seleção dos campos&lt;br /&gt;Select Case reader.NodeType&lt;br /&gt;Case XmlNodeType.Element 'Exibir o início do elemento.&lt;br /&gt;&lt;br /&gt;If reader.HasAttributes Then 'Se existirem atributos&lt;br /&gt;While reader.MoveToNextAttribute()&lt;br /&gt;&lt;br /&gt;If reader.Name = "Id" Then&lt;br /&gt;myRow2.IdChave = Mid(reader.Value, 4)&lt;br /&gt;myRow2.Id = ValorTexto&lt;br /&gt;endif&lt;br /&gt;&lt;br /&gt;If reader.Name = "emit" Then&lt;br /&gt;SelecionarEmitente = True&lt;br /&gt;SelecionarDestinatario = False&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;'----------------------------------------------------------&lt;br /&gt;'Dados do EMITENTE&lt;br /&gt;If SelecionarEmitente = True Then&lt;br /&gt;If reader.Name = "CNPJ" Then&lt;br /&gt;myRow2.EmitCNPJ = reader.ReadString&lt;br /&gt;End If&lt;br /&gt;If reader.Name = "IE" Then&lt;br /&gt;myRow2.EmitIE = reader.ReadString&lt;br /&gt;End If&lt;br /&gt;If reader.Name = "xNome" Then&lt;br /&gt;myRow2.EmitxNome = reader.ReadString&lt;br /&gt;End If&lt;br /&gt;If reader.Name = "xLgr" Then&lt;br /&gt;myRow2.EmitxLgr = reader.ReadString&lt;br /&gt;End If&lt;br /&gt;If reader.Name = "xMun" Then&lt;br /&gt;myRow2.EmitxMun = reader.ReadString&lt;br /&gt;End If&lt;br /&gt;If reader.Name = "UF" Then&lt;br /&gt;myRow2.EmitUF = reader.ReadString&lt;br /&gt;End If&lt;br /&gt;If reader.Name = "CEP" Then&lt;br /&gt;myRow2.EmitCEP = reader.ReadString&lt;br /&gt;End If&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;End Select&lt;br /&gt;Loop&lt;br /&gt;&lt;br /&gt;'Fecha o XML&lt;br /&gt;reader.Close()&lt;br /&gt;myDs1.DtDsXML1.AddDtDsXML1Row(myRow2)&lt;br /&gt;&lt;br /&gt;'Imprimindo a DANFE&lt;br /&gt;        Dim caminho_imagem As String&lt;br /&gt;        caminho_imagem = "C:\NF-E\Barras\BARRAS.JPG"&lt;br /&gt;&lt;br /&gt;        Dim myRelatorio As New rptIAM()&lt;br /&gt;        myRelatorio.SetDataSource(myDs1)&lt;br /&gt;&lt;br /&gt;        myRelatorio.ParameterFields(0).AllowCustomValues = True&lt;br /&gt;        myRelatorio.ParameterFields(0).CurrentValues.AddValue(caminho_imagem)&lt;br /&gt;&lt;br /&gt;        'myRelatorio.SetParameterValue(0, caminho_imagem)&lt;br /&gt;        Me.CrvXml.ReportSource = myRelatorio&lt;br /&gt;&lt;br /&gt;        Me.CrvXml.Visible = True&lt;br /&gt;        TxtArquivo.Text = ""&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Seguinte estes passos, você poderá imprimir a DANFE totalmente jogando os dados para um DATASET e associando este DATASET ao relatório em Crystal.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CÓDIGO DE BARRAS 128C para a NF-e&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;O BarcodeLib pode ser encontrado nas páginas do CodeProject (http://www.codeproject.com/KB/graphics/BarcodeLibrary.aspx), que se trata de uma área de projetos em várias linguagens da plataforma Vb.Net. O dll gerado pelo projeto&lt;br /&gt;mostrado permite gerar o código de barras 128C no formato desejado pela NF-e.&lt;br /&gt;&lt;br /&gt;Para integrar a dll no seu Projeto em Vb.Net você simplesmente precisa acessar em&lt;br /&gt;seu projeto o menu Project - &lt;nome&gt;Properties e clicar em ADD, apontando para a pasta onde se encontra o barcodelib.dll.&lt;br /&gt;&lt;br /&gt;Após acrescentar a DLL, acrescente a mesma à sua lista de bibliotecas no&lt;br /&gt;início do form:&lt;br /&gt;&lt;br /&gt;Imports BarcodeLib&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para gerar o código de barras do código da NF-e, basta usar o seguinte código:&lt;br /&gt;&lt;br /&gt;Dim Barcode As New BarcodeLib.Barcode(ValorTexto, BarcodeLib.TYPE.CODE128C)&lt;br /&gt;PictureBox2.Image = Barcode.Encode(BarcodeLib.TYPE.CODE128C, ValorTexto, 300, 150)&lt;br /&gt;Barcode.SaveImage("C:\NF-E\Barras\BARRAS.JPG", BarcodeLib.SaveTypes.JPG)&lt;br /&gt;&lt;br /&gt;Dim fs As New FileStream("C:\NF-E\Barras\BARRAS.JPG", FileMode.Open)&lt;br /&gt;Dim br As New BinaryReader(fs)&lt;br /&gt;myRow2.Imagem = br.ReadBytes(br.BaseStream.Length)&lt;br /&gt;&lt;br /&gt;br.Close()&lt;br /&gt;fs.Close()&lt;br /&gt;&lt;br /&gt;br = Nothing&lt;br /&gt;fs = Nothing&lt;br /&gt;&lt;br /&gt;'myRow2 é um DATASET no qual está sendo jogado os dados da XML. Defina o&lt;br /&gt;'campo que receberá o código de barras como sendo do tipo byte. No caso,&lt;br /&gt;'o campo no dataset se chama Imagem&lt;br /&gt;&lt;br /&gt;Após lançar a imagem dentro do campo imagem, basta arrasta este campo para a&lt;br /&gt;área onde o código deverá ser impresso que a imagem será apresentada na visualização&lt;br /&gt;do relatório&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Arquivos disponíveis:&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;DANFE em Vb.NEt 2008&lt;br /&gt;http://www.4shared.com/file/97470303/39ecd635/Danfe_VBNet.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Danfe em Crystal 8.5&lt;br /&gt;http://www.4shared.com/file/97468171/63f3f4ef/Danfe_Layout.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BarcodeLib&lt;br /&gt;http://www.4shared.com/file/97468816/a41cfd45/BarcodeLib.html&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-7150405881147486676?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/7150405881147486676/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=7150405881147486676' title='9 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/7150405881147486676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/7150405881147486676'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2009/04/vbnet-danfe-em-crystal-e-codigo-de.html' title='VB.NET: DANFE EM CRYSTAL E CÓDIGO DE BARRAS 128C'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-7140549576056255818</id><published>2009-04-06T17:57:00.000-07:00</published><updated>2009-04-06T18:06:51.870-07:00</updated><title type='text'>A BÍBLIA DO XML</title><content type='html'>Essa aqui é para aqueles que precisam realmente de ajuda!!&lt;br /&gt;&lt;br /&gt;Eis o link da Bíblia do XML no 4shared:&lt;br /&gt;&lt;br /&gt;http://www.4shared.com/file/10594264/1d5c518f/XML_Programming_Bible.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A única ressalva: está em inglês!!!&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-7140549576056255818?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/7140549576056255818/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=7140549576056255818' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/7140549576056255818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/7140549576056255818'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2009/04/biblia-do-xml.html' title='A BÍBLIA DO XML'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-5339515191565595006</id><published>2009-04-06T17:39:00.000-07:00</published><updated>2009-04-06T17:56:01.675-07:00</updated><title type='text'>NF-E - XML PARA O VISUAL BASIC</title><content type='html'>As funções abaixo ajudam na leitura de um arquivo XML da NF-e.&lt;br /&gt;&lt;br /&gt;Você só precisa fazer a leitura das tags corretas e lançá-las na&lt;br /&gt;base de dados - que pode ser em Access, SQL ou MySQL.&lt;br /&gt;&lt;br /&gt;Para que funcione a contento, você precisa setar em References as &lt;br /&gt;devidas bibliotecas associadas a MSXLM DOM.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As funções foram extraídas da internet.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'LENDO O XML&lt;br /&gt;Private Sub LoadSettings()&lt;br /&gt;    Dim objNode     As XMLNode&lt;br /&gt;    Dim objSubNode  As XMLNode&lt;br /&gt;&lt;br /&gt;    'Does the Settings.xml file exist?&lt;br /&gt;    If PathExists("C:\NF-E\13090404672291000115550040000000280000000745-nfe.xml") Then&lt;br /&gt;        'Parse XML file and get top level node&lt;br /&gt;        Set objNode = XMLParse("C:\NF-E\13090404672291000115550040000000280000000745-nfe.xml", XML_FILE).Item("NFe")&lt;br /&gt;        &lt;br /&gt;        Dim oRs As New ADODB.Recordset&lt;br /&gt;        Dim oRx As New ADODB.Recordset&lt;br /&gt;        Dim sSQL2 As String&lt;br /&gt;        &lt;br /&gt;        'SE NÃO EXISTIR O MUNICÍPIO, INSERE OS DADOS DO MESMO&lt;br /&gt;        sSQL2 = "INSERT INTO XML(NFE, CUF, CNF) VALUES ( '" &amp; _&lt;br /&gt;                 Right(ID, 44) &amp; "', '" &amp; UF &amp; "', '" &amp; cNF &amp; "')"&lt;br /&gt;        &lt;br /&gt;                &lt;br /&gt;        Cn.Execute sSQL2&lt;br /&gt;        &lt;br /&gt;        MsgBox "LENDO OS DADOS COM SUCESSO!!", vbInformation, "XML"&lt;br /&gt;       &lt;br /&gt;         &lt;br /&gt;        &lt;br /&gt;    End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Public Function Parse() As VBA.Collection&lt;br /&gt;Dim strData     As String   &lt;br /&gt;Dim i As Byte&lt;br /&gt;&lt;br /&gt;'Get the XML data&lt;br /&gt;If Flags And XML_FILE Then&lt;br /&gt;     'It is on disk so read it&lt;br /&gt;     strData = ReadFile(Data)&lt;br /&gt;Else&lt;br /&gt;     'Otherwise just make a copy into our local&lt;br /&gt;     'variable (modifications are made)&lt;br /&gt;     strData = Data&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;    'Remove comments / id tags&lt;br /&gt;    StripTags strData, "&lt;!--", "--&gt;"&lt;br /&gt;    StripTags strData, "&lt;?", "?&gt;"&lt;br /&gt;&lt;br /&gt;    'Remove the null characters&lt;br /&gt;    strData = Replace(strData, vbNullChar, vbNullString)&lt;br /&gt;    &lt;br /&gt;    'Create a new collection&lt;br /&gt;    Set Parse = New Collection&lt;br /&gt;    &lt;br /&gt;    'Are we supposed to overwrite data?&lt;br /&gt;    If Flags And XML_OVERWRITE Then&lt;br /&gt;        Set Nodes = Parse&lt;br /&gt;    End If&lt;br /&gt;    &lt;br /&gt;    'Begin parsing!&lt;br /&gt;    ParseRec strData, Parse&lt;br /&gt;&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;Private Sub ParseRec(ByRef strData As String, ByVal colNodes As VBA.Collection)&lt;br /&gt;    '------------------------------------------------------------------&lt;br /&gt;    'Purpose:   Recursive function which goes through all the data&lt;br /&gt;    '           given to parse for XML until there is none left&lt;br /&gt;    '&lt;br /&gt;    'Params:&lt;br /&gt;    '           strData:    Data to parse&lt;br /&gt;    '           colNodes:   Current level collection of nodes&lt;br /&gt;    '------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;    Dim i           As Long&lt;br /&gt;    Dim k           As Long&lt;br /&gt;    Dim strValue    As String&lt;br /&gt;    Dim strName     As String&lt;br /&gt;    Dim objNode     As XMLNode&lt;br /&gt;&lt;br /&gt;    'Find first &lt;&lt;br /&gt;    i = InStrB(1, strData, "&lt;")&lt;br /&gt;    &lt;br /&gt;    'Keep looping while there are &lt;&lt;br /&gt;    Do While i&lt;br /&gt;        'Alright there is a node; create a new one&lt;br /&gt;        Set objNode = New XMLNode&lt;br /&gt;        &lt;br /&gt;        'Find end of first tag&lt;br /&gt;        k = InStrB(i, strData, "&gt;")&lt;br /&gt;        &lt;br /&gt;        'If there is no &gt;, then we've got bad XML&lt;br /&gt;        If k = 0 Then&lt;br /&gt;            Exit Do&lt;br /&gt;        End If&lt;br /&gt;    &lt;br /&gt;        'Extract data inbetween &lt;&gt;&lt;br /&gt;        strName = MidB$(strData, i + 2, k - i - 2)&lt;br /&gt;        &lt;br /&gt;        'Check for a space in the name&lt;br /&gt;        i = InStrB(1, strName, " ")&lt;br /&gt;        &lt;br /&gt;        'If there is a space, there may be attributes,&lt;br /&gt;        'otherwise no&lt;br /&gt;        If i Then&lt;br /&gt;            'Extract name of node&lt;br /&gt;            objNode.Name = LeftB$(strName, i - 1)&lt;br /&gt;            &lt;br /&gt;            'Parse attributes if any&lt;br /&gt;            ParseAttr MidB$(strName, i + 2), objNode.Attributes&lt;br /&gt;            &lt;br /&gt;            'If the name ends in a /, then there is no end tag&lt;br /&gt;            'otherwise there is&lt;br /&gt;            If AscW(RightB$(strName, 2)) = CHR_FSLASH Then&lt;br /&gt;                i = 0&lt;br /&gt;            Else&lt;br /&gt;                i = 1&lt;br /&gt;            End If&lt;br /&gt;        Else&lt;br /&gt;            'If the name ends in a /, then there is no end tag&lt;br /&gt;            'otherwise there is&lt;br /&gt;            If AscW(RightB$(strName, 2)) = CHR_FSLASH Then&lt;br /&gt;                'Trim off / from name&lt;br /&gt;                objNode.Name = LeftB$(strName, LenB(strName) - 2)&lt;br /&gt;                i = 0&lt;br /&gt;            Else&lt;br /&gt;                objNode.Name = strName&lt;br /&gt;                i = 1&lt;br /&gt;            End If&lt;br /&gt;        End If&lt;br /&gt;    &lt;br /&gt;        'If i is non-zero, then we have to find the end tag&lt;br /&gt;        If i Then&lt;br /&gt;            'Find end tag position&lt;br /&gt;            i = InStrB(k, strData, "&lt;/" &amp; objNode.Name &amp; "&gt;")&lt;br /&gt;            &lt;br /&gt;            'Did we find it?&lt;br /&gt;            If i Then&lt;br /&gt;                'Extract value&lt;br /&gt;                strValue = MidB$(strData, k + 2, i - k - 2)&lt;br /&gt;                &lt;br /&gt;                'Parse any nodes which might be inside&lt;br /&gt;                ParseRec strValue, objNode.Nodes&lt;br /&gt;                &lt;br /&gt;                'Unescape escape sequences&lt;br /&gt;                objNode.Value = XMLUnescape(strValue)&lt;br /&gt;                &lt;br /&gt;                If objNode.Name = "cUF" Then&lt;br /&gt;                  UF = objNode.Value&lt;br /&gt;                End If&lt;br /&gt;                If objNode.Name = "cNF" Then&lt;br /&gt;                  cNF = objNode.Value&lt;br /&gt;                End If&lt;br /&gt;                'Should equal position of last character for this node&lt;br /&gt;                k = i + LenB(objNode.Name) + 4&lt;br /&gt;            Else&lt;br /&gt;                'Malformed XML; quit&lt;br /&gt;                Exit Do&lt;br /&gt;            End If&lt;br /&gt;        End If&lt;br /&gt;        &lt;br /&gt;        'Remove parsed data from string&lt;br /&gt;        strData = MidB$(strData, k + 2)&lt;br /&gt;        &lt;br /&gt;        'Index node in collection&lt;br /&gt;        On Error Resume Next&lt;br /&gt;        colNodes.Add objNode, objNode.Name&lt;br /&gt;        &lt;br /&gt;        'If an error occured, then we should add it to&lt;br /&gt;        'the collection without indexing it (it's already taken)&lt;br /&gt;        If Err.Number Then&lt;br /&gt;            colNodes.Add objNode&lt;br /&gt;        &lt;br /&gt;            'Clear error&lt;br /&gt;            Err.Clear&lt;br /&gt;        End If&lt;br /&gt;    &lt;br /&gt;        'Find next &lt;&lt;br /&gt;        i = InStrB(1, strData, "&lt;")&lt;br /&gt;    Loop&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Private Sub ParseAttr(ByRef strAttr As String, ByVal colAttr As VBA.Collection)&lt;br /&gt;    '------------------------------------------------------------------&lt;br /&gt;    'Purpose:   To parse an attribute list for an XML tag and to place&lt;br /&gt;    '           them inside the collection&lt;br /&gt;    '&lt;br /&gt;    'Params:&lt;br /&gt;    '           strAttr:    List of attributes/values seperated by&lt;br /&gt;    '                       spaces&lt;br /&gt;    '           colAttr:    Collection to add XMLAttr objects to&lt;br /&gt;    '------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;    Dim c           As Integer&lt;br /&gt;    Dim i           As Long&lt;br /&gt;    Dim objAttr     As XMLAttr&lt;br /&gt;&lt;br /&gt;    'Find first equal's sign&lt;br /&gt;    i = InStrB(1, strAttr, "=")&lt;br /&gt;    &lt;br /&gt;    'Loop as long as there are attributes&lt;br /&gt;    Do While i&lt;br /&gt;        'Create new attribute&lt;br /&gt;        Set objAttr = New XMLAttr&lt;br /&gt;    &lt;br /&gt;        'Extract name (may have leading space(s))&lt;br /&gt;        objAttr.Name = LTrim$(LeftB$(strAttr, i - 1))&lt;br /&gt;    &lt;br /&gt;        'Skip ahead to value&lt;br /&gt;        strAttr = MidB$(strAttr, i + 2)&lt;br /&gt;    &lt;br /&gt;        'Get first character&lt;br /&gt;        c = AscW(strAttr)&lt;br /&gt;    &lt;br /&gt;        'How is the attributed formated; surrounding quotes or no?&lt;br /&gt;        Select Case c&lt;br /&gt;            Case CHR_SQUOTE, CHR_DQUOTE&lt;br /&gt;                'Find ending quote&lt;br /&gt;                i = InStrB(3, strAttr, ChrW$(c))&lt;br /&gt;                &lt;br /&gt;                'Did we find it?&lt;br /&gt;                If i Then&lt;br /&gt;                    'Extract value and skip past this attribute&lt;br /&gt;                    objAttr.Value = XMLUnescape(MidB$(strAttr, 3, i - 3))&lt;br /&gt;                    strAttr = MidB$(strAttr, i + 2)&lt;br /&gt;                Else&lt;br /&gt;                    'Bad XML!&lt;br /&gt;                    Exit Do&lt;br /&gt;                End If&lt;br /&gt;            Case Else&lt;br /&gt;                'A space then will herald then end&lt;br /&gt;                i = InStrB(1, strAttr, " ")&lt;br /&gt;                &lt;br /&gt;                'Did we find one?&lt;br /&gt;                If i Then&lt;br /&gt;                    'Extract value and then skip past current attribute data&lt;br /&gt;                    objAttr.Value = XMLUnescape(LeftB$(strAttr, i - 1))&lt;br /&gt;                    strAttr = MidB$(strAttr, i + 2)&lt;br /&gt;                Else&lt;br /&gt;                    'It is the last attribute; copy remaining data and&lt;br /&gt;                    'exit loop&lt;br /&gt;                    objAttr.Value = XMLUnescape(strAttr)&lt;br /&gt;                    Exit Do&lt;br /&gt;                End If&lt;br /&gt;        End Select&lt;br /&gt;        &lt;br /&gt;        If objAttr.Name = "Id" Then&lt;br /&gt;          ID = objAttr.Value&lt;br /&gt;        End If&lt;br /&gt;        &lt;br /&gt;        If objAttr.Name = "UF" Then&lt;br /&gt;          UF = objAttr.Value&lt;br /&gt;        End If&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        'Add to collection&lt;br /&gt;        colAttr.Add objAttr, objAttr.Name&lt;br /&gt;    &lt;br /&gt;        'Find next attribute&lt;br /&gt;        i = InStrB(1, strAttr, "=")&lt;br /&gt;    Loop&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Public Function XMLUnescape(ByRef strData As String) As String&lt;br /&gt;    '------------------------------------------------------------------&lt;br /&gt;    'Purpose:   Converts escape sequences for XML into the actual&lt;br /&gt;    '           characters&lt;br /&gt;    '&lt;br /&gt;    'Params:&lt;br /&gt;    '           strData:    String to search for escaped characters in&lt;br /&gt;    '&lt;br /&gt;    'Returns:   String with escaped characters converted back to actual&lt;br /&gt;    '           representation&lt;br /&gt;    '------------------------------------------------------------------&lt;br /&gt;    &lt;br /&gt;    Dim i       As Long&lt;br /&gt; &lt;br /&gt;    XMLUnescape = strData&lt;br /&gt;    &lt;br /&gt;    If LenB(XMLUnescape) Then&lt;br /&gt;        i = InStrB(1, XMLUnescape, "&amp;")&lt;br /&gt;        &lt;br /&gt;        'If there is a &amp; in the string, that is where we should start searching&lt;br /&gt;        If i Then&lt;br /&gt;            'Make sure there is a semi colon, telling us there may be escape sequences&lt;br /&gt;            If InStrB(i, XMLUnescape, ";") Then&lt;br /&gt;                'Escape various illegal characters&lt;br /&gt;                If InStrB(i, XMLUnescape, "&amp;lt;") Then XMLUnescape = Replace(XMLUnescape, "&amp;lt;", "&lt;")&lt;br /&gt;                If InStrB(i, XMLUnescape, "&amp;gt;") Then XMLUnescape = Replace(XMLUnescape, "&amp;gt;", "&gt;")&lt;br /&gt;                If InStrB(i, XMLUnescape, "&amp;quot;") Then XMLUnescape = Replace(XMLUnescape, "&amp;quot;", """")&lt;br /&gt;                If InStrB(i, XMLUnescape, "&amp;apos;") Then XMLUnescape = Replace(XMLUnescape, "&amp;apos;", "'")&lt;br /&gt;                If InStrB(i, XMLUnescape, "&amp;amp;") Then XMLUnescape = Replace(XMLUnescape, "&amp;amp;", "&amp;")&lt;br /&gt;            End If&lt;br /&gt;        End If&lt;br /&gt;    End If&lt;br /&gt;&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;Public Function XMLParse(ByRef strData As String, ByVal lngFlags As Long) As VBA.Collection&lt;br /&gt;    '------------------------------------------------------------------&lt;br /&gt;    'Purpose:   Wrapper method to quickly parse an XML document&lt;br /&gt;    '&lt;br /&gt;    'Params:&lt;br /&gt;    '           strData:    Data property of XMLDoc&lt;br /&gt;    '           lngFlags:   Flags property of XMLDoc&lt;br /&gt;    '&lt;br /&gt;    'Returns:   Reference to top-level nodes collection&lt;br /&gt;    '------------------------------------------------------------------&lt;br /&gt;    &lt;br /&gt;    Dim objXML          As XMLDoc&lt;br /&gt; &lt;br /&gt;    'Create new XML object&lt;br /&gt;    Set objXML = New XMLDoc&lt;br /&gt;    &lt;br /&gt;    'Copy data/flags params&lt;br /&gt;    objXML.Data = strData&lt;br /&gt;    objXML.Flags = lngFlags&lt;br /&gt;    &lt;br /&gt;    'Parse / return collection&lt;br /&gt;    Set XMLParse = objXML.Parse()&lt;br /&gt;    &lt;br /&gt;    'Destroy XMLDoc reference&lt;br /&gt;    Set objXML = Nothing&lt;br /&gt; &lt;br /&gt;End Function&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-5339515191565595006?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/5339515191565595006/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=5339515191565595006' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/5339515191565595006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/5339515191565595006'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2009/04/nf-e-xml-para-o-visual-basic.html' title='NF-E - XML PARA O VISUAL BASIC'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3058321952258287354.post-9209365156416744947</id><published>2008-05-06T09:40:00.000-07:00</published><updated>2008-05-09T10:29:31.053-07:00</updated><title type='text'>CONHECIMENTOS PRÁTICOS VB</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;CONHECIMENTOS PRÁTICOS&lt;br /&gt;VISUAL BASIC&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. Você acabou de instalar o Visual Basic 6 na sua máquina. O computador no qual você está realizando esta instalação é novo. A aplicação que você desenvolveu utiliza o Spread na maioria de seus formulários e o Crystal Reports para os relatórios. Os fontes de seu aplicativo só poderão ser acessados por este computador ligado através do Visual Basic se:&lt;br /&gt;&lt;br /&gt;a. ( ) O aplicativo Spread estiver instalado na máquina e os acessos a base de dados devidamente configurados&lt;br /&gt;b. ( ) O aplicativo Crystal Reports estiver instalado na máquina e os acessos a base de dados devidamente configurados&lt;br /&gt;c. ( ) O aplicativo Crystal Reports estiver instalado na máquina, o aplicativo Spread devidamente instalado e os acessos a base de dados devidamente configurados&lt;br /&gt;d. ( ) A máquina estiver ligada, o Visual Basic instalado e os fontes disponíveis para acesso e a base de dados acessível&lt;br /&gt;e. ( ) A máquina estiver ligada, o Visual Basic instalado, o aplicativo Crystal Reports estiver instalado na máquina, o aplicativo Spread devidamente instalado e os acessos a base de dados devidamente configurados&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Na situação descrita na pergunta 01, o que aconteceria aos fontes de um aplicativo Visual Basic, se os mesmos fossem abertos na máquina e o usuário salvasse o projeto na saída?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Ainda na situação descrita na pergunta 01, que prática deve ser adotada para se abrir os fontes com o novo equipamento de modo a não comprometê-los para uso em um dos outros computadores de utilização para desenvolvimento?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. No caso de os fontes de uma aplicação em Visual Basic serem comprometidos, que práticas adotadas pelos desenvolvedores podem contornar o problema e/ou como o mesmo poder ser contornado?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. Como se registra uma dll que esteja faltando para um aplicativo Visual Basic e em que pasta esta dll deve ser inserida em uma máquina com o sistema operacional Windows XP?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. Que aplicativo utilitário pode ser utilizado para realizar consultas em uma base de dados SQL Server e quais os comandos mais comuns utilizados para realizar tais tarefas?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7. Nas linhas de código abaixo, relacione os erros que ocorrerão após uma compilação:&lt;br /&gt;&lt;br /&gt;Option Explicit&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;Me.Top = 2370&lt;br /&gt;Me.Left = 3405&lt;br /&gt;SU_CarregaGrid&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Sub SU_CarregaraGrid ()&lt;br /&gt;&lt;br /&gt;sSQL = "SELECT Codigo, sigla, Nome FROM Fabric WHERE isnull(CodLocalFab,'')='2' ORDER By Codigo"&lt;br /&gt;sSQL = sSQL &amp;amp; "; SELECT @@RowCount"&lt;br /&gt;&lt;br /&gt;oRS.Open sSQL, oDB, adOpenForwardOnly&lt;br /&gt;&lt;br /&gt;If Not oRS.EOF Then&lt;br /&gt;sClip = oRS.GetString(adClipString, , vbTab, vbCrLf)&lt;br /&gt;Set oRS = oRS.NextRecordset&lt;br /&gt;iLinhas = oRS.Fields(0)&lt;br /&gt;End If&lt;br /&gt;oRS.Close&lt;br /&gt;Set oRS = Nothing&lt;br /&gt;&lt;br /&gt;' Carrega a Grid&lt;br /&gt;With grdDados&lt;br /&gt;.Col = 1&lt;br /&gt;.Col2 = .MaxCols&lt;br /&gt;.Row = 1&lt;br /&gt;.Row2 = iLinhas&lt;br /&gt;.MaxRows = iLinhas&lt;br /&gt;.Clip = sClip&lt;br /&gt;End With&lt;br /&gt;Screen.MousePointer = vbDefault&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;8. Descreva os passos de como ativar a utilização de um componente Adodc no Visual Basic:&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;br /&gt;9. Crie um procedimento em Visual Basic para ler e abrir um arquivo-texto com os campos Nome, Endereço e telefone de nome agenda.txt. Os dados do arquivo-texto agenda.txt devem ser extraídos de uma base de dados chamada func.mdb. &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Seguem as estruturas do arquivo e da tabela:&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;Arquivo Agenda.txt: &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;Sem cabeçalho&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;Detalhe: &lt;/div&gt;&lt;div align="justify"&gt;Nome (50 caracteres) &lt;/div&gt;&lt;div align="justify"&gt;Endereço (100 caracteres) &lt;/div&gt;&lt;div align="justify"&gt;Telefone (10 caracteres) &lt;/div&gt;&lt;div align="justify"&gt;CRLF&lt;/div&gt;&lt;div align="justify"&gt;Sem rodapé&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Tabela func.mdb:&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;ID: AutoNumeração&lt;/div&gt;&lt;div align="justify"&gt;Nome: Texto(50)&lt;/div&gt;&lt;div align="justify"&gt;Endereco: Texto(100)&lt;/div&gt;&lt;div align="justify"&gt;Telefone: Texto(10)&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;(Deixar aqui um espaço de uma folha)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;10. Cite o endereço de três sites que você pode consultar para pesquisa de informações sobre o uso do Visual Basic na busca de informações sobre o uso de um componente, código- exemplos ou dúvidas freqüentes:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Nota:&lt;/strong&gt; A prova tem duração de 90 minutos. Leia atentamente cada questão antes de responder. Não rasure sua prova, nem escreva fora das linhas demarcadas. Use letra de forma, se possível, e tente ser o mais claro possível em suas respostas.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BOA SORTE!!!&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8798043197718177";
/* Leo_728x90, criado 07/05/08 */
google_ad_slot = "9100319137";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3058321952258287354-9209365156416744947?l=provapraticavb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://provapraticavb.blogspot.com/feeds/9209365156416744947/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3058321952258287354&amp;postID=9209365156416744947' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/9209365156416744947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3058321952258287354/posts/default/9209365156416744947'/><link rel='alternate' type='text/html' href='http://provapraticavb.blogspot.com/2008/05/conhecimentos-prticos-vb.html' title='CONHECIMENTOS PRÁTICOS VB'/><author><name>Manoel Leonardo Metelis Florindo</name><uri>http://www.blogger.com/profile/03936832727305785609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_bdQp47NOTVo/SVZFOFnEKsI/AAAAAAAABGk/hFrJSvJ_cHE/S220/ichts.jpg.jpg'/></author><thr:total>1</thr:total></entry></feed>
