IPB

Bem-vindo, visitante ( Entrar | Registrar )

 
Reply to this topicStart new topic
Quando Usar Requery, Repaint, Refresh Ou Recalc
OsmarJr
post Jul 23 2008, 11:33 AM
Post #1


Moderador
***

Grupo: Root Admin
Posts: 170
Registrado: 2-July 08
De: Curitiba - Paraná - Brasil
Membro N°: 3



Quando Usar Requery, Repaint, Refresh ou Recalc

Requery (RepetirConsulta)
O método Requery atualiza os dados base de um formulário especificado ou de um controle que esteja no formulário ativo, pela repetição da consulta à fonte de dados do formulário ou controle.

Você pode utilizar este método para garantir que um formulário ou controle exiba os dados mais recentes.

O método Requery procede de uma das maneiras a seguir:
  • Executa novamente a consulta na qual o formulário ou controle é baseado.
  • Exibe qualquer registro novo ou alterado, ou remove registros excluídos da tabela na qual o formulário ou controle está baseado.
  • Atualiza registros exibidos com base em qualquer alteração feita à propriedade Filtro do formulário.
Os controles baseados em uma consulta ou tabela incluem:
  • Caixas de listagem e Caixas de combinação.
  • Controles subformulário.
  • Objetos OLE, como gráficos.
  • Controles para os quais a definição da propriedade OrigemDoControle inclui funções agregadas de domínio ou funções agregadas SQL.
Se você especificar qualquer outro tipo de controle para o objeto especificado por expression, a consulta à fonte do registro do formulário é repetida.

Se o objeto especificado por expression não estiver acoplado a um campo de uma tabela ou consulta, o método Requery força um recálculo do controle.

Se você omitir o objeto especificado por expression, o método Requery repete a consulta à fonte de dados base do formulário 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 contrário, os dados do controle serão simplesmente atualizados.

Se um controle subformulário tiver o foco, esse método repete somente a consulta à fonte de registro para o subformulário, não para o formulário pai.
  • O método Requery atualiza os dados base de um formulário ou controle para refletir registros que sejam novos ou que tenham sido excluídos da fonte do registro desde a última repetição de consulta. O método Refresh mostra somente alterações que tenham sido feitas no conjunto de registros atual. Não reflete registros novos ou excluídos na fonte do registro. O método Repaint simplesmente redesenha o formulário especificado e seus controles.
  • O método Requery não passa o controle para o sistema operacional para permitir que o Windows continue a processar mensagens. Utilize a função DoEvents se você precisar ceder o controle temporariamente para o sistema operacional.
  • O método Requery é mais rápido que a ação RepetirConsulta. Quando você usa a ação RepetirConsulta, o Microsoft Access fecha a consulta e a recarrega a partir do banco de dados. Quando você usa o método Requery, o Microsoft Access executa novamente a consulta sem fechá-la e recarregá-la.
O exemplo a seguir utiliza o método Requery para repetir a consulta aos dados da caixa de listagem EmployeeList em um formulário Employees.
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 método Repaint completa qualquer atualização de tela pendente para um formulário especificado. Quando executado em um formulário, o método Repaint completa também qualquer recálculo pendente de controles do formulário.

Às vezes, o Microsoft Access espera para completar atualizações de tela pendentes até a finalização de outras tarefas. Com o método Repaint, você pode forçar o redesenho imediato dos controles no formulário especificado. Você pode utilizar o método Repaint:

Quando você altera valores em vários campos. A menos que você force um redesenho, o Microsoft Access pode não exibir as alterações imediatamente, em especial se outros campos, como os de uma expressão em um controle calculado, dependerem dos valores nos campos alterados.

Quando você quiser certificar-se de que um formulário exiba dados em todos os seus campos. Por exemplo, campos contendo objetos OLE em geral não exibem os dados imediatamente depois que você abre um formulário.
Este método não causa uma repetição de consulta do banco de dados, nem mostra registros novos ou alterados na fonte do registro base do formulário. Você pode utilizar o método Requery para repetir a consulta à fonte dos dados do formulário ou de um de seus controles.

Não confunda o método Repaint com o método Refresh ou com o comando Atualizar do menu Registros. O método Refresh e o comando Atualizar mostram alterações que você ou outros usuários tenham feito na fonte do registro base para qualquer registro exibido, no momento, em formulários e folhas de dados. O método Repaint simplesmente atualiza a tela quando o redesenho for atrasado para que o Microsoft Access conclua outras tarefas.

O método Repaint difere do método Echo pois o método Repaint somente força um redesenho imediato, enquanto o método Echo ativa ou desativa o redesenho.

O exemplo a seguir utiliza o método Repaint para redesenhar um formulário quando este recebe o foco:

CODE
Private Sub Form_Activate()
    Me.Repaint
End Sub


Método Refresh (Atualizar)
O método Refresh atualiza imediatamente os registros na fonte do registro base para um formulário ou folha de dados especificada, para refletir alterações feitas nos dados por você e por outros usuários em um ambiente multiusuário.

Utilizar o método Refresh é equivalente a clicar em Atualizar no menu Registros.

O Microsoft Access atualiza registros automaticamente, com base na configuração de Intervalo de atualização na guia Avançado da caixa de diálogo Opções, disponível ao clicar em Opções no menu Ferramentas. As fontes de dados ODBC são atualizadas com base na configuração de Intervalo de atualização ODBC na guia Avançado da caixa de diálogo Opções. Você pode utilizar o método Refresh para exibir alterações que tenham sido feitas no conjunto de registros atual de um formulário ou folha de dados, desde a última atualização da fonte do registro base do formulário ou folha de dados.

O método Refresh mostra somente alterações feitas em registros no conjunto atual. Uma vez que o método Refresh, na verdade, não repete a consulta ao banco de dados, o conjunto atual não incluirá registros que tenham sido adicionados, nem removerá aqueles que tenham sido excluídos desde a última repetição de consulta ao banco de dados. Além disso, não excluirá os registros que não mais satisfaçam os critérios da consulta ou do filtro. Para repetir a consulta ao banco de dados, utilize o método Requery. Quando a fonte do registro de um formulário é novamente consultada, o conjunto atual de registros reflete com precisão todos os dados da fonte do registro.
  • Geralmente, é mais rápido atualizar um formulário ou folha de dados que repetir a consulta. Isso é mais evidente quando a execução da consulta inicial for lenta.
  • Não confunda o método Refresh com o método Repaint, que redesenha a tela com qualquer alteração visual pendente.
O exemplo a seguir utiliza o método Refresh para atualizar os registros da fonte do registro base do formulário Clientes sempre que o formulário recebe o foco:
CODE
Private Sub Form_Activate()
    Me.Refresh
End Sub


Recalc (Recalcular)
O método Recalc atualiza imediatamente todos os controles calculados em um formulário.

A utilização desse método equivale a pressionar a tecla F9 quando um formulário tem o foco. Você pode utilizar esse método para recalcular valores de controles que dependem de outros campos para os quais o conteúdo possa ter sido alterado.

O exemplo a seguir utiliza o método Recalc para atualizar os controles em um formulário Pedidos. Esse formulário 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 instrução que contém o método 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.
CODE
Sub Freight_AfterUpdate()
    Me.Recalc
End Sub
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 usuário(s) está(ão) lendo este tópico (1 visitantes e 0 usuários anônimos)
0 membros:

 

Modos de Exibição: Padrão · Mudar para: Linear+ · Mudar para: Outline


Versão Simples Horário: 14th December 2018 - 09:33 PM