<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>glufke.net &#187; Bloco</title>
	<atom:link href="http://glufke.net/tag/bloco/feed/" rel="self" type="application/rss+xml" />
	<link>http://glufke.net</link>
	<description></description>
	<lastBuildDate>Fri, 03 Sep 2010 13:42:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Bloco do Forms baseado numa VIEW</title>
		<link>http://glufke.net/2007/09/13/bloco-do-forms-baseado-numa-view/</link>
		<comments>http://glufke.net/2007/09/13/bloco-do-forms-baseado-numa-view/#comments</comments>
		<pubDate>Thu, 13 Sep 2007 14:30:26 +0000</pubDate>
		<dc:creator>glufke</dc:creator>
				<category><![CDATA[Oracle Forms]]></category>
		<category><![CDATA[Bloco]]></category>
		<category><![CDATA[View]]></category>

		<guid isPermaLink="false">http://glufke.net/2007/09/13/bloco-do-forms-baseado-numa-view/</guid>
		<description><![CDATA[Uma coisa muito útil no Forms é poder basear os blocos em Views. Vamos a um breve exemplo: Digamos que uma tabela contenha os itens de um pedido. Obviamente, apenas o código do produto estará nesta tabela e não a descrição do produto. Como fazer para mostrar a descrição ?
Estrutura das tabelas:
ITENS_PEDIDO
  IT_COD  [...]]]></description>
			<content:encoded><![CDATA[<p>Uma coisa muito útil no Forms é poder basear os blocos em Views. Vamos a um breve exemplo: Digamos que uma tabela contenha os itens de um pedido. Obviamente, apenas o código do produto estará nesta tabela e não a descrição do produto. Como fazer para mostrar a descrição ?<span id="more-15"></span></p>
<pre class="brush: sql;">Estrutura das tabelas:
ITENS_PEDIDO
  IT_COD    NUMBER(5),
  PROD_COD  NUMBER(5),
  QUANT     NUMBER(10,2)

PRODUTO
  PROD_COD  NUMBER(5),
  PROD_DSC  VARCHAR2(60)
</pre>
<p><strong>POUCO EFICIENTE</strong></p>
<p>Podemos usar a trigger POST_QUERY, que é disparada em cada linha do bloco. Dentro desta trigger, coloca-se uma consulta assim:</p>
<pre class="brush: sql;">
select prod_dsc
into :BLOCO_ITENS_PED.PROD_DSC
from produto
where prod_cod=:BLOCO_ITENS_PED.PROD_COD;</pre>
<p>Este select rodará em cada linha do bloco, buscando a descrição do Produto. Temos que deixar a propriedade do item Database Item No.<br />
Isto é <strong>pouquíssimo eficiente</strong>! Imaginem se o bloco for buscar 500 linhas? O cliente vai fazer 500 consultas de descrição!!! Resultado: Queda de performance do banco, trafego inútil na rede, etc.</p>
<div id="ads_336x280"><script type="text/javascript"><!--
google_ad_client = "pub-8964513116661040";
google_alternate_color = "ffffFF";
google_ad_width = 336;
google_ad_height = 280;
google_ad_format = "336x280_as";
google_ad_type = "text_image";
//2007-09-07: wp_quadrado_gra
google_ad_channel = "0247072216";
google_color_border = "FFFFFF";
google_color_bg = "FFFFff";
google_color_link = "4F82CB";
google_color_text = "000000";
google_color_url = "4F82CB";
//-->
</script><script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<p><strong>MUITO EFICIENTE</strong></p>
<p>Vamos basear nosso bloco numa View! Como fazemos isso?</p>
<p>1. Criamos uma VIEW_ITENS_PEDIDO com a descrição do Produto.</p>
<pre class="brush: sql;">
create or replace view VIEW_ITENS_PEDIDO as
select
  a.*,
  b.prod_dsc
from
  itens_pedido A,
  produto      B
where a.prod_cod=b.prod_cod</pre>
<p>2. Criamos o bloco com base nesta view. Agora vamos tornar esta view &#8220;alterável&#8221;<br />
3. Na propriedade do bloco DML Data Target Name, colocamos o nome da tabela onde será feita a alteração. (no caso, a própria ITENS_PEDIDO)<br />
4. Vamos definir agora qual será o campo chave da tabela. Clicamos no item IT_COD, e vamos para a propriedade Primary Key. Colocamos YES nela.<br />
5. Agora vamos dizer ao Forms que o campo PROD_DSC não faz parte da tabela! Alteramos a propriedade Query Only para Yes!<br />
E Pronto!!!<br />
Agora o Forms sabe que o campo PROD_DSC não deve ser gravado quando a tabela for modificada. Ele sabe que este campo não pertence diretamente a ITENS_PEDIDO! </p>
<p>Comente <a href="http://glufke.net/oracle/viewtopic.php?t=5">aqui</a></p>
]]></content:encoded>
			<wfw:commentRss>http://glufke.net/2007/09/13/bloco-do-forms-baseado-numa-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
