ABIR RAPIDO BANCO DE DADOS

USUARIO.EXCLUIDOS 09/01/2005 15:19:50
#59585
pessoal estou com problema meu prog. esta muito lento para abrir o B dados ex.

Vou abrir banco de dados cliente e abro o banco para uma possivel consulta usando o combox mas esta me demorando muito para abrir as telas visando que a abertura vai no form principal da tela . entao ela demora para abrir por causa da abertura do B dados.

Meus relatorios tambem estao lentos uso DBGrid para visualizar relatorios e esta demorando para pesquisar 100 arquivos uns 15 minutos. EX.

Dim AreaTrabalho As Workspace
Dim query As String
Dim dyn As Dynaset

Set AreaTrabalho = DBEngine.Workspaces(0)
Set xxbco = AreaTrabalho.OpenDatabase(App.Path & "\Cadastro.Mdb", False, False)
query = "Select * From Cliente order by Codigo"
Set dyn = xxbco.CreateDynaset(query)
While Not dyn.EOF
ComBox.AddItem dyn("Codigo") & ""
dyn.MoveNext
Wend
xxbco.Close

como agilizaria essa abertura
IVOFABIANO 09/01/2005 21:47:16
#59675
"Select * From Cliente order by Codigo"

- Não use o "*" , coloque o nome de cada campo que vc quer trazer.
- traga somente os campos que vc vai usar, executando uma nova query qdo vc precisar de outros campos
- substitua o DO WHILE por um FOR NEXT:

sendo i um inteiro

For i = 1 to RS.Recordcount

Next

- Verifique a modelagem da sua base de dados. Aplique os conceitos de normalização.


Abraços
USUARIO.EXCLUIDOS 09/01/2005 21:50:25
#59676
E veja algums artigos sobre ADO, acredito que é mais rapido ( tanto para o programador tanto para o programa )
CLEVERTON 10/01/2005 00:40:40
#59708
vc está fecha o banco de dados depois que faz a consulta ?

se estiver, deixe o banco de dados sempre aberto para fazer usas consultas

só uma sujestão
USUARIO.EXCLUIDOS 10/01/2005 01:46:53
#59718
Abra seu banco de dados no Form_Activate e não no Form_Load. Assim ele vai abrir sua tela primeiro, carregar os componentes e tal e depois vai executar a abertura de seu banco de dados. Assim o usuário fica vendo a tela enquanto espera.
A sim... siga as outras dicas acima!!
Abraços,
Milton
IVOFABIANO 11/01/2005 08:29:23
#59914
Para "minimizar" a impressão de espera no carregamento, use uma tela de splash enquanto os dados são carregados.

Abs
LGUSTAVOC 11/01/2005 08:41:16
#59921
Discordo de vc caro amigo DREAMPEPPERS99. Embora isso seja amplamente questionado por muitos usuários, a conexão mais rápida para banco de dados Access é via DAO, conforme já foi comprovado em vários testes.
IVOFABIANO 11/01/2005 08:52:42
#59931
Depende do Access que vc está usando LGUSTAVOC. o DAO só é mais rápido com Access 97.

é importante ressaltar que o uso correto do tipo de cursor faz diferença. o Cursor setado como "adOpenForwardOnly" é mais rápido que os outros (ele lê para frente), mas dependendo do que vc precisa, vc irá usar u m"adOpenDynamic" ou outro.

Abraços.
FABIO.ALEXANDRE 11/01/2005 22:40:06
#60160
query = "Select [txt-color=#ff0000]Codigo[/txt-color] From Cliente order by Codigo"
Set dyn = xxbco.[txt-color=#0000ff]openrecordset[/txt-color](query)
[txt-color=#ff0000]do[/txt-color] While Not dyn.EOF
ComBox.AddItem dyn("Codigo") & ""
dyn.MoveNext
[txt-color=#0000ff]loop[/txt-color]
[txt-color=#ff0000]set dyn=nothing[/txt-color]

Deixa sua consulta trazer so os campos necessário ao seu combo por q dependendo do tamanho de sua tabela isso pode se tornar + pessado

espero ter ajudado
Tópico encerrado , respostas não são mais permitidas