MODO DE EXIBICAO

ADILSOO 14/03/2012 07:54:52
#397109
Bom dia gente, bom, gostaria de saber o seguinte, eu tenho um form que o usuario vai fazendo os lancamentos, nesse form coloquei um MSFLEXGRID, para visualizar os dados lancados, e cada vez que eu abro o form ele carrega todos os dados ACCESS para o GRID, mas ele demora aí uns 2 a 3 segundos pra abrir o form, então queria saber, tem alguma forma de eu fazer essa exibicao sem ser desse modo? porque já vi sistemas com ACCESS mesmo que faz isso e é instantanio, o modo que eu estou fazendo a insercao dos dados no GRID é...

[txt-color=#0000f0]Tabela.MoveFirst
Do While Tabela.EOF = False
If Tabela.EOF = False Then
Grid.AddItem [Ô][Ô] & VbTab & Tabela([Ô]Campo1[Ô]) & VbTab & Tabela([Ô]Campo2[Ô])
End If
Tabela.MoveNext
Loop[/txt-color]

Será que é por causa do loop que isso acontece?

Minha tabela está com pouco mais de 10 mil registros.
ROBIU 14/03/2012 08:50:04
#397117
Você realmente precisa de todos esses registros na Grind? Como você pega os dados? Você pode fazer um filtro. Faz um select apenas com os campos que serão usados. Você pode usar o MsHFlexgrid com ADO e preencher os dados pelo datasource, sem o loop.
Set HGrid.DataSource = Rs 

ADILSOO 14/03/2012 08:56:05
#397118
Sim, nesse caso sim, pois é a visualizacao de todos os lancamentos feitos até a data, a forma que eu pego os dados é a informada no post acima, valeu.
KERPLUNK 14/03/2012 09:20:08
#397123
Crie uma classe que contenha todos as propriedades relativas à sua tabela. Faça a consulta e preencha uma collection da classe, passe a collection para o Grid. Assim é mais rápido porque:
1 - Ao passar os dados para a classe, você está passando de um objeto pesado(Recordset) para um objeto bem mais leve(collection de classes)
2 - O mesmo caso acima se inverte ao passar os dados da classe para o flexgrid.

Outra opção, seria usar um listview, que é mais rápido que o FlexGrid.
ADILSOO 14/03/2012 09:57:35
#397127
Bem pensado KERPLUNK mas o ListView da pra gente usar a propriedade TEXT igual o FLEXGRID? tipo textbox = grid.text..
LUIZCOMINO 14/03/2012 10:15:07
#397128
tente colocar o DoEvents para não travar o form e abrir rapidamente


Tabela.MoveFirst
Do While Tabela.EOF = False
If Tabela.EOF = False Then
Grid.AddItem [Ô][Ô] & VbTab & Tabela([Ô]Campo1[Ô]) & VbTab & Tabela([Ô]Campo2[Ô])
End If
Tabela.MoveNext
DoEvents
Loop
KERPLUNK 14/03/2012 10:20:06
#397129
Citação:

Bem pensado KERPLUNK mas o ListView da pra gente usar a propriedade TEXT igual o FLEXGRID? tipo textbox = grid.text..


Bem, não é assim. No ListView, existe ítem e subítem. Ítem é a primeira coluna, todas as outras são sub-ítens.
ADILSOO 14/03/2012 11:23:42
#397133
Porque quando quiser pegar o registro selecionado eu coloco no DBCLICK,

txtID = IDBANCO, e puxo os outros registros, tem essa possibilidade no listview?

e LUIZCOMINO, qual a diferenca? ele abre o form e nao carrega depois? ou sei la... como funciona o DoEvents?

Valeu.
KERPLUNK 14/03/2012 11:29:02
#397134
Citação:

txtID = IDBANCO, e puxo os outros registros, tem essa possibilidade no listview?


Com certeza, essa funcionalidade existe.

DoEvents, é um comando que [Ô]descarrega[Ô] os buffers de eventos, isso vai fazer com que seu loop fique ainda mais lento
ADILSOO 14/03/2012 11:36:59
#397135
vou fazer os testes com o listview assim que chegar em casa e posto aqui, se ficar lento assim mesmo, to pensando em adicionar tipo os ultimos 1000 ou 2000 registros sei la.. vou ver e depois posto aqui, por enquanto obrigado a todos.
GANDA.NICK 14/03/2012 14:32:21
#397139
olá..

penso que a maneira mais rápida será .[txt-color=#e80000]GetString [/txt-color].[txt-color=#e80000]Clip[/txt-color]


dê uma olhada neste artigo do macoratti


se não quiser mostrar as colunas todas adapta ao seu jeito com a largura das colunas para Zero


veja se isso o ajuda
Página 1 de 2 [20 registro(s)]
Tópico encerrado , respostas não são mais permitidas