Ir para conteúdo
Fórum Script Brasil
  • 0

FlexGrid


Lampiao

Pergunta

Salve, colegas.

Estou com problemas para trabalhar com o MSHFlexGrid.

Eu estava usando um método de preenchimento para cerca de 1000 registros, que demorava quase 10 segundos para terminar de preencher. Então encontrei o método datasource (set flex.datasource = tbPedidos) que é o mais simples para se popular e o preenchimento passou a demorar somente 3 segundos. O principal problema é que não encontrei forma nenhuma de se formatar uma coluna do tipo "currency" e com isso, acabei voltando à estaca zero.

Depois encontrei uma outra forma de se preencher o grid na qual com o método getrows é possível saber o número de linhas, o que diminuiria o processamento (ao invés de ficar verificando a cada registro se ele é o último) e o carregamento passou a ser de 2 segundos, mas estranhamente, ele sempre carrega um registro a menos da tabela (se a mesma possui 100 registros, ele só pega 99 e deixa a 1ª linha em branco), o que também me levou à estaca zero.

Estou começando a trabalhar agora com grid. Se puderem, também digam qual grid tem o melhor desempenho (flexgrid, datagrid,dbgrid). Só preciso preencher rapidamente o grid. O resto (alteração, exclusão) tudo é feito em um formulário. O grid é só consulta. Abaixo seguem os códigos. Agradeço desde já a atenção.

1) Método datasource -> Carrega em 3 segundos mas não consigo formatar o campo valor_ped

Dim tbPedidos As New ADODB.Recordset

Abre_Base' ABRE A BASE DE DADOS

tbPedidos.Open "SELECT id_ped,data_ped,valor_ped FROM Pedidos", dBase, adOpenForwardOnly, adLockReadOnly

Set flexPedidos.DataSource = tbHoras

tbPedidos.Close

Fecha_Base

2) Método GetRows -> Carrega em 2 segundos mas carrega sempre um registro a menos (deixando a 1ª linha em branco) e também não consigo formatar a coluna valor_ped

Dim tbPedidos As New ADODB.Recordset

Dim vAvarData As Variant

Dim vIntrows As Integer

Dim i As Integer

Dim j As Integer

Dim vLinha As String

Dim vRegistros As Integer

Dim vColunas As Integer

Dim vConta As Integer

Abre_Base' ABRE A BASE DE DADOS

tbPedidos.Open "SELECT id_ped,data_ped,valor_ped FROM Pedidos", dBase, adOpenForwardOnly, adLockReadOnly

vAvarData = tbHoras.GetRows

tbPedidos.Close

Set tbHoras = Nothing

Fecha_Base

Rem VERIFICA SE EXISTEM LANÇAMENTOS

If vIntrows > UBound(vAvarData, 1) Then

MsgBox "Não há registros para selecionar ...", vbAbortRetryIgnore, "Teste Flex"

Exit Sub

End If

Rem CALCULA O TOTAL DE CAMPOS E REGISTROS SELECIONADOS

vColunas = UBound(vAvarData, 1)

vRegistros = UBound(vAvarData, 2)

For i = 0 To vRegistros

For j = 0 To vColunas

vLinha = vLinha & vAvarData(j, i) & Chr(9)

Next j

flexPedidos.AddItem vLinha

vLinha = ""

Next i

Abraço, colegas.

Lampião

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...