<?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-2475046556785200892</id><updated>2011-11-27T22:16:38.186-03:00</updated><category term='Transações'/><category term='SQL'/><category term='Ambiente'/><category term='Componentes'/><category term='eDev10'/><category term='Apresentação'/><category term='uniPaaS'/><category term='CIGAM'/><category term='API'/><category term='Google'/><category term='Avançado'/><category term='Magic'/><category term='HttpGet'/><title type='text'>Magic Blog Brasil</title><subtitle type='html'>Informações sobre o software Magic, uma linguagem orienta a serviços.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>MauOuriques</name><uri>http://www.blogger.com/profile/09580364268351568044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2475046556785200892.post-9153353282394983634</id><published>2009-05-25T23:06:00.004-03:00</published><updated>2009-05-26T08:20:22.827-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='uniPaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='HttpGet'/><title type='text'>Integração com o Twitter</title><content type='html'>Semana passada estive no 11 encontro de profissionais de internet, patrocinado pela &lt;a href="http://www.locaweb.com.br/"&gt;locaweb&lt;/a&gt; e finalmente entendi como se deve usar o &lt;a href="http://www.twitter.com/"&gt;Twitter&lt;/a&gt;. No encontro foi informado qual o canal do encontro #11elw e então peguei a grande sacada desta rede social. Os participantes estavam trocando opniões em tempo real sobre o assunto que os palestrantes estavam falando, simplesmente genial isso. Apesar de ser usuário a mais tempo, não etendia muito bem como deveria ser o uso desta rede social.&lt;div&gt;Bom, fiquei tão empolgado que resolvi estudar um pouco mais sobre o assunto. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Existe uma &lt;a href="http://apiwiki.twitter.com/"&gt;API&lt;/a&gt; para integração com o serviço e talvez esteja aí mais um motivo para que o Twitter faça tanto sucesso. A integração com outros aplicativos é muito simples e fácil de se implementar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Neste post vou mostrar como integrar o uniPaaS com este serviço.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A primeira coisa que precisamos fazer é buscar as atualizações que o usuário do Twitter possui. &lt;/div&gt;&lt;div&gt;Para isso precisamos acessar o endereço:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style=" color: rgb(68, 68, 68);  line-height: 19px; font-family:'courier new';font-size:13px;"&gt;&lt;a href="http://twitter.com/statuses/friends_timeline.xml" style="text-decoration: none;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: inherit; font-style: inherit; font-size: 13px; font-family: inherit; vertical-align: baseline; color: rgb(0, 194, 252); "&gt;http://twitter.com/statuses/friends_timeline.xml&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"    style="font-family:'courier new';font-size:100%;color:#444444;"&gt;&lt;span class="Apple-style-span"  style=" line-height: 19px;font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;O uniPaaS possui a função HTTPGet para retornar o valor de um endereço web numa variável Blob.&lt;/div&gt;&lt;div&gt;No caso do Twitter, precismos ainda passar o usuário e senha, então no nosso exemplo vamos atualizar a variável Blob com a seguinte expressão:&lt;/div&gt;&lt;div&gt;HTTPGet('http://nome_usuario_twitter:senha_usuario_twitter@twitter.com/statuses/friends_timeline.xml')&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No meu caso, joguei essa informação para um arquivo XML que armazenei no meu projeto. Este arquivo irá lhe mostrar quais foram as últimas atualizações que o os seu usuário possui, como quem postou, hora, e imagem do usuário.&lt;/div&gt;&lt;div&gt;Infelizmente o uniPaaS não consegue mostrar uma imagem que está armazeada na web, você precisará "baixar" as imagens que o arquivo mostra. Para isso fiz um outro programa que verifica o nome do arquivo, faz downaload (novamente usei a função HTTPGet) e depois grava no sistema operacional, através do BLB2File.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Até aqui, já poderíamos ver quais são as atualizações que o usuário possui, mas o legal mesmo é a interação, vamos ver como podemos postar no Twitter.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para isso, criei um programa onde o usuário pode digitar um texto (no máximo 140 caracteres) e ao clicar no botão atualizar, chamo uma função que dispara o seguinte comando.&lt;/div&gt;&lt;div&gt;HTTPPost ('http://nome_usuario_twitter:senha_usuario_twitter@twitter.com/statuses/update.xml?status='&amp;amp;Trim(A) )&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Onde A é a variável que o usuário digitou.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Veja como ficou o resultado:&lt;/div&gt;&lt;br /&gt;&lt;img src="http://2.bp.blogspot.com/_WUhpU5EKRTg/ShtaOvWqC1I/AAAAAAAAAPk/9tlVVpfMbLo/s400/Twitter.png" 0="" 10px="" border="0" alt="Twitter by Mau Ouriques" id="BLOGGER_PHOTO_ID_5339960992454019922" /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No próximo post, vou passar todo o código deste projeto.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Até a próxima&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Saúde, Paz e mta Energia&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mau Ouriques&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Magic Blog Basil, informações sobre o mundo do software magic.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2475046556785200892-9153353282394983634?l=magicblogbrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/9153353282394983634/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2475046556785200892&amp;postID=9153353282394983634' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/9153353282394983634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/9153353282394983634'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/2009/05/integracao-com-o-twitter.html' title='Integração com o Twitter'/><author><name>MauOuriques</name><uri>http://www.blogger.com/profile/09580364268351568044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WUhpU5EKRTg/ShtaOvWqC1I/AAAAAAAAAPk/9tlVVpfMbLo/s72-c/Twitter.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2475046556785200892.post-367589081825846341</id><published>2008-11-16T17:07:00.001-03:00</published><updated>2008-11-16T17:07:56.715-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uniPaaS'/><title type='text'>uniPaaS 1.5</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; "&gt;&lt;div style="margin-top: 6px; margin-right: 6px; margin-bottom: 6px; margin-left: 6px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; min-height: 1100px; font-family: Verdana; font-size: 10pt; line-height: normal; background-color: rgb(255, 255, 255); direction: ltr; "&gt;&lt;h1 style="font-size: 18pt; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;uniPaaS 1.5&lt;/span&gt;&lt;/h1&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;     Liberada a nova versão da ferramenta de desenvolvimento uniPaas versão 1.5 prometendo uma nova era para o desenvolvimento de sistemas.  Como o nome já disse a intenção é num único ambiente de desenvolvimento trazer o que a de melhor para o mundo do desktop  e web.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;    Para o ambiente desktop foram anunciados varias melhorias para acelerar o desenvolvimento de novos e sofisticados aplicativos. Imagens animadas e com transparência, tooltip para funções no Editor de Expressões, hiperlink com possibilidade de troca de cores entre outras mais, são velhas reivindicações atendidas para esta versão.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;    Já para o mundo web a troca de componentes Java para .Net promete dar mais estabilidade. A grande sacada da versão é o desenvolvimento RIA em inglês Rich Internet Application, traduzindo seria algo como Aplicações ricas para web, neste leia-se JavaScript e Ajax, é a ferramenta RAD entrando para o universo web 2.0.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Com a versão, você recebe duas demos dos aplicativos:&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Magic Optmizer - ferramenta que analisa seu código e passa importantes informações sobre a estrutura do seu ambiente.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;RM Comverter - ferramenta para retirar o RM Compatible que ocorre na conversão do versão 9 para 10. Permitindo a você iniciar o mais breve possível no mundo RIA.&lt;/p&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;h2 style="font-size: 14pt; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;Novos certificados&lt;/span&gt;&lt;/h2&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Os seguintes databases foram liberados e agora estão certificados:&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;ul style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;li style="margin-top: 0px; margin-bottom: 0px; "&gt;MSSQL 2008&lt;/li&gt;&lt;li style="margin-top: 0px; margin-bottom: 0px; "&gt;Oracle 11g&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;O seguinte sistema operacional foi checado e agora certificado:&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;ul style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;li style="margin-top: 0px; margin-bottom: 0px; "&gt;Windows 2008 Server&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style="font-size: 14pt; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;Novas recursos, mudança de comportamento&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style="font-size: 12pt; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;Editor de expressões (Expression Editor)&lt;/span&gt;&lt;/h3&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;ul style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;li style="margin-top: 0px; margin-bottom: 0px; "&gt;A descrição da sintaxe da expressão foi acrescentada a lista de funções, tornando mais fácil para o desenvolver conhecer as funções&lt;/li&gt;&lt;li style="margin-top: 0px; margin-bottom: 0px; "&gt;Um dinâmico tooltip exibindo a sintaxe da função foi adicionado. O Tooltip é aberto automaticamente mas você pode invocar novamente pressionando Ctrl+space&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style="font-size: 12pt; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;Lista de variáveis coloridas&lt;/span&gt;&lt;span style="font-weight: normal; "&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;As variáveis agora mudam de cor conforme o seu tipo (Virtual, Parameter ou Column)&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style="font-size: 12pt; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;Push Bottom&lt;/span&gt;&lt;/h3&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;O Push Bottom control recebeu novas funcionalidades, agora é possível enviar parâmetros quando o botão é disparado através de um Raise Event.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Quando utilizado como um hiperlink, agora é possível alinhar horizontalmente (Esquerda, Direta, Centro)&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;    Adiciona a propriedade de Cor para o Hiperlink, com isso não teremos mais apenas hiperlinks com a cor cinza.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style="font-size: 12pt; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;Tab&lt;/span&gt;&lt;/h3&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Uma nova propriedade chamada "Visible Layer List" promete definir as Guias que serão listadas no Runtime e também você poderá mostrar, esconder ou reordenar todas as guias com muito mais facilidade.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style="font-size: 12pt; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;Imagens&lt;/span&gt;&lt;/h3&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Esta versão passa a suportar imagens transparente e animadas.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-size: 16px; font-weight: bold; "&gt;Modify in Query&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;O controle Modify in Query mode foi extendido para Edit e Check Box.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style="font-size: 12pt; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;Evento Control Modify&lt;/span&gt;&lt;/h3&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Um novo evento chamando "Control Modify" foi adicionado. Este evento será disparado toda vez que um controle for modificado. Isto lhe ajudará a escrever uma lógica para ser executada após um valor ser alterado, inclusive caracter a caracter, sem que o usuário saia do controle. Para pegar o valor que o usuário está digitado você pode usar a função Editget().&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style="font-size: 12pt; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;Verify Operation&lt;/span&gt;&lt;/h3&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;O Verify Operation recebeu as seguintes novidades:&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;/p&gt;&lt;ul style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;li style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Possibilidade de informar o título&lt;/p&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Selecionar uma imagem para ser mostrada na janela de mensagem&lt;/p&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Selecionar os tipos de botões que serão listados&lt;/p&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Definir o tipo de mensagem que irá aparecer no log de mensagem&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style="font-size: 12pt; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;Chamadas entre programas&lt;/span&gt;&lt;/h3&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Um recurso bem interessante que foi incluído na versão é a capacidade de pular para um programa definido na operação Call Program. Para abrir o programa, basta pressionar Ctrl+F5 em cima da linha da operação. O eDev10 irá automaticamente abrir o programa, para retornar ao programa original basta pressionar Ctrl+Shift+F5.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Este recurso também pode ser acessado via Menu de Opções.&lt;/p&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt; &lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style="font-size: 12pt; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;Open Aplication com parâmetro&lt;/span&gt;&lt;/h3&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Uma novo parâmetro opcional foi incluído no evento Open Aplication. Este parâmetro permite ao desenvolvedor trocar de aplicações sem a necessidade de uma intervenção do usuário.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style="font-size: 12pt; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;Melhorias na função DBName()&lt;/span&gt;&lt;/h3&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Um novo parâmetro opcional (tipo informação) foi incluído na função DBName() para retornar informações adicionais da tabela, como Database name.&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style="font-size: 12pt; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;Função CabinetUnload()&lt;/span&gt;&lt;/h3&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Uma nova função foi adicionada para permitir ao desenvolvedor descarregar o componente. Através desta função é possível deduzir que cada componente carregado consome memória, então tenha zelo ao utilizar componentes na sua solução.&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style="font-size: 12pt; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;Mensagem de aviso para Programas grandes&lt;/span&gt;&lt;/h3&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;A verificação de programas recebeu melhorias, como mostrar uma mensagem quando a performance do programa pode ser prejudicada pelo tamanho do mesmo. A verificação do tamanho pode ser ativada através de um novo item na sessão Special chamado "SpecialProgXMLSizeWarning". A mensagem pode ser disparada conforme o tamanho especificado no ambiente. &lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Aqui mais uma vez, vemos que o desenvolvedor precisa ter cuidado com a engenharia de seus programas.&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Maurício Ouriques&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;Pesquisa &amp;amp; Desenvolvimento &lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;16 de Novembro de 2008&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Magic Blog Basil, informações sobre o mundo do software magic.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2475046556785200892-367589081825846341?l=magicblogbrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/367589081825846341/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2475046556785200892&amp;postID=367589081825846341' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/367589081825846341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/367589081825846341'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/2008/11/unipaas-15.html' title='uniPaaS 1.5'/><author><name>MauOuriques</name><uri>http://www.blogger.com/profile/09580364268351568044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2475046556785200892.post-891674812435919938</id><published>2008-09-19T08:44:00.000-03:00</published><updated>2008-09-19T08:54:32.218-03:00</updated><title type='text'>Como atualizar subform usando Event</title><content type='html'>Nos deparamos com o seguinte problema, temos um programa de Ordem de Serviço que possui dois subforms, um para os itens e outro dentro deste para as atividades do item. Quando estávamos posicionados nas atividades do item (3ª task), realizamos algumas alterações nos registros e queríamos atualizar os dados dos itens (2ª task) sem sair da task de atividades, ou seja, precisamos atualizar o dataview da task pai. Para isso encontrei uma solução que gostaria de compartilhar.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Tenho a seguinte estrutura no programa, a task principal abre a tabela Ordem de Serviço no Main Table. Nesta task tenho um form onde tenho alguns campos da O.S. e também um subform para os itens da O.S.&lt;br /&gt;Na task filha, temos a abertura da tabela Itens da OS, no form desta task alguns campos do Item e também um subform para as atividades do Item da OS.&lt;br /&gt;Na task Atividade da OS, também temos alguns campos no form e um botão chamado Atualizar Item. Quando clicar neste botão, vou atualizar todos os Itens da OS, neste caso, já vou querer ver as alterações nos registros.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5247698694732447298" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_WUhpU5EKRTg/SNOSKMvO_kI/AAAAAAAAAJw/67MOBtm1enI/s400/tela.png" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para resolver este problema, vamos criar um Evento (CTRL+U) na task inicial (O.S.) chamado AtualizarSubForm, adicionando um parâmetro neste evento que iremos chamar de p_nomeForm&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_WUhpU5EKRTg/SNORhxQuy-I/AAAAAAAAAJg/-dMbm9TZopM/s1600-h/Evento.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_WUhpU5EKRTg/SNORhxQuy-I/AAAAAAAAAJg/-dMbm9TZopM/s1600-h/Evento.png"&gt;&lt;/a&gt;&lt;img id="BLOGGER_PHOTO_ID_5247698392393628754" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_WUhpU5EKRTg/SNOR4mcCvFI/AAAAAAAAAJo/5Jxntkmo8x0/s400/Evento.png" border="0" /&gt;&lt;br /&gt;Vamos implementar o evento na task e dentro do evento vamos adicionar um Raise Event SubForm Refresh, passando como parâmetro a variável p_nomeForm.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_WUhpU5EKRTg/SNOSdYOjA0I/AAAAAAAAAJ4/5Bxhv6YhvDw/s1600-h/EventoTask.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5247699024234087234" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_WUhpU5EKRTg/SNOSdYOjA0I/AAAAAAAAAJ4/5Bxhv6YhvDw/s400/EventoTask.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para finalizar vamos alterar a propriedade do Event para Propagate=Yes&lt;br /&gt;&lt;br /&gt;Agora quando estivermos posicionados nas atividades da O.S. conseguiremos disparar o evento da task inicial, passando como parâmetro o nome do subForm que desejamos atualizar, no meu caso ‘FormItem´.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_WUhpU5EKRTg/SNOSw4UqM1I/AAAAAAAAAKA/E1FqBA-T7XM/s1600-h/CallEvent.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5247699359267173202" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_WUhpU5EKRTg/SNOSw4UqM1I/AAAAAAAAAKA/E1FqBA-T7XM/s400/CallEvent.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agora basta implementar em seus programas.&lt;br /&gt;&lt;br /&gt;Boa sorte.&lt;br /&gt;&lt;br /&gt;&lt;a name="_MailAutoSig"&gt;Maurício Ouriques&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Magic Blog Basil, informações sobre o mundo do software magic.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2475046556785200892-891674812435919938?l=magicblogbrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/891674812435919938/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2475046556785200892&amp;postID=891674812435919938' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/891674812435919938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/891674812435919938'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/2008/09/como-atualizar-subform-usando-event.html' title='Como atualizar subform usando Event'/><author><name>MauOuriques</name><uri>http://www.blogger.com/profile/09580364268351568044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WUhpU5EKRTg/SNOSKMvO_kI/AAAAAAAAAJw/67MOBtm1enI/s72-c/tela.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2475046556785200892.post-7659804162235507628</id><published>2007-11-06T13:42:00.000-03:00</published><updated>2007-11-06T13:44:32.036-03:00</updated><title type='text'>Refresh - Como atualizar os registros da tela</title><content type='html'>A intenção deste post é mostrar as diferenças entre Record Flush,&lt;br /&gt;Screen Refresh e View Refresh.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Record Flush &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;O evento interno Record Flush causa a gravação do registro sem sair do&lt;br /&gt;mesmo. Após a execução o ciclo do registro corrente é completado.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Screen Refresh &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;O evento interno Screen Refresh permite ao desenvolvedor atualizar os&lt;br /&gt;dados da tela. Primeiro, o ciclo do registro em que se está&lt;br /&gt;posicionado é completado (como ocorre no evento Record Flush), Depois&lt;br /&gt;a operação Get Current é realizada para cada registro da tela. Você&lt;br /&gt;deve usar este evento quando desejar atualizar os registros que estão&lt;br /&gt;sendo mostrado na tela. O registro atual não será alterado (exceto&lt;br /&gt;quando outro usuário alterar o registr).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;View Refresh &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;O evento View Refresh  permite ao desenvolvedor atualizar os dados da&lt;br /&gt;tela. Primeiro , o ciclo do registro atual é completado (como ocorre&lt;br /&gt;no evento Record Flush). Depois, o dataview é criado baseando-se na&lt;br /&gt;definição do dataview (Range, Locate e Sort). Você deve usar este&lt;br /&gt;evento quando desejar atualizar completamente o dataview. O eDeveloper&lt;br /&gt;irá tentar manter o cursor no mesmo registro posicionado.&lt;br /&gt;Quando usar este evento, se o evento Get Current  (posicionar no&lt;br /&gt;registro) falhar,  a mensagem "Record is not longer in view" será&lt;br /&gt;mostrada e irá posicionar no próximo registro (baseado na definição do&lt;br /&gt;dataview). A operação Ger Current pode falhar porque outro usuário&lt;br /&gt;pode excluir o registro ou modificá-lo.&lt;br /&gt;&lt;/p&gt;Maurício Ouriques&lt;div class="blogger-post-footer"&gt;Magic Blog Basil, informações sobre o mundo do software magic.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2475046556785200892-7659804162235507628?l=magicblogbrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/7659804162235507628/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2475046556785200892&amp;postID=7659804162235507628' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/7659804162235507628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/7659804162235507628'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/2007/11/refresh-como-atualizar-os-registros-da.html' title='Refresh - Como atualizar os registros da tela'/><author><name>MauOuriques</name><uri>http://www.blogger.com/profile/09580364268351568044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2475046556785200892.post-6396405129800236361</id><published>2007-08-24T08:18:00.000-03:00</published><updated>2007-08-24T08:20:03.951-03:00</updated><title type='text'>Configurando eDev10 para usar Web Services</title><content type='html'>&lt;h4 style="margin-bottom: 0px; font-family: verdana;" class="TextColor1" id="subjcns!4C74DEE76930945E!263"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h4&gt;&lt;div style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;Caso você esteja com problemas em configurar o ambiente eDeveloper 10 para uso de Web Services, segue um roteiro explicando como configurar.&lt;/span&gt;&lt;/div&gt; &lt;div style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;Utilize a versão 1.5.0 do Java JDK&lt;span style="color:#000000;"&gt;. &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-size: 10pt; color: black; font-family: 'Courier New';"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;1. Environment Variables: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;When typing "%WASP_HOME%" in "Start-&gt;Run" you should navigate to the SSJ directory that was created by eDeveloper 10 installation. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;When typing "%JAVA_HOME%" you should navigate to the installed Java directory along side SSJ (if you didn't have Java when installing eDeveloepr) or to another location if Java was installed before eDeveloper, in this case you must make sure you have JDK version 1.5. &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;2. In the %WASP_HOME%\lib directory you should find many JAR files (among them edevSSJ.jar and edevRequester.jar). &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;3. After you create the service entry and load it (at the moment you can't reach this) you should have a new JAR file under "Magic directory/SoapClientModules/Service name". &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;You can identify the JAVA version by opening the "ReadMe.html" file located under your %JAVA_HOME%. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Magic Blog Basil, informações sobre o mundo do software magic.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2475046556785200892-6396405129800236361?l=magicblogbrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/6396405129800236361/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2475046556785200892&amp;postID=6396405129800236361' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/6396405129800236361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/6396405129800236361'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/2007/08/configurando-edev10-para-usar-web.html' title='Configurando eDev10 para usar Web Services'/><author><name>MauOuriques</name><uri>http://www.blogger.com/profile/09580364268351568044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2475046556785200892.post-1662540079616375904</id><published>2007-08-17T08:18:00.000-03:00</published><updated>2007-08-17T08:20:56.732-03:00</updated><title type='text'>Magic - Rich Client</title><content type='html'>A Magic está finalizando um novo método para desenvolvimento de programas que estão chamando de Rich Client. Este novo conceito ainda não está liberado oficialmente mas já está incluso no pacote 10.1 SP3 liberado esta semana, para seu uso é necessário uma nova licença.&lt;br /&gt;&lt;br /&gt;Este novo conceito de programação é totalmente voltado para ambiente Web, uma das grandes vantagens é a utilização de computadores com baixa configuração. Mesmo sendo um produto web, será possível utilizar todos os recursos de interface GUI disponíveis atualmente, permitindo uma interação completa com o usuário.  Outra vantagem que eles estão anunciando é a execução da ferramenta em vários sistemas operacionais, inclusive em dispositivos móveis.&lt;br /&gt;&lt;br /&gt;Falando mais tecnicamente, este novo recurso utiliza uma aplicação JAVA que irá rodar no lado do client, eles prometem uma performance surpreendente. A vantagem será que o usuário não precisa utilizar um navegador web (no browser), a ferramenta utiliza seu próprio mecanismo de navegação.&lt;br /&gt;&lt;br /&gt;Falando um pouco mais sobre os recursos de interface, estarão disponíveis os controles tree view, tab control, combo Box, list Box, etc. Teremos integração com menus. Houve uma melhoria considerável no table control para web, permitindo sort, multi marking, resizing columns.&lt;br /&gt;&lt;br /&gt;OS recursos não param por ai, o aplicativo poderá executar comandos no S.O. do usuário, também será permitido a integração com ActiveX, manipulação de arquivos e no ambiente do sistema operacional.&lt;br /&gt;&lt;br /&gt;Para finalizar, este ambiente rodará em Windows, Linux ou ainda Mac OS, podendo ser utilizado em celulares com Windows Mobile ou CE.&lt;br /&gt;&lt;br /&gt;Agora é esperar para ver.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Maurício Ouriques&lt;div class="blogger-post-footer"&gt;Magic Blog Basil, informações sobre o mundo do software magic.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2475046556785200892-1662540079616375904?l=magicblogbrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/1662540079616375904/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2475046556785200892&amp;postID=1662540079616375904' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/1662540079616375904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/1662540079616375904'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/2007/08/magic-rich-client.html' title='Magic - Rich Client'/><author><name>MauOuriques</name><uri>http://www.blogger.com/profile/09580364268351568044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2475046556785200892.post-2988168472192949663</id><published>2007-08-13T23:11:00.000-03:00</published><updated>2007-08-13T23:13:27.674-03:00</updated><title type='text'>eDeveloper 10 SP3</title><content type='html'>Acaba de ser liberado o novo SP da ferramenta, com grandes melhorias. Veja...&lt;br /&gt;&lt;br /&gt; &lt;p style="margin: 0in; font-weight: bold; font-family: Calibri; font-size: 14pt;"&gt;Liberado novo release do eDev&lt;span style=""&gt;  &lt;/span&gt;10 SP3&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-weight: bold; font-family: Calibri; font-size: 14pt;"&gt;Version Control&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;Permite trabalhar com aplicativo de controle de versão&lt;span style=""&gt;  &lt;/span&gt;chamado PushOK&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;&lt;a href="http://www.pushok.com/soft_cvs_proxy.php"&gt;http://www.pushok.com/soft_cvs_proxy.php&lt;/a&gt;&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;&lt;a href="http://www.pushok.com/soft_cvs_vsvss.php"&gt;http://www.pushok.com/soft_cvs_vsvss.php&lt;/a&gt;&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-weight: bold; font-family: Calibri; font-size: 14pt;"&gt;Browse Client&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;Melhorias nos scripts eDevScripts (Browse Client)&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-weight: bold; font-family: Calibri; font-size: 14pt;"&gt;Migração&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;Agora permite migrar parte de uma aplicação v9, como range de programas.&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 14pt;"&gt;&lt;span style="font-weight: bold;"&gt;Suporte&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;PDF&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;O eDev10 agora suporta imprimir diretamente para um arquivo PDF, eliminando a necessidade de configurar uma impressora PDF&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;Possibilita implementar política de segurança em vários níveis com proteção por senha para impressão, cópia ou anotação.&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-weight: bold; font-family: Calibri; font-size: 14pt;"&gt;Arquivo de Segurança&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;Um novo utilitário chamado &lt;span style="font-weight: bold;"&gt;MgUsrDmp.exe &lt;/span&gt;é instalado na pasta eDeveloper.&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;Este utilitário permite exportar o arquivo de segurança para um arquivo XML, tornando fácil o acesso e pesquisa as informações do usuário. &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;Para rodar este utilitário você precisa informar a senha do usuário SUPERVISOR.&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-weight: bold; font-family: Calibri; font-size: 14pt;"&gt;Utilitário para extração de String&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;Um novo utilitário foi desenvolvido&lt;span style=""&gt;  &lt;/span&gt;para permitir a você extrair frases do seu projeto do arquivo XML.&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;Este utilitário irá ajudá-lo&lt;span style=""&gt;  &lt;/span&gt;quando você precisar traduzir o sistema para multi-linguagens.&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;Este utilitário pode ser executado por ambas as &lt;span style="font-weight: bold;"&gt;FERRAMENTA&lt;/span&gt; (Tools) de menus como um componente.&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-weight: bold; font-family: Calibri; font-size: 14pt;"&gt;Gerenciamento de Janelas&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;A função SetWindowsFocus() foi melhorada para permitir setar o foco em outras janelas&lt;span style=""&gt;  &lt;/span&gt;que não pertencem ao eDeveloper.&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-weight: bold; font-family: Calibri; font-size: 14pt;"&gt;Retorno de valor de Store Procedure para MSSQL&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;&lt;span style=""&gt; &lt;/span&gt;Agora a ferramenta suporta receber o valor de uma SP do MSSQL&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;Isso pode ser feito escrevendo "? =" no enunciado DSQL ("EXEC ? = proc_name") e receber o retorno na variável virtual do return code do SQL Command.&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-weight: bold; font-family: Calibri; font-size: 14pt;"&gt;Utilizando Cursor para MSSQL em Store Procedure&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;O eDeveloper agora suporta usar cursor para enunciados DSQL que retornam&lt;span style=""&gt;  &lt;/span&gt;um result set.&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;Isso pode ser feito adicionando "/*=== CURSOR=Y ===*/" no DSQL.&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt; &lt;/p&gt;  &lt;p style="margin: 0in; font-weight: bold; font-family: Calibri; font-size: 14pt;"&gt;Suporte a SP no DB2&lt;/p&gt;  &lt;p style="margin: 0in; font-family: Calibri; font-size: 11pt;"&gt;Agora com suporte as Store Procedures do banco DB2.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Magic Blog Basil, informações sobre o mundo do software magic.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2475046556785200892-2988168472192949663?l=magicblogbrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/2988168472192949663/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2475046556785200892&amp;postID=2988168472192949663' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/2988168472192949663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/2988168472192949663'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/2007/08/edeveloper-10-sp3.html' title='eDeveloper 10 SP3'/><author><name>MauOuriques</name><uri>http://www.blogger.com/profile/09580364268351568044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2475046556785200892.post-6050528835724164031</id><published>2007-06-29T20:46:00.000-03:00</published><updated>2007-06-29T20:48:23.181-03:00</updated><title type='text'>Tratamento diferenciado para Verify Error em telas com guias.</title><content type='html'>&lt;div&gt;&lt;span style="font-family:verdana;"&gt;Ao tentar acessar campos em uma guia, caso um campo de uma guia anterior gerar um Verify Error, não é possível identificar imediatamente qual é o campo. A solução é forçar a mudança para a guia onde está o campo com tratamento de Verify Error.&lt;br /&gt;&lt;br /&gt;Programação: Criar um Block Combine Forward, com a condição que indica o Verify Error, dentro deste bloco deve existir um Update na virtual que controla a guia em Combine Backward e o próprio Verify Error em Combine Forward. Quando ocorrer o erro, o processo do Magic será entrar no Block, passar pelo Update e executar o Verify Error que causa um retorno em Backward para o último campo que pode receber foco, neste retorno que é feito o Update que permite o Magic se posicionar na guia e no campo de onde não se pode passar sem antes resolver o erro apresentado.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_qEHIYhGmkI8/RoWaHYa9iYI/AAAAAAAAAAc/vo-f-zGkmMs/s1600-h/verifyontab.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5081637206162770306" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_qEHIYhGmkI8/RoWaHYa9iYI/AAAAAAAAAAc/vo-f-zGkmMs/s400/verifyontab.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Magic Blog Basil, informações sobre o mundo do software magic.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2475046556785200892-6050528835724164031?l=magicblogbrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/6050528835724164031/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2475046556785200892&amp;postID=6050528835724164031' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/6050528835724164031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/6050528835724164031'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/2007/06/tratamento-diferenciado-para-verify.html' title='Tratamento diferenciado para Verify Error em telas com guias.'/><author><name>Roberto Gauer</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qEHIYhGmkI8/RoWaHYa9iYI/AAAAAAAAAAc/vo-f-zGkmMs/s72-c/verifyontab.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2475046556785200892.post-2133854627377536295</id><published>2007-06-19T23:39:00.000-03:00</published><updated>2007-06-23T18:01:46.721-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ambiente'/><category scheme='http://www.blogger.com/atom/ns#' term='eDev10'/><title type='text'>Instalando o eDeveloper no Win2003SP2</title><content type='html'>&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;span style=";font-family:georgia;font-size:10;"  &gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;Este post tem como objetivo ajudar os Magicianos a instalar o eDeveloper num servidor Windows 2003 usando o SP2.&lt;br /&gt;&lt;br /&gt;Segundo a nave mae, Magic Enterprise, existe um bug no InstallShield, ocasionando um erro ao tentar iniciar a instalação do eDev.&lt;br /&gt;&lt;br /&gt;Para contornar este pequeno problema, existem duas soluções.&lt;br /&gt;&lt;br /&gt;1a. Baixar a última versão do InstallShield no endereço http://support.installshield.com/kb/files/Q108322/InstallShieldEngineUpdate701.exe&lt;br /&gt;&lt;br /&gt;2a. Descompactar o pacote numa pasta e a partir da pasta executar o setup.exe&lt;br /&gt;Para descompatar utilize o comando&lt;br /&gt;&lt;br /&gt;EXE_name /extract_all:FOLDERNAME&lt;br /&gt;&lt;br /&gt;EX.&lt;br /&gt;eDev101sp2.exe /extrac_all:C:\temp\sp2install&lt;br /&gt;&lt;br /&gt;Com isso será criada uma pasta dentro de c:\temp chamada sp2instal, ai é só executar o setup.exe.&lt;br /&gt;&lt;br /&gt;T+&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Magic Blog Basil, informações sobre o mundo do software magic.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2475046556785200892-2133854627377536295?l=magicblogbrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/2133854627377536295/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2475046556785200892&amp;postID=2133854627377536295' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/2133854627377536295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/2133854627377536295'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/2007/06/instalando-o-edeveloper-no-win2003sp2.html' title='Instalando o eDeveloper no Win2003SP2'/><author><name>MauOuriques</name><uri>http://www.blogger.com/profile/09580364268351568044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2475046556785200892.post-667391458950760759</id><published>2007-05-13T11:26:00.000-03:00</published><updated>2007-05-14T08:10:30.703-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='HttpGet'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Integrações com Google - Geocoding</title><content type='html'>Agora vamos mostrar como é fácil utilizar a ferramenta eDeveloper com integrações via web utilizando a função HTTPGet.  Para começar vamos realizar uma integração com a  &lt;a href="http://www.google.com/apis/maps/"&gt;API&lt;/a&gt; do Google que fornece o CEP de um endereço.&lt;br /&gt;&lt;br /&gt;Para iniciar, precisamos de um &lt;a href="http://en.wikipedia.org/wiki/Xsd"&gt;xsd&lt;/a&gt; do &lt;a href="http://code.google.com/apis/kml/documentation/kml_21tutorial.html"&gt;kml&lt;/a&gt; para integrarmos com o serviço do Google. Com o xsd na mão é necesário adicioná-lo ao nosso projeto. Para isso crie um nova linha no repositório de dados, selecione o database de XML e então pressione &lt;f9&gt; 'Get Definition'. Informe o caminho onde encontra-se o xsd e confirme. Pronto já temos a estrutura para buscar a informação no Google.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_WUhpU5EKRTg/RkcsWzgRLOI/AAAAAAAAABU/X9FtcjQWUIM/s1600-h/DataKML.PNG"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_WUhpU5EKRTg/RkcsWzgRLOI/AAAAAAAAABU/X9FtcjQWUIM/s320/DataKML.PNG" alt="" id="BLOGGER_PHOTO_ID_5064065076295707874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agora vamos criar o programa que irá buscar na web o CEP de um endereço informado. Para isso crie um novo programa no repositório de programas chamado Geocoding.&lt;br /&gt;Crie uma variável do tipo Blob e altere a propriedade Details.Content para Ansi.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WUhpU5EKRTg/Rkcs3jgRLPI/AAAAAAAAABc/HU_WvKbVxvw/s1600-h/VariavelBlob.PNG"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_WUhpU5EKRTg/Rkcs3jgRLPI/AAAAAAAAABc/HU_WvKbVxvw/s320/VariavelBlob.PNG" alt="" id="BLOGGER_PHOTO_ID_5064065638936423666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Na guia Logic crie uma linha para o Task Prefix, dentro deste handler adicione o comando Update na variável CEP com a seguinte informação: HttpGet('http://maps.google.com/maps/geo?q=Rua+Saldanha+Marinho+336,+Novo+Hamburgo,+Brazil&lt;br /&gt;&amp;output=xml&amp;amp;key=abcde')&lt;br /&gt;Sendo que&lt;br /&gt;http://maps.google.com/maps/geo? é o site onde irá retornar a informar do CEP&lt;br /&gt;Rua+Saldanha+Marinho+336,+Novo+Hamburgo,+Brazil é o endereço pesquisado, aqui um pequeno deslize do nosso amigo Google, Brasil precisa ser informado com Z :(&lt;br /&gt;&lt;/f9&gt;&amp;output=xml&amp;amp; é a forma como a informação chega até nós, no caso um xml e finalmente,&lt;br /&gt;key=abcde que é a sua chave de ativação ao serviço, para conseguir esta chave entre neste &lt;a href="http://www.google.com/apis/maps/signup.html"&gt;endereço.&lt;/a&gt; Aqui uma dica, o serviço só irá funcionar se você informar uma chave correta.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WUhpU5EKRTg/RkctXjgRLQI/AAAAAAAAABk/Li-ySYbfgVI/s1600-h/UpdateVariavel.PNG"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_WUhpU5EKRTg/RkctXjgRLQI/AAAAAAAAABk/Li-ySYbfgVI/s320/UpdateVariavel.PNG" alt="" id="BLOGGER_PHOTO_ID_5064066188692237570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Com o procedimento acima, acabamos de buscar o CEP do endereço informado, agora basta usufruir desta informação. Vamos criar uma subtask para isso.&lt;br /&gt;No Main Source da task filha vamos informar nosso XML PostalCode , na propriedade deste data source vamos informar em Data.XML Source variable a variável criada na task pai (PostalCode_CEP) e vamos adicionar o segmento (Column) PostalCodeNumber.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_WUhpU5EKRTg/RkctnzgRLRI/AAAAAAAAABs/754vsLB-COA/s1600-h/VariavelBlob.PNG"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_WUhpU5EKRTg/RkctnzgRLRI/AAAAAAAAABs/754vsLB-COA/s320/VariavelBlob.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5064066467865111826" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pronto agora basta colocar na tela a informação&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WUhpU5EKRTg/RkdzrjgRLTI/AAAAAAAAAB8/i6yOM29hqJY/s1600-h/Resultado.PNG"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_WUhpU5EKRTg/RkdzrjgRLTI/AAAAAAAAAB8/i6yOM29hqJY/s400/Resultado.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5064143498103565618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Caso queria dar uma espiada no projeto baixe ele &lt;a href="http://mauouriques.googlepages.com/ProjectGeoCodingGoogle.xml"&gt;aqui.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Este é apenas um pequeno exemplo de como podemos integrar o eDeveloper com serviçõs na web, este mesmo serviço fornece também as coordenadas geogáficas do endereço, basta apenas explorá-lo. &lt;br /&gt;&lt;br /&gt;Enjoy :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;f9&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/f9&gt;&lt;div class="blogger-post-footer"&gt;Magic Blog Basil, informações sobre o mundo do software magic.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2475046556785200892-667391458950760759?l=magicblogbrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/667391458950760759/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2475046556785200892&amp;postID=667391458950760759' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/667391458950760759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/667391458950760759'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/2007/05/integraes-com-google-geocoding.html' title='Integrações com Google - Geocoding'/><author><name>MauOuriques</name><uri>http://www.blogger.com/profile/09580364268351568044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WUhpU5EKRTg/RkcsWzgRLOI/AAAAAAAAABU/X9FtcjQWUIM/s72-c/DataKML.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2475046556785200892.post-8378972816538839476</id><published>2007-04-29T22:28:00.000-03:00</published><updated>2007-05-09T08:37:43.363-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eDev10'/><category scheme='http://www.blogger.com/atom/ns#' term='Componentes'/><category scheme='http://www.blogger.com/atom/ns#' term='Avançado'/><title type='text'>eDeveloper - Componentes</title><content type='html'>Realizando chamadas entre componentes M10&lt;br /&gt;&lt;br /&gt;Para quem está usando o eDeveloper 10 tem se confrontado com um grande problema que é a re-chamada entre componetes, ou seja, se tenho um componente A que chama o componente B este não pode chamar o componente A.&lt;br /&gt; &lt;br /&gt;Para resolver este "pequeno" impasse seguem algumas dicas de uma solução:&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;Deve ser criado um Evento Global para que o componente chamado possa devolver um valor, vamos ao passos:&lt;br /&gt; &lt;br /&gt;. No projeto A (principal) dentro do Main Program, deve ser criado um Evento Público teclando (CTRL+U) Janela Events (fig1). Conforme a figura, informe um nome para este Evento, crie um parâmetro para receber um valor e adicione o nome publico no nosso exemplo "ChamarPrograma".&lt;br /&gt; &lt;br /&gt;. Ainda no Main Program agora devemos criar na Guia Logic o gatilho deste Evento, (CTRL+H) para criar o Event.  Na coluna nome pressione F5 para informar o Evento, Type User Event ChamarPrograma. Será solicitado para criar a variável nesta parte do programa. Este recurso é interessante porque a variável estará disponível apenas quando o evento for chamado.&lt;br /&gt; &lt;br /&gt;Com isso estamos preparados para receber a informação do componente que estamos chamando.&lt;br /&gt; &lt;br /&gt;No projeto B (componente chamado) deve ser criada uma chamada para o Evento Público (fig3) gerado no projeto A. &lt;br /&gt;Dentro de um programa na Guia logic crie um evento conforme a necessidade. dentro deste evento crie uma linha com a operação Raise Event apontando para o Public Event informando o nome deste evento, no nosso caso 'ChamarPrograma'. Na coluna Arguments informe os parâmetros que serão passados para o projeto A.&lt;br /&gt; &lt;br /&gt;Com isso estaremos devolvendo ou chamando algum componente do projeto que iniciou a chamada.&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Espero que com isso alguns probleminhas sejam resolvidos ;)&lt;div class="blogger-post-footer"&gt;Magic Blog Basil, informações sobre o mundo do software magic.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2475046556785200892-8378972816538839476?l=magicblogbrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/8378972816538839476/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2475046556785200892&amp;postID=8378972816538839476' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/8378972816538839476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/8378972816538839476'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/2007/04/edeveloper-componentes.html' title='eDeveloper - Componentes'/><author><name>MauOuriques</name><uri>http://www.blogger.com/profile/09580364268351568044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2475046556785200892.post-5733796031413969177</id><published>2007-04-26T09:01:00.000-03:00</published><updated>2007-04-26T09:12:23.287-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Transações'/><title type='text'>Gerenciamento de Dados - E que tal o ambiente multi-usuário?</title><content type='html'>&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;Quando nós desenvolvemos uma aplicação para uma situação multi-usuário, na qual é possível que dois usuários acessem os mesmos dados ao mesmo tempo, a necessidade de desenvolvimento usando transações é maior.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;&lt;o:p&gt;&lt;/o:p&gt;Vamos dar uma olhada nisto com o mesmo cenário simples. Vamos assumir que Fred quer transferir os últimos $50 de sua conta poupança para sua conta corrente (isso parece familiar?), mas sua esposa Wilma está em outra agencia do banco e está sacando $50 da conta corrente para comprar as verduras da semana.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;O que acontece? Neste caso, o cenário não é tão simples como possa parecer:&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;table class="MsoTableGrid" style="border: medium none ; margin-left: 14.4pt; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 0cm 5.4pt; width: 180pt;" valign="top" width="240"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span  lang="PT-BR" style="font-family:Arial;"&gt;Fred&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; padding: 0cm 5.4pt; width: 153pt;" valign="top" width="204"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span  lang="PT-BR" style="font-family:Arial;"&gt;Wilma&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border-style: none solid solid; padding: 0cm 5.4pt; width: 180pt;" valign="top" width="240"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;Lê o total da conta poupança&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; padding: 0cm 5.4pt; width: 153pt;" valign="top" width="204"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border-style: none solid solid; padding: 0cm 5.4pt; width: 180pt;" valign="top" width="240"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;Subtrai $50 da conta poupança&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; padding: 0cm 5.4pt; width: 153pt;" valign="top" width="204"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border-style: none solid solid; padding: 0cm 5.4pt; width: 180pt;" valign="top" width="240"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;Lê o total da conta corrente&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; padding: 0cm 5.4pt; width: 153pt;" valign="top" width="204"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border-style: none solid solid; padding: 0cm 5.4pt; width: 180pt;" valign="top" width="240"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;Soma $50 ao total da conta corrente&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; padding: 0cm 5.4pt; width: 153pt;" valign="top" width="204"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;Lê o total da conta corrente&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;          &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;Ao mesmo tempo &lt;st1:personname productid="em que Wilma" st="on"&gt;em que Wilma&lt;/st1:personname&gt; está verificando o saldo atual da conta corrente, a fim de sacar o dinheiro, Fred está depositando dinheiro na conta corrente.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;Neste caso, ela provavelmente verá que o dinheiro ainda não foi transferido. Ela então verificará o saldo da conta poupança e o que ela verá? Está vazia (lembre que nós mencionamos que Fred está sacando os últimos $50). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;O resultado agora será uma conversa zangada entre o feliz casal.&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;No mundo das transações, este cenário seria ligeiramente diferente. Quando o processo é executado como uma unidade lógica única, um subproduto útil disto é que quaisquer dados atualizados são bloqueados até que a transação tenha sido concluída.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;Neste caso, Wilma ainda provavelmente veria que o dinheiro não teria sido transferido, e quando ela verificasse o saldo da conta poupança, ela veria que o dinheiro ainda está na conta. O telefone tocando para Fred teria um tom diferente.&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;Deve ser observado que os bloqueios são acumulativos dentro da transação. Por exemplo, depois de atualizar um certo registro (o qual é bloqueado como um resultado), o usuário atualiza um segundo registro. Ambos os registros são parte da transação e serão bloqueados até a transação ser ou aplicada (&lt;i style=""&gt;committed&lt;/i&gt;) ou cancelada (&lt;i style=""&gt;rolled back&lt;/i&gt;).&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;Supondo que Wilma decide que ao invés de ligar para Fred, ela vai transferir o dinheiro ela mesma. Mas pelo tempo que isso leva para acontecer, a transação com o Fred tenha sido completada (&lt;i style=""&gt;committed&lt;/i&gt;). Agora, neste caso, quando ela tentar verificar o saldo atual da conta poupança, o total já terá sido atualizado. Ela pode agora alegremente sacar o dinheiro da conta corrente.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  lang="PT-BR" &gt;O que de fato acontece neste caso em particular realmente depende do DBMS usado, mas o propósito aqui é dar uma simples visão das transações.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Fonte: "Data Management.pdf", arquivo acompanha a instalação do eDeveloper 10, em inglês.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Magic Blog Basil, informações sobre o mundo do software magic.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2475046556785200892-5733796031413969177?l=magicblogbrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/5733796031413969177/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2475046556785200892&amp;postID=5733796031413969177' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/5733796031413969177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/5733796031413969177'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/2007/04/gerenciamento-de-dados-e-que-tal-o.html' title='Gerenciamento de Dados - E que tal o ambiente multi-usuário?'/><author><name>VagnerLSilva</name><uri>http://www.blogger.com/profile/13750902606427257023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2475046556785200892.post-380877426486506990</id><published>2007-04-26T08:55:00.000-03:00</published><updated>2007-04-26T09:01:05.076-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Transações'/><title type='text'>Gerenciamento de Dados - Porque nós precisamos de transações?</title><content type='html'>&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_s1026" type="#_x0000_t75" style="'position:absolute;" wrapcoords="-202 0 -202 21388 21600 21388 21600 0 -202 0"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\vagner\LOCALS~1\Temp\msohtml1\01\clip_image001.emz" title=""&gt;  &lt;w:wrap type="tight"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;&lt;o:p&gt;&lt;/o:p&gt;Cada desenvolvedor de aplicação, tem o mesmo objetivo que é assegurar a integridade da base de dados. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;Pode haver problemas se você não usar transações para assegurar a integridade da base de dados e isto pode ser ilustrado pelo seguinte cenário:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;Um usuário, chamado Fred, quer transferir $50 de sua conta poupança para sua conta corrente. Neste caso, a matemática é simples:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;&lt;o:p&gt;    &lt;/o:p&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;Poupança = poupança - 50&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;    Conta corrente = conta corrente + 50&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;O que aconteceria se houvesse uma falha de algum tipo entre as duas operações?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;Neste caso, a conta poupança seria subtraída em $50, mas a conta corrente não seria atualizada. Pobre Fred ficou sem os $50 e existe também a questão do fundo perdido. Espere até a auditoria! &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;Nós podemos dizer que, neste exemplo, a integridade de dados está extrema prejudicada.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;Se uma transação tivesse sido usada para assegurar que as duas operações fossem executadas como uma unidade lógica única, então se houvesse uma falha durante a execução deste simples processo, todo o processo teria sido abortado ou voltado ao seu estado inicial (&lt;i style=""&gt;rolled back&lt;/i&gt; - na linguagem SQL) e a integridade dos dados estaria preservada.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;Assim o dinheiro, nas contas, retornaria ao valor inicial que estavam antes de iniciar a transação.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;Aqui, eu deveria também adicionar o obvio: no cenário acima no qual parecem existir apenas duas operações, existiram realmente mais duas operações: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;Ler o saldo da conta poupança&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;Ler o saldo da conta corrente&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;Isto é, sem considerar as modificações reais ao banco de dados. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;&lt;o:p&gt;&lt;/o:p&gt;Como nós podemos ver o processo aparentemente simples não é tão simples como parece.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   lang="PT-BR" &gt;&lt;o:p&gt;&lt;/o:p&gt;Em resumo, desenvolvimento com transações é uma parte necessária de aplicações de dados integrados (&lt;i style=""&gt;data-bound applications&lt;/i&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;Fonte: "Data Management.pdf", arquivo acompanha a instalação do eDeveloper 10, em inglês.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Magic Blog Basil, informações sobre o mundo do software magic.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2475046556785200892-380877426486506990?l=magicblogbrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/380877426486506990/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2475046556785200892&amp;postID=380877426486506990' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/380877426486506990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/380877426486506990'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/2007/04/gerenciamento-de-dados-porque-ns.html' title='Gerenciamento de Dados - Porque nós precisamos de transações?'/><author><name>VagnerLSilva</name><uri>http://www.blogger.com/profile/13750902606427257023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2475046556785200892.post-4536040616347849053</id><published>2007-04-26T08:30:00.000-03:00</published><updated>2007-04-26T09:51:47.261-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Transações'/><title type='text'>Gerenciamento de Dados - O que é uma Transação?</title><content type='html'>O que são transações? Porque nós precisamos usar transações?&lt;br /&gt;&lt;br /&gt;Transações são partes integrantes do desenvolvimento de aplicações de dados integrados (data-bound applications). Uma chave para o desenvolvimento de aplicações no ambiente de base de dados é a habilidade de usar transações de forma otimizada para garantir a integridade de dados.&lt;br /&gt;&lt;br /&gt;A palavra “Transação” é usada frequentemente quando falamos em aplicações SQL.&lt;br /&gt;Uma transação é uma parte integral de um processo, contribuindo para a composição da aplicação como um todo, e pode ser definida como:&lt;br /&gt;&lt;br /&gt;“... Uma unidade atômica de trabalho consistindo de um conjunto de modificações de dados a qual deve ser aplicada na sua totalidade ou abortada completamente”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Isto quer dizer que ou o processo como um todo é bem sucedido ou o processo todo falha.&lt;br /&gt;&lt;br /&gt;Não existe meio termo. Inúmeras operações, tais como: UPDATE, DELETE e INSERT podem criar uma unidade única. Só se todas as operações são bem sucedidas, esta unidade lógica será bem sucedida.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Um processo de transação pode ser todo um processo de negócio lógico ou uma unidade menor que é parte de um processo de negócio lógico.&lt;br /&gt;&lt;br /&gt;Fonte: "Data Management.pdf", arquivo acompanha a instalação do eDeveloper 10, em inglês.&lt;div class="blogger-post-footer"&gt;Magic Blog Basil, informações sobre o mundo do software magic.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2475046556785200892-4536040616347849053?l=magicblogbrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/4536040616347849053/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2475046556785200892&amp;postID=4536040616347849053' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/4536040616347849053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/4536040616347849053'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/2007/04/o-que-uma-transao_25.html' title='Gerenciamento de Dados - O que é uma Transação?'/><author><name>VagnerLSilva</name><uri>http://www.blogger.com/profile/13750902606427257023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2475046556785200892.post-1372106033183124394</id><published>2007-04-26T08:19:00.000-03:00</published><updated>2007-04-26T08:41:32.430-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apresentação'/><title type='text'>Apresentação</title><content type='html'>Ola Pessoal!&lt;br /&gt;&lt;br /&gt;Estamos iniciando este blog com um trabalho de apresentação da documentação referente ao eDeveloper 10, a qual acompanha a instalação do mesmo, porém o documento original é disponibilizado em inglês.&lt;br /&gt;&lt;br /&gt;O objetivo deste blog é facilitar a vida dos "magicianos", com a tradução e publicação frequentes dos assuntos abordados nesta documentação, bem como, fornecer informações sobre experiências dos colaboradores no que se refere ao desenvolvimento e ao domínio específico da ferramenta e banco de dados.&lt;br /&gt;&lt;br /&gt;Façam um bom uso do material e se sintam à vontade para contribuir sobre os assuntos abordados e assim enriquecer este blog.&lt;br /&gt;&lt;br /&gt;Caso alguém tenha alguma documentação sobre os assuntos aqui abordados e a mesma esteja em inglês, por favor, nos encaminhem este material que estaremos avaliando e, se for o caso, efetuando a sua tradução.&lt;br /&gt;&lt;br /&gt;Bom trabalho a todos!&lt;div class="blogger-post-footer"&gt;Magic Blog Basil, informações sobre o mundo do software magic.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2475046556785200892-1372106033183124394?l=magicblogbrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/1372106033183124394/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2475046556785200892&amp;postID=1372106033183124394' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/1372106033183124394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/1372106033183124394'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/2007/04/apresentao.html' title='Apresentação'/><author><name>VagnerLSilva</name><uri>http://www.blogger.com/profile/13750902606427257023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2475046556785200892.post-883949805514070897</id><published>2007-04-25T00:01:00.000-03:00</published><updated>2007-05-13T17:26:38.596-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Magic'/><category scheme='http://www.blogger.com/atom/ns#' term='CIGAM'/><title type='text'>Magic Blog Brasil</title><content type='html'>Para qualquer técnico que já ouviu falar sobre o software &lt;a href="http://www.magicsoftware.com"&gt;Magic&lt;/a&gt;, sabe que este é uma ferramenta &lt;a href="http://pt.wikipedia.org/wiki/RAD"&gt;RAD&lt;/a&gt;. Desenvolver com Magic é muito fácil, um aprendiz de programador, tira em minutos um programa de cadastro, que pode ser usado para modificar e excluir registros.&lt;br /&gt;&lt;br /&gt;Mas o Magic não serve apenas para este simples exemplo, é possível desenvolver grandes softwares, como &lt;a href="http://pt.wikipedia.org/wiki/Benchmark"&gt;benchmark&lt;/a&gt; temos o ERP &lt;a href="http://www.cigam.com.br"&gt;CIGAM&lt;/a&gt;. Na sua origem embrionária usou-se o Joiner, mas devido a necessidades de evolução optou-se por usar o Magic.&lt;br /&gt;&lt;br /&gt;Neste Blog, tentaremos discutir um pouco mais o que é possível realizar com esta grande ferramenta de desenvolvimento.&lt;br /&gt;&lt;br /&gt;Enjoy :)&lt;div class="blogger-post-footer"&gt;Magic Blog Basil, informações sobre o mundo do software magic.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2475046556785200892-883949805514070897?l=magicblogbrasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magicblogbrasil.blogspot.com/feeds/883949805514070897/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2475046556785200892&amp;postID=883949805514070897' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/883949805514070897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2475046556785200892/posts/default/883949805514070897'/><link rel='alternate' type='text/html' href='http://magicblogbrasil.blogspot.com/2007/04/magic-blog-brasil_25.html' title='Magic Blog Brasil'/><author><name>MauOuriques</name><uri>http://www.blogger.com/profile/09580364268351568044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
