Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rodrigo Defende

Retirar dados de uma MSHFLEXGRID

Recommended Posts

Seguinte: tenho uma MSHflexgrid onde eu carrego varios dados vindo de varias tabelas. Quero montar uma rotina onde depois de carregar tudo se eu selecionar uma checkbox o sistema vai fazer uma busca em uma tabela especifica e dai comparar o resultado linha a linha com o que esta na MSHflexgrid e se os dados forem batendo ou eliminando a linha na MSHflexgrid.

Cheguei a montar esta funcao mas acontece um fato interessante: na consulta de carga da MSHflexgrid sao trazidos cerca de 500 linhas. A minha consulta de comparacao chega a uns 350 registros. Quando eu faco o Loop para ir retirando as linhas co meu criterio a rotina soh tira 170 linhas e dai para. Se eu rodar novamente ela tira mais 170 e para e ai vai ateh limpar tudo.

Por acaso o metodo RemoveItem tem alguma limitacao???

Segue a rotina que eu estou usando pra comparar e retirar as linhas..

 

Private Function SemHorarios()Dim valR As IntegerDim nCartao As StringDim Sql As StringDim totalLinhas As IntegerDim rsC As New ADODB.RecordsetOn Error Resume NextgrR.RefreshConecta TruetotalLinhas = grR.RowsvalR = 1Do While valR <= totalLinhasSql = "Select cartao From horario_cad Where cartao = '" & grR.TextMatrix(valR, 0) & "'"Set rsC = CreateObject("ADODB.Recordset")rsC.Source = Sql	Set rsC.ActiveConnection = Cn	rsC.Open		If Not rsC.EOF Then			grR.RemoveItem valR			grR.Refresh		End If	rsC.Close	Set rsC = NothingvalR = valR + 1LoopConecta FalseIf Err.Number <> 0 Then	Call MostraErro(Err.Number, Err.Description, Me, "SemHorarios")	Exit FunctionEnd IfEnd Function

Relamente estou prescisando disso. Quem tiver uma dica....

Detalhe - eu tenho de primeiro carregar a grid e depois fazer a comparacao para eliminar as linhas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que você tenha que remover as linhas de baixo para cima. Isso porque ao remover a 2ª linha, a que era a 3ª sobe para a segunda posição e a 4ª sobe para a terceira. Daí, a próxima volta do loop vai mandar remover a 3ª linha (que era a 4ª), ficando a 2ª ainda lá (que era a terceira). Sacou? ;) Acredito que seja isso.Abraços,Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque valR com o total de linhas e faça ele ir diminuindo (valR = valR - 1) até chegar a 0.Certo? ;) Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.