Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

HighBass

Como melhorar o desempenho de acesso a dados??

Recommended Posts

Eu tinha feito em DAO um sistema que tem um listbox onde se mostra os registros, e os textboxs, entao qdo se clica em um registro do listbox, os textboxs ficam preenchidos com os valores referente ao registro clicado.

 

Estou passando para ADO e agora tenho algumas duvidas, preciso trocar o listbox we os texts???

 

Alguem tem alguma dica para melhorar o desempenho ??

 

Por enquanto nao da para converter a base para SQL Server, mas num futuro proximo sera feito.

 

É fogo, os clientes querem desempenho mas nao querem abrir a mao na hora de adquirir uma licença de software, nós programadores temos que fazer magicas http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Obrigado.

.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é necessário que você troque esses tipos de obejtos...

 

Talvez mude o modo como você carregue os dados neles e realize as consultas. Isso dependendo de como você fazia com DAO.

 

Se você já usava SQL não irá ser muito difícil.

 

Uma das coisas que eu vejo muitas pessoas fazendo na hora de usar ADO é utilizar (sem querer) várias conexões ativas:

dim conexao as new adodb.connectiondim rs as new adodb.recordsetconexao.open "string_de_conexao"rs.open sql, conexao
Fazendo desse modo você terá duas conexões ativas.

 

Faça desse:

dim conexao as new adodb.connectiondim rs as new adodb.recordsetconexao.open "string_de_conexao"set rs = conexao.execute(sql)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao, gostaria que desse uma olhada no codigo que eu fiz, se ele pode ser melhorado ou corrigido, fiz assim para todos os outros eventos de atualizaçao ou cadastro, apenas mudando algum parametro:

 

Nesse exemplo ele atualiza a quantidade de estoque de um determinado produto de venda

 

Dim rst As New ADODB.Recordset	   	Set rst = New ADODB.Recordset	rst.ActiveConnection = CurrentProject.Connection		rst.Source = "SELECT produtos.cod_produto, produtos.saldo_estoque" _	& " FROM produtos WHERE (((produtos.cod_produto) = " & CODIGO_PRODUTO & "))"		rst.CursorType = adOpenDynamic	rst.LockType = adLockOptimistic	rst.Open			If rst.EOF Then		Exit Sub	Else		rst.Fields("saldo_estoque") = rst.Fields("saldo_estoque") - Quant_Venda		rst.Update	End If		rst.Close	Set rst = Nothing

 

 

 

.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, você poderia evitar a maioria (ou todas) dessas linhas usando o comando SQL update:

Update tabela set campo1 = valor, campo2 = valor where condição

 

No seu caso ficaria mais ou menos assim:

conexao.execute "update produtos set saldo_estoque = saldo_estoque - " & Quant_Venda & " where cod_produto = " & CODIGO_PRODUTO
Sendo que conexao seria o ADODB.connection seu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito boa essa dica, agilizou bastante na hora de programar.

 

Preciso de alguma coisa que melhore o desempenho na seguinte situaçao:

 

Eu faço um recordset e preciso atribuir os campos do resultado desse recordset em textboxs no formulario, entao eu faço assim:

 

txtNome.text = rst!nome

txtEndereço.text = rst! endereço

(etc etc etc)

 

Como eu tenho varios campos, entao da pra perceber uma certa demora ao preencher todos os campos, visto que a tabela contem muitos registros...

 

Gostaria de saber se existe um meio de agilizar isso, melhorando o desempenho do sistema na hora de preencher os textboxs..

 

 

Obrigado.

 

. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.