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
Pergunta
Lampiao
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
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.