Você está na página 1de 4

19/9/2014

Quando Usar Requery, Repaint, Refresh Ou Recalc - Frum Ativo Access

Quando Usar Requery, Repaint, Refresh ou Recalc


Requery (RepetirConsulta)
O mtodo Requery atualiza os dados base de um formulrio especificado ou de um controle que esteja no
formulrio ativo, pela repetio da consulta fonte de dados do formulrio ou controle.
Voc pode utilizar este mtodo para garantir que um formulrio ou controle exiba os dados mais recentes.
O mtodo Requery procede de uma das maneiras a seguir:
Executa novamente a consulta na qual o formulrio ou controle baseado.
Exibe qualquer registro novo ou alterado, ou remove registros excludos da tabela na qual o formulrio ou
controle est baseado.
Atualiza registros exibidos com base em qualquer alterao feita propriedade Filtro do formulrio.
Os controles baseados em uma consulta ou tabela incluem:
Caixas de listagem e Caixas de combinao.
Controles subformulrio.
Objetos OLE, como grficos.
Controles para os quais a definio da propriedade OrigemDoControle inclui funes agregadas de domnio
ou funes agregadas SQL.
Se voc especificar qualquer outro tipo de controle para o objeto especificado por expression, a consulta fonte
do registro do formulrio repetida.
Se o objeto especificado por expression no estiver acoplado a um campo de uma tabela ou consulta, o mtodo
Requery fora um reclculo do controle.
Se voc omitir o objeto especificado por expression, o mtodo Requery repete a consulta fonte de dados base
do formulrio ou controle que tem o foco. Se o controle com o foco tiver uma fonte de registro ou fonte de linha, a
consulta ser repetida; caso contrrio, os dados do controle sero simplesmente atualizados.
Se um controle subformulrio tiver o foco, esse mtodo repete somente a consulta fonte de registro para o
subformulrio, no para o formulrio pai.
O mtodo Requery atualiza os dados base de um formulrio ou controle para refletir registros que sejam
novos ou que tenham sido excludos da fonte do registro desde a ltima repetio de consulta. O mtodo
Refresh mostra somente alteraes que tenham sido feitas no conjunto de registros atual. No reflete
registros novos ou excludos na fonte do registro. O mtodo Repaint simplesmente redesenha o formulrio
especificado e seus controles.
O mtodo Requery no passa o controle para o sistema operacional para permitir que o Windows continue
a processar mensagens. Utilize a funo DoEvents se voc precisar ceder o controle temporariamente
para o sistema operacional.
O mtodo Requery mais rpido que a ao RepetirConsulta. Quando voc usa a ao RepetirConsulta, o
Microsoft Access fecha a consulta e a recarrega a partir do banco de dados. Quando voc usa o mtodo
Requery, o Microsoft Access executa novamente a consulta sem fech-la e recarreg-la.
O exemplo a seguir utiliza o mtodo Requery para repetir a consulta aos dados da caixa de listagem
EmployeeList em um formulrio Employees.
http://www.ativoaccess.com.br/forum/index.php?showtopic=43

1/4

19/9/2014

Quando Usar Requery, Repaint, Refresh Ou Recalc - Frum Ativo Access

CODE
Public Sub RequeryList()
Dim ctlCombo As Control
' Return Control object pointing to a combo box.
Set ctlCombo = Forms!Employees!ReportsTo
' Requery source of data for list box.
ctlCombo.Requery
End Sub

Repaint (Redesenhar)
O mtodo Repaint completa qualquer atualizao de tela pendente para um formulrio especificado. Quando
executado em um formulrio, o mtodo Repaint completa tambm qualquer reclculo pendente de controles do
formulrio.
s vezes, o Microsoft Access espera para completar atualizaes de tela pendentes at a finalizao de outras
tarefas. Com o mtodo Repaint, voc pode forar o redesenho imediato dos controles no formulrio especificado.
Voc pode utilizar o mtodo Repaint:
Quando voc altera valores em vrios campos. A menos que voc force um redesenho, o Microsoft Access pode
no exibir as alteraes imediatamente, em especial se outros campos, como os de uma expresso em um
controle calculado, dependerem dos valores nos campos alterados.
Quando voc quiser certificar-se de que um formulrio exiba dados em todos os seus campos. Por exemplo,
campos contendo objetos OLE em geral no exibem os dados imediatamente depois que voc abre um
formulrio.
Este mtodo no causa uma repetio de consulta do banco de dados, nem mostra registros novos ou alterados
na fonte do registro base do formulrio. Voc pode utilizar o mtodo Requery para repetir a consulta fonte dos
dados do formulrio ou de um de seus controles.
No confunda o mtodo Repaint com o mtodo Refresh ou com o comando Atualizar do menu Registros. O
mtodo Refresh e o comando Atualizar mostram alteraes que voc ou outros usurios tenham feito na fonte do
registro base para qualquer registro exibido, no momento, em formulrios e folhas de dados. O mtodo Repaint
simplesmente atualiza a tela quando o redesenho for atrasado para que o Microsoft Access conclua outras
tarefas.
O mtodo Repaint difere do mtodo Echo pois o mtodo Repaint somente fora um redesenho imediato,
enquanto o mtodo Echo ativa ou desativa o redesenho.
O exemplo a seguir utiliza o mtodo Repaint para redesenhar um formulrio quando este recebe o foco:
CODE
Private Sub Form_Activate()
Me.Repaint
End Sub
http://www.ativoaccess.com.br/forum/index.php?showtopic=43

2/4

19/9/2014

Quando Usar Requery, Repaint, Refresh Ou Recalc - Frum Ativo Access

Mtodo Refresh (Atualizar)


O mtodo Refresh atualiza imediatamente os registros na fonte do registro base para um formulrio ou folha de
dados especificada, para refletir alteraes feitas nos dados por voc e por outros usurios em um ambiente
multiusurio.
Utilizar o mtodo Refresh equivalente a clicar em Atualizar no menu Registros.
O Microsoft Access atualiza registros automaticamente, com base na configurao de Intervalo de atualizao na
guia Avanado da caixa de dilogo Opes, disponvel ao clicar em Opes no menu Ferramentas. As fontes de
dados ODBC so atualizadas com base na configurao de Intervalo de atualizao ODBC na guia Avanado da
caixa de dilogo Opes. Voc pode utilizar o mtodo Refresh para exibir alteraes que tenham sido feitas no
conjunto de registros atual de um formulrio ou folha de dados, desde a ltima atualizao da fonte do registro
base do formulrio ou folha de dados.
O mtodo Refresh mostra somente alteraes feitas em registros no conjunto atual. Uma vez que o mtodo
Refresh, na verdade, no repete a consulta ao banco de dados, o conjunto atual no incluir registros que tenham
sido adicionados, nem remover aqueles que tenham sido excludos desde a ltima repetio de consulta ao
banco de dados. Alm disso, no excluir os registros que no mais satisfaam os critrios da consulta ou do
filtro. Para repetir a consulta ao banco de dados, utilize o mtodo Requery. Quando a fonte do registro de um
formulrio novamente consultada, o conjunto atual de registros reflete com preciso todos os dados da fonte do
registro.
Geralmente, mais rpido atualizar um formulrio ou folha de dados que repetir a consulta. Isso mais
evidente quando a execuo da consulta inicial for lenta.
No confunda o mtodo Refresh com o mtodo Repaint, que redesenha a tela com qualquer alterao
visual pendente.
O exemplo a seguir utiliza o mtodo Refresh para atualizar os registros da fonte do registro base do formulrio
Clientes sempre que o formulrio recebe o foco:
CODE
Private Sub Form_Activate()
Me.Refresh
End Sub

Recalc (Recalcular)
O mtodo Recalc atualiza imediatamente todos os controles calculados em um formulrio.
A utilizao desse mtodo equivale a pressionar a tecla F9 quando um formulrio tem o foco. Voc pode utilizar
esse mtodo para recalcular valores de controles que dependem de outros campos para os quais o contedo
possa ter sido alterado.
O exemplo a seguir utiliza o mtodo Recalc para atualizar os controles em um formulrio Pedidos. Esse
formulrio inclui a caixa de texto Freight, que exibe o custo do frete, e um controle calculado que exibe o custo
total de um pedido incluindo o frete. Se a instruo que contm o mtodo Recalc for colocada no procedimento
do evento AfterUpdate da caixa de texto Freight, o custo total de um pedido recalculado toda vez que um novo
valor de frete for inserido.
http://www.ativoaccess.com.br/forum/index.php?showtopic=43

3/4

19/9/2014

Quando Usar Requery, Repaint, Refresh Ou Recalc - Frum Ativo Access

CODE
Sub Freight_AfterUpdate()
Me.Recalc
End Sub

http://www.ativoaccess.com.br/forum/index.php?showtopic=43

4/4