MSFLEXGRID

USUARIO.EXCLUIDOS 27/05/2007 14:46:59
#218407
alguem pode me uma ajuda grande com esse componente;
eu uso o data DataGrid e gostaria de usuar esse MsflexGrid so que ele e um pouco diferente. como por exemplo no data datagrid para inserir meus dados eu apenas faço minha sql e depois minha recordeset sendo assim faço da seguinte maneira

set meu datagrid.datasouce= meu recordeset

e tudo da certo

ja no msflexgrid tenho que inserir os dados usadndo o loop

gostaria de saber se tem como trabalhar sem usar o loop e se alguem tem algum manual sobre ele usando conexao ADO
USUARIO.EXCLUIDOS 27/05/2007 18:06:52
#218414
Utilize a linha abaixo apos abrir um recordset utilizando a variavel RS e um MSFlexgrid com o nome de FlexConsulta:

FlexConsulta.Clip = Rs.GetString(adClipString, -1, Chr(9), Chr(13), vbNullString)



Com esta linha vc adiciona todos os campos retornados pelo RecordSet, sem utilizar LOOP.
USUARIO.EXCLUIDOS 27/05/2007 18:57:21
#218416
FLTHEODORO mais gostaria de saber o significado realmente desse lina
por exemplo:
FlexConsulta 'e uma variavel que vc criou
clip 'o que signigica
etc...
USUARIO.EXCLUIDOS 27/05/2007 23:38:07
#218428
FlexConsulta é o nome do componente MSFlexGrid q esta no Form.

O comando Clip serve para adicionar os dados no MSFlexGrid, ou seja ele entende q cada registro é numa linha e q cada campo da tabela é numa coluna. Entaum, a sua consulta SQL, deverá retornar apenas os campos q vc deseja exibir na tela. Durante muito tempo eu procurei por uma maneira de preencher o MSFlexGrid de forma rapida. No entanto encontrei esta. Existem outras formas de preencher e de formatar o MSFlexGrid. Isso vai depender da maquina do BD e d qtos registros a sua consulta retorna.
LUIS.HERRERA 28/05/2007 07:53:58
#218442
Nildglan sem dúvidas essa forma que o colega citou é a mais rápida para carregar um grid, porém ela é limitada a nível de formatação e personalização do grid, o que é o ponto forte desse componente.

Eu uso um loop normarl (do While) para isso, de forma que preencho um grid com 5 mil registros em torno de uns 2 segundos, o que acho mais que suficiente.

Eu uso os seguintes recursos:
- progressbar para acompanhar o preenchimento (na maioria das vezes nem aparece, por ser tão rápido)

- formatação de cada coluna em função de seus dados (cor do texto, alinhamento, máscara, quebra de linhas para textos longos, e inserção de caracteres especiais ou imagens quando necessário. Isso seria impossível com um preenchimento automático como esse citado acima ou um DataSource de outros componentes.

Além disso, um loop te permite fazer uma pergunta ao usuário de deseja continuar o preenchimento, caso hajam mais que X registros localizados, permitindo a interrupção do carregamento.

Agora não estou lembrado, mas existem um limite de registros para o Flexgrid que se ultrapassado causa erro no controle, porém já li em algum lugar que se pode contornar esse problema, mas não lembro como.

Aqui no siste tem um monte de exemplos sobre seu uso, inclusive já mandei vários. Dê uma pesquisada que encontrará muito coisa boa.
USUARIO.EXCLUIDOS 28/05/2007 09:17:20
#218448
Sim o erro citado pela qtde de preenchimento é proporcional ao numero de registro com o numero de colunas, o ideal é utilizar o MSHFlexgrid, esse é limitado pelo potencial da máquina e nao do componente. Se nao me falha a memoria o limite do MSFlexgrid é de 65554 linhas isso cai se aumenta a coluna.
USUARIO.EXCLUIDOS 28/05/2007 14:26:15
#218509
Galera o unico problema que encontrei e o seguinte:

Quando eu carrego meu form da tudo certo, o problema e quando peço para inserir um regitro a mais. como por exemplo
no meu form tem varios controles dentre ele os principais sao:

uma caixa de texto onde vou inserir a nova cidade
e um botao gravar onde vou clicar e os dados da caixa de texto vai ser adicionado ao msflexgrid ou seja a minha tabela do banco de dados
no datagrid tudo isso dar certo

o que eu quero e quando eu clicar nesse botao de gravar limpasse o msflexgrid e removesse os itens e carregasse novamente o msflexgrid. sendo assim quando carregasse ele ja atualizada com o novo registro.

ate que para inserir e limpar e facil e eu ja fiz o problema e que os itens nao sao removidos, ficando assim o msflexgrid fica com a atulizacao da tabela mais as linha limpas
USUARIO.EXCLUIDOS 28/05/2007 14:46:19
#218514
nildglan, use o mshflexgrid que vc nao precisa fazer isso, ai vc pode fazer igual vc fazia com o dbgrid

set seugrid.datasource = rs
ROBIU 28/05/2007 15:21:45
#218525
Resposta escolhida
Tenta isso: [txt-color=#ff0000]FGrid.Rows = Rs.RecordCount[/txt-color], onde Rs é a variável RecordSet de conexão Ado. Se tiver usando Data ou outro objeto, faz o mesmo com a propriedade RecordCount.Dessa forma, a quantidade de linhas na grid será a quantidade de registros na tabela. Para você conseguir formatar os dados das colunas, é preciso usar um loop. Faça isso em uma subrotina pois sempre será necessário atualizar a grid após uma operação com os dados do banco. Então, a cada operação chama esta sub para atualizar a grid. A MsHFlexgrid tem as mesmas funcionalidades da MsFlexGrid com a diferença de ser um controle ADO. Com a Msflexgrid(que é um controle DAO, você pode vincular com o controle Data Control sem usar código, mas aí você estaria preso ao DAO). Resumo: Para usar MsflexGrid sem loop, use DAO, Para usar MsHflexgid, faça com ADO.Neste artigo você vê o que estou dizendo
Controles Vinculados
Anexo um exemplo de como usar a grid.
USUARIO.EXCLUIDOS 28/05/2007 15:44:02
#218533
entao ROBIU seria melhor eu usar o MsHFlexgrid que ja e um componente ADO
USUARIO.EXCLUIDOS 28/05/2007 17:20:33
#218562
NildGlan, vc recebeu os exemplos ?
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas