Prezados,
Tenho uma aplicação em uso há alguns meses. Esta é utilizada por cerca de 30 usuários geograficamente dispersos.
O banco de dados estava armazenado em um servidor particular mas por diversas questões optamos por migrá-lo para o Azure.
A partir de então, algumas consultas que funcionavam de forma satisfatória tornaram-se impraticavelmente lentas!
O aplicativo segue o seguinte padrão:
- Formulário sem dados atrelados a ele, contendo os botões, cabeçalho com identificação do aplicativo, da rotina e do usuário e uma combobox para seleção da filial a ser consultada. Rodapé com botões para outras operações.
- Subformulário exibido no modo folha de dados e tendo como fonte uma "query" (Consulta)
- Query salva independente e apontada como fonte de dados do subformulário.
Dai, eu testo a query isoladamente, e funciona legal. Testo isoladamente o subform e funciona. Testo no formulário e trava.
Já recriei o formulário várias vezes, já depurei, já acionei a correção de banco de dados. E reitero: o formulário é usado apenas como suporte para os outros objetos. Dele utilizo apenas o "Ao carregar" para atribuição de valores às variáveis que ficam no cabeçalho.
Em um dos formulários, troquei o "Tipo de conjunto de dados" de Dynaset para Instantaneo. E isto resolveu! Mas não posso usar este tipo em todas as rotinas pq não permite alteração dos dados.
Se ajudar, replico abaixo a expresão SQL de uma das consultas em questão:
Tenho uma aplicação em uso há alguns meses. Esta é utilizada por cerca de 30 usuários geograficamente dispersos.
O banco de dados estava armazenado em um servidor particular mas por diversas questões optamos por migrá-lo para o Azure.
A partir de então, algumas consultas que funcionavam de forma satisfatória tornaram-se impraticavelmente lentas!
O aplicativo segue o seguinte padrão:
- Formulário sem dados atrelados a ele, contendo os botões, cabeçalho com identificação do aplicativo, da rotina e do usuário e uma combobox para seleção da filial a ser consultada. Rodapé com botões para outras operações.
- Subformulário exibido no modo folha de dados e tendo como fonte uma "query" (Consulta)
- Query salva independente e apontada como fonte de dados do subformulário.
Dai, eu testo a query isoladamente, e funciona legal. Testo isoladamente o subform e funciona. Testo no formulário e trava.
Já recriei o formulário várias vezes, já depurei, já acionei a correção de banco de dados. E reitero: o formulário é usado apenas como suporte para os outros objetos. Dele utilizo apenas o "Ao carregar" para atribuição de valores às variáveis que ficam no cabeçalho.
Em um dos formulários, troquei o "Tipo de conjunto de dados" de Dynaset para Instantaneo. E isto resolveu! Mas não posso usar este tipo em todas as rotinas pq não permite alteração dos dados.
Se ajudar, replico abaixo a expresão SQL de uma das consultas em questão:
- Código:
SELECT Tab_Requisição.Flag2, Tab_Requisição.Numero, Tab_Requisição.Data, Tab_Requisição.Cuenta, Tab_Requisição.CuentaAplic, Tab_Requisição.Cheque, Tab_Requisição.Historico, Tab_ReqContab.VlLancto
FROM ((Tab_FornecedorCliente INNER JOIN Tab_Requisição ON Tab_FornecedorCliente.CNPJ = Tab_Requisição.CNPJ) INNER JOIN Tab_Banco ON Tab_Requisição.Cuenta = Tab_Banco.Cuenta) INNER JOIN Tab_ReqContab ON Tab_Requisição.Numero = Tab_ReqContab.Numero
WHERE (((Tab_Requisição.Flag2)=False) AND ((Tab_Requisição.Data)<=[Formulários]![Frm_ConciliaBanco]![tbx_Final]) AND ((Tab_Requisição.Cuenta)=[Formulários]![Frm_ConciliaBanco]![tbx_Cuenta]) AND ((Tab_ReqContab.Conta)="11100")) OR (((Tab_Requisição.Flag2)=False) AND ((Tab_Requisição.Data)<=[Formulários]![Frm_ConciliaBanco]![tbx_Final]) AND ((Tab_Requisição.CuentaAplic)=[Formulários]![Frm_ConciliaBanco]![tbx_Cuenta]) AND ((Tab_ReqContab.Conta)="11200"))
ORDER BY Tab_Requisição.Data;