O GRID E CARREGADO A CADA INSERCAO...DEMORA...

USUARIO.EXCLUIDOS 02/04/2005 07:52:35
#76316
Para carregar o MSHFLEXGRID o sistema chama a função abaixo para cada inserção consultando a base (SQLServer) isso é muito demorado...alguém poderia me dar uma dica para melhorar este processo?


Function CarregaGrid()
Dim Rs As ADODB.Recordset
Dim StrSql As String
Dim i As String
Dim Conta As String

On Error GoTo erro_saidas
Set Rs = New ADODB.Recordset
if len(TxtnrProcessoSaida.text) > 0 then
StrSql = "Select * From TblProcessos Where NrProcesso = '" & Trim(TxtnrProcessoSaida.Text) & "' order by nrControle"
Set Rs = Cn.Execute(StrSql)
End If
If Rs.EOF Then
MsgBox "Processo " & TxtnrProcessoSaida.Text & " Não Localizado!", vbInformation, "Faturamento"
TxtnrProcessoSaida.SetFocus
TxtnrProcessoSaida.Text = ""
Exit Function
Else
MSHFlexGrid1.Rows = 2
i = 1
Do While Not Rs.EOF
MSHFlexGrid1.Rows = Me.MSHFlexGrid1.Rows + 1
MSHFlexGrid1.TextMatrix(i, 0) = i
If IsNull(Rs("NrProcesso")) Then MSHFlexGrid1.TextMatrix(i, 1) = "" Else: MSHFlexGrid1.TextMatrix(i, 1) = Rs("NrProcesso")
If IsNull(Rs("NrLote")) Then MSHFlexGrid1.TextMatrix(i, 2) = "" Else: MSHFlexGrid1.TextMatrix(i, 2) = Rs("NrLote")
Rs.MoveNext
MSHFlexGrid1.TopRow = MSHFlexGrid1.Rows - 1
i = i + 1
Loop
MSHFlexGrid1.Rows = MSHFlexGrid1.Rows - 1
End If
MAIGUI 02/04/2005 11:35:29
#76328
numa dessas você carrega o flex no load e depois vai adicionando/alterando somente os dados que você mecher, um a um, não necessitando carregar tudo novamente

espero ter ajudado, abraços
USUARIO.EXCLUIDOS 03/04/2005 17:32:55
#76424
eu uso essa mesma função no load para carregar o grid e no botão Gravar do formulario após a rotina Insert. Porque? Porque eu quero atualizar o grid eu uso a seguinte sintaxe:

Private BtnGravar_Click()

insert into ()values ()
call CarregaGrid

end sub

Pelo o que vc está me dizendo eu nao posso usar a mesma função?
TONARE25 03/04/2005 17:40:13
#76427
Resposta escolhida
O que ele quiz dizer é que vc pode inserir linha, excluir linha, pintar ceelular e alterar conteudo do flex sem ter que carregar tudo denovo!!!
USUARIO.EXCLUIDOS 03/04/2005 17:46:24
#76431
Eu posso então adicionar um registro no grid sem ter que carregar tudo novamente?
TONARE25 03/04/2005 17:52:12
#76434
Com certeza.. o que ira fazer é aumentar e nro total de linhas do Grid (msflexgrid1.rows = msflexgrid1.rows + 1) e adicionar na ultima linha o resultado
Ou se quizer dá para colocar em qualquer posição a nova linha e colocar o dado...
USUARIO.EXCLUIDOS 03/04/2005 17:52:37
#76435
Primeiramente desconsidere a mensagem acima,
Em segundo lugar alguem tem algum exemplo de como eu faria a inserção de um registro sem ter que carregar todos os registros novamente?
USUARIO.EXCLUIDOS 03/04/2005 17:54:41
#76436
Desculpe eu pedi para desconsiderar pq eu repeti a pergunta valeu.
TONARE25 03/04/2005 18:02:13
#76437
Tipo Vc faz assim:
Carrega Uma única vez o Grid

Pode ser um click de botão, ativa a função abaixo para inserir:
Isto irá adicionar na última linha o que vc quizer
Function Adiciona(XTexto as String)
msflexgrid1.rows = msflexgrid1.rows + 1
UltimaLinha = msflexgrid1.rows
msflexgrid1.textmatrix(UltimaLinha,Coluna) = Xtexto
End Function

Para excluir uma linha, basta abaixo
Function RemoveLinha()
LinhaSelecionada = msflexgrid1.rowsel
msflexgrid1.removeitem LinhaSelecionana
msflexgrid1.rows = msflexgrid1.rows - 1
End Function

QQ Coisa é só falar!
Tópico encerrado , respostas não são mais permitidas