USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Como evitar erro "Invalid Row Index"?
Vilmar Brazão
Pontos: 2843
SAO PAULO
SP - BRASIL
Postada em 29/02/2008 15:42 hs         
Como evitar erro "Invalid Row Index"?

Nesta rotina abaixo, ele me exclui as linhas, mas acaba se perdendo no final e exclui linha que não podia, enfim linhas que tem STATUS permitidos para exibição: OK, SOK, R, ER

O objetivo da rotina é apagar todas as linhas que tenham os STATUS escritos no IF.

Algum outro jeito de fazer isto sem usar laço FOR...NEXT ?

Citação:
Public Sub ApagarLinhas()
On Error GoTo erro:

    Dim lrow As Long
    Dim lColStatus As Long
    
    lColStatus = m_frm.Grid.ColumnIndex("STATUS")

    For lrow = 1 To m_frm.Grid.Rows
        If m_frm.Grid.CellText(lrow, lColStatus) = "C" Or m_frm.Grid.CellText(lrow, lColStatus) = "SC" Or m_frm.Grid.CellText(lrow, lColStatus) = "CX" Or m_frm.Grid.CellText(lrow, lColStatus) = "TC" Or m_frm.Grid.CellText(lrow, lColStatus) = "G" Or m_frm.Grid.CellText(lrow, lColStatus) = "TX" Or _
           m_frm.Grid.CellText(lrow, lColStatus) = "CP" Or m_frm.Grid.CellText(lrow, lColStatus) = "E" Or m_frm.Grid.CellText(lrow, lColStatus) = "EX" Then
            Call m_frm.Grid.RemoveRow(lrow)
        End If
    Next lrow
    
    Exit Sub
    
erro:
    Debug.Print Err.Description
End Sub


Muito obrigado.
     
Tiranossauro
DOIS IRMÃOS
RS - BRASIL
Postada em 29/02/2008 15:54 hs            
For lrow = 1 To m_frm.Grid.Rows
A sua linha final não pode ser igual a Grid.Rows, porque a contagem inicia de 0 e vai até Rows - 1
     
Tiranossauro
DOIS IRMÃOS
RS - BRASIL
Postada em 29/02/2008 16:09 hs            
mais uma coisa, vc está deletando linhas sendo que a propriedade Rows vai sofrer alterações.
 
Faça o loop decrescendo da maior para a menor, talvez seja isto
     
Vilmar Brazão
Pontos: 2843
SAO PAULO
SP - BRASIL
Postada em 29/02/2008 16:09 hs         
tiranossauro.
este grid é o vbaccelerator, ele começa tudo em 1 mesmo.
o problema é que quando tiro a linha o total de linhas diminui m_frm.Grid.Rows.
é aqui que estou me perdendo Emoções.
 

http://www.vilmarbro.com.br
     
Vilmar Brazão
Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 29/02/2008 16:18 hs         
COM step -1, loop descrescente quase deu certo Emoções.
sobrou só uma linha, mas foi a linha errada.
tem que achar o local certo de por esta rotina....
 
vlw Emoções

http://www.vilmarbro.com.br
   
Vilmar Brazão
Pontos: 2843
SAO PAULO
SP - BRASIL
Postada em 29/02/2008 18:57 hs         
pessoal, agora eu acertei onde chamar a rotina.
coloquei na 2ª rotina de atualização da tela e "funfou"  

agora passeis os executáveis pro testador fazer uma bateria    de testes

vlw
     
Página(s): 1/1    

CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página