ERRO AO CARREGAR O FLEX GRID

USUARIO.EXCLUIDOS 05/07/2007 10:40:41
#224774
pessoal esto com problema para preenche o flex grid.
eu tenho uma tabela como +ou - uns 80.000 registro
e esta dando erro ao carregar o grid
UNABLE TO ALLOCATE MEMORY FOR FLEXGRID
USO CONEXAO ADO E BANCO DE DADO DO ACCESS.

ESTOU FAZENDO O SEGUINTE:
con.Open "provider=microsoft.jet.oledb.4.0;data source= " & App.Path & "    ransferencia.mdb" & ";Jet OLEDB:Database Password='0511'"
rstransferencia.CursorLocation = adUseClient
rstransferencia.CursorType = adOpenDynamic
rstransferencia.LockType = adLockBatchOptimistic
Set rstransferencia = con.Execute("select * from dbo_contasgerais where data order by data ")

If rstransferencia.RecordCount > 0 Then
rstransferencia.MoveFirst
Do Until rstransferencia.EOF

msgridbusca.Row = (msgridbusca.Rows - 1)
msgridbusca.TextMatrix(msgridbusca.Row, 1) = rstransferencia("subconta") & ""
msgridbusca.TextMatrix(msgridbusca.Row, 2) = rstransferencia("data") & "" ' coloque & "" para que o MSGRIDBUSCA aceite o campo null
msgridbusca.TextMatrix(msgridbusca.Row, 3) = rstransferencia("codloja") & ""
msgridbusca.TextMatrix(msgridbusca.Row, 4) = Format(rstransferencia("valor"), "currency") & ""
msgridbusca.TextMatrix(msgridbusca.Row, 5) = rstransferencia("descricao") & ""
msgridbusca.TextMatrix(msgridbusca.Row, 6) = rstransferencia("nnota") & ""
msgridbusca.TextMatrix(msgridbusca.Row, 7) = rstransferencia("codlan") & ""
msgridbusca.Rows = (msgridbusca.Rows + 1)


SERA QUE ALGEM PODERIA ME AJUDAR, E COMO FAZER O GRID CARREGAR MAIS RAPIDO.
LCSD 05/07/2007 10:44:35
#224777
Primeira pergunta:
VC precisa realmente listar estes 80.000 registros no seu GRID?? Não têm como aplicar um filtro aí não??

SEGUNDA PERGUNTA:
PQ na abertura da sua tabela, VC usa a cláusula WHERE se VC não passa parâmetro nenhum pra ela?? Não têm a necessidade deste WHERE para "tentar" exibir os seus 80.000 registros.
USUARIO.EXCLUIDOS 05/07/2007 10:46:01
#224778
O MSFLEXGRID tem um limite(máximo) de linhas, se não me engano é + ou - 32.000 linhas...
USUARIO.EXCLUIDOS 05/07/2007 11:03:03
#224782
Cara pq vc não faz feito o LCSD disse, cria um filtro direcionando o que vc precisa que seja realmente apresentado. Ou vc olha os 80.000 registros um a um ??

Um abraço!
USUARIO.EXCLUIDOS 05/07/2007 11:35:33
#224787
Se não der para filtrar, você terá de fazer uma paginação na exibição do grid.

Você teria de criar um parâmetro inicial par ser seu top e o número de linhas que exibiria por página...

E você deve ter um campo autonumeração para saber onde ira começar a pesquisa.

Vamos supor que na sua tabela vc tenha o campo id autonumeração. e na hora de carregar a página você queira pegar 100 começando do registo de id 1, então você faria o seguinte:

Select top 10o from tabela where id >= 1

então pegaria o último id selecionado. Vamos supor que seja 110

Então você teria um bot]ao próximo para pegar os demais registros e seu select ficaria assim:

Select top 100 from tabela where id > 110

E faria uma lógica também para um botão anterior.

Eu utilizo sempre paginação pois trabalho muito com WEB, mas neste caso para 80000 registros, seria a melhor forma..





USUARIO.EXCLUIDOS 05/07/2007 12:00:11
#224795
Resposta escolhida

O pessoal aí ta certo...ou filtra ou muda de componente
então
Use um datagrid conectado ao banco...é mais rápido q o flexgrid nesse caso e se tem q mostrar os 80000...ele guenta!

se n tiver q mostrar ..é só filtar com sql..q vai na boa tb

boa sorte
USUARIO.EXCLUIDOS 05/07/2007 13:50:17
#224825
Concordo com o MARCOSA.
Tópico encerrado , respostas não são mais permitidas