MODO DE EXIBICAO
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.
[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.
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
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.
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.
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.
Bem pensado KERPLUNK mas o ListView da pra gente usar a propriedade TEXT igual o FLEXGRID? tipo textbox = grid.text..
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
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
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.
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.
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.
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
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.
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
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
Tópico encerrado , respostas não são mais permitidas