Pergunte aqui
0

Porque o método "Requery" do formulário não funciona mais a contento?

perguntadas 2015-06-07 23:20:04 +0200

imagem do gravatar de LuizCarlos18RJ

No LibreOffice 4.2 meus formulários tinha um controle de tabela ( grid ) que executava uma consulta em sql e na minha macro tinha a instrução MyForm.Requery e na execução o form atualizava e a grid tb e os dados atualizavam de quebra, mas acontecia os seguinte:

1 - Na minha máquina local ( onde desenvolvi o BD ), o form e a grid atualizavam, quando disponiblizei para a rede ( numa unidade "samba" ) quando outro utilizador rodava, não atualizava, o form "piscava" mas a grid não atualizava.

Depois eu atualizaei a minha versão do LibreOffice para a mais recente ( estável ) assim como atualizei o libre os seletos pcs de clientes que acessariam o BD pela rede, e agora além do problema persistir, o meu próprio pc que antes atualizava tudo, agora nuam mais, se fechar e abrir de novo os dados ao carregar vem atualizados, mas se ficar com o form aberto e vêlo (piscar) não atualiza nada na tela...

Por macro tenteu usar a instrução:

MyForm.Requery MyControl.Requery

Dá erro que "Requery" não era um método válido paa o controle, testei várioas outras coisas como:

MyControl.Requery

MyControl.Reload

MyControl.Refresh

MyControl.Commit

MyControl.Requery

MyControl.Update

MyControl.Actualize

Não existe comando pra atualizar o controle, tudo dá erro...

Alguém pode me ajudar?

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

0

respondidas 2015-07-16 14:59:22 +0200

imagem do gravatar de LuizCarlos18RJ

Até hj não tive minha dúvida sanada por ninguém, por isso tive que fazer uma gambiarra:

Já que o form não atualiza mais ( reler os valores dos dados dos subforms atualizados ), tive que na macro, "fechar" e "abrir" novamente.

Para que ao abrir não perdesse o valor dos critérios, tive que criar uma variável global para armazenar os valores de critério ( tipo uma das linhas de um combobox ), para que ao reabrir executasse as consultas corretamentes.

No evento "ao alterar valor" de uma combo, tive que criar uma macro que filtrasse o subformulário pelo critério escolhido, e em seguida como não posso atualizar mais, vai ter que fechar e abrir novamente o form para atualizar os dados.

Public nome_maquina as String  ' Variábel Global para ser usada em outros módulos

Sub btn_combobox_txtMicro_frm_hw

Dim Form1, oConsulta, cmb_codhw As Object

Set Form1=Forms("frm_licenca_hw")
cmb_codhw=Form1.Controls("txtMicro")

nome_maquina = cmb_codhw.Value

oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName ("cons_subtab_licenca_hw")

oConsulta.Command = "SELECT DISTINCT `cod_hw`, `software` FROM `c06`.`tab_licenca` AS `tab_licenca` WHERE `cod_hw` = '" & cmb_codhw.Value & "' ORDER BY `cod_hw` ASC, `software` ASC"


mClose(acForm, "frm_licenca_hw")
OpenForm "frm_licenca_hw"

E em seguida no evento "Ao carregar" do for principal, outra macro para apresentar os dados filtrados, com base no valor selecionado anteriormente, antes do form ser fechado para ser reaberto, que ficou guardado na variável global. senão a combobox fica em branco e fica esquisito.

Sub atualiza_form_licenca_hw

Dim Form1, SubForm_1, oConsulta, cons_subtab, txtM, cmb_codhw As Object

Set Form1=Forms("frm_licenca_hw")
Set cmb_codhw=Form1.Controls("txtMicro")

cmb_codhw.Value = nome_maquina

Maximize()

End Sub

Só sei que isso é uma gambiarra ( artfício técnico não-homologado ), alguém sabe ainda me explicar como voltar a dar o método requery de modo satisfatório?

editar assinalar como ofensivo Excluir Link mais

Comentários

Boa tarde,

Para facilitar que lhe ajudem, talvez fosse melhor você compartilhar um arquivo simplificado do seu BD com dados fictícios e com os mesmos problemas.

Tentei reproduzir aqui, mas não consegui.

Atte,

Grafeno.

imagem do gravatar de GrafenoGrafeno ( 2015-07-16 19:57:52 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2015-06-07 23:20:04 +0200

Lidas: 515 vezes

Última atualização: Jul 16 '15