CONSULTA LENTA TERMINAL BANCO MDB

HUBER.FABIO 07/02/2014 10:24:14
#434411
Olá amigos,

Estou com um cliente com Cadastro de Produtos com 50.000 registros banco access MDB.

Criei uma consulta de produtos para tela de venda, onde uso um dbgrid e função SQL.

Problema está nos terminais, no servidor tudo OK, existe uma demora significativa para pesquisa, Exemplo: digito [Ô]A[Ô] o sistema congela um pouco até me retornar todos produtos que contém A e assim sucessivamente.

Alguém teria alguma ideia de como otimizar essa consulta, algum outro grid, alguma outra rotina e até mesmo alguma ideia que possa estar fazendo no cadastro de produtos que possa deixar minha consulta mais dinâmica.

Grato
MARCELO.TREZE 07/02/2014 11:47:38
#434415
Huber em outros tópicos o mesmo problema foi detectado na maioria deles, estava relacionado com a conexão dos terminais.

Exemplo: se você abrir a conexão somente na hora de fazer a consulta, isso torna o procedimento lento, porém se ao abrir o form da consulta você ja abrir a conexão, e depois apenas fazer a consulta o processamento e muito mais rápido.

veja se é isto que esta acontecendo.
HUBER.FABIO 10/02/2014 08:14:32
#434467
Bom dia !

Estou abrindo a conexão pelo load.
MARCELO.TREZE 10/02/2014 08:37:35
#434468
então colega seu problema está relacionado a quantidade de registro, minha sugestão é paginar estes registros.

veja este LINK
HUBER.FABIO 10/02/2014 09:24:12
#434471
Olá,

Com certeza sim é pela quantidade de registros pois são 50.000, estou usando dbgrid, como seria esse paginar registros, funciona no dbgrid, tem algum exemplo aqui no fórum.
OCELOT 10/02/2014 10:03:51
#434473
Se não tiver criado um índice ainda no campo que faz a busca isso pode ajudar um pouco, mas o ideal em casos de muitos registros é não querer fazer tudo em tempo real, não faça a busca na hora que digitarem, deixe digitarem primeiro e só depois faça a busca
MARCELO.TREZE 10/02/2014 10:35:25
#434477
você viu o link que eu postei?
HUBER.FABIO 10/02/2014 10:40:21
#434478
Olá Marcelo, pra mim só apareceu veja esse link e nada +

Achei algo sobre Paginar Registros, estou testando e acontece um erro, vou posta abaixo como estou usando.

Load
Set cn = New ADODB.Connection With cn
.CursorLocation = adUseClient
.Provider = [Ô]Microsoft.Jet.OleDB.4.0[Ô]
.Open [Ô]Data Source = [Ô] & vgDirDb & vgNomeDb
End With

Set rs = New ADODB.Recordset
Set rs.ActiveConnection = cn
rs.CursorLocation = adUseClient
rs.PageSize = PAGE_SIZE
rs.Properties([Ô]Initial Fetch Size[Ô]) = PAGE_SIZE

rs.Open [Ô]SELECT Produtos.[Produto Longo] & Space(8) & Produtos.[Nome Marca], Produtos.[Código de Barras], Produtos.[Preço de Venda], Produtos.[Preço a Prazo], Produtos.[Estoque Atual], Produtos.[Código do Produto] from Produtos where Comercializado = False[Ô], cn
Set DataGrid.DataSource = PaginarRecordset(rs)


Private Function PaginarRecordset(recset As ADODB.Recordset) As ADODB.Recordset

Dim x As Long
Dim fld As Field
Dim origPage As Long

origPage = IIf(recset.AbsolutePage > 0, recset.AbsolutePage, 1)

With subRst
If .State = adStateOpen Then .Close

[ô]Cria campos
For Each fld In recset.Fields
.Fields.Append fld.Name, fld.Type, fld.DefinedSize, fld.Attributes
Next fld

[ô]Inclui registros
.Open
For x = 1 To PAGE_SIZE

If recset.EOF Then Exit For
.AddNew

For Each fld In recset.Fields
subRst(fld.Name) = fld.Value
Next fld

recset.MoveNext

Next x

.MoveFirst
recset.AbsolutePage = origPage

End With

Set PaginarRecordset = subRst

End Function

Erro acontece na parte em negrito, no comando fld.DefinedSize , quando dou ponto ele não aparece essa opção
MARCELO.TREZE 10/02/2014 11:18:35
#434481
clica em cima da 'palavra LINK colega

HUBER.FABIO 10/02/2014 11:23:51
#434482
Olá Marcelo

Esse exemplo que postei é do link passado, porém está apresentando erro acima citado, não reconhece o comando fld.DefinedSize
HUBER.FABIO 10/02/2014 15:17:28
#434491
Olá,

Alguém saberia me dizer porque o VB não reconhece o comando em negrito na linha abaixo

.Fields.Append fld.Name, fld.Type, fld.DefinedSize, fld.Attributes

Engraçado é que num projeto reconhece e no outro não.

grato
Página 1 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas