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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Problemas com RemoveItem
Defende
JARINÚ
SP - BRASIL
Postada em 08/02/2006 15:16 hs            
tenho uma rotina para verificar o que esta duplicado no sistema e com isso eu elimino da MSHflexgrid. Ateh ai tranquilo soh que quando eu uso RemoveItem pra tirar da grid a linha ateh a contagem de 170 linhas ele elimina normal depois para e a minha grid tem mais de 500 linhas para serem eliminadas. Sera que existe alguma limitacao nesse requisito??
To postando a rotina que faz isso.
grR eh a minha MshFlexGrid.



Private Function SemHorarios()
Dim valR As Integer
Dim nCartao As String
Dim Sql As String
Dim totalLinhas As Integer
Dim rsC As New ADODB.Recordset

On Error Resume Next
grR.Refresh

Conecta True
totalLinhas = grR.Rows
valR = 1

Do While valR <= totalLinhas

Sql = "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 = Nothing

valR = valR + 1
Loop
Conecta False

If Err.Number <> 0 Then
    Call MostraErro(Err.Number, Err.Description, Me, "SemHorarios")
    Exit Function
End If

End Function
     
Donkey
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
PRESIDENTE PRUDENTE
SP - BRASIL
Postada em 09/02/2006 07:45 hs            
Acho que essa sua rotina esta com um bug, por exemplo,quando vc da um removeitem todas as linhas abaixo são elevadas uma linha a cima, seu fonte não trata isso, fazendo com que a proxima linha testada não seja a correta.
Ou vc apenas marca a linha para apagar e realmente só apaga ela no fim da operação, ou quando remover vc diminui o contador em duas linhas.... talvez seja ai o seu problema. T+
     
Defende
JARINÚ
SP - BRASIL
Postada em 09/02/2006 08:24 hs            
E como eu faria esse tratamento de elevar uma linha acima?

Voce disse pra eu marcar e apagar a linha no fim da operacao soh que eu tenho +/- umas 300 linhas pra fazer isso - como eu marco e apago no fim?
     
Donkey
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
PRESIDENTE PRUDENTE
SP - BRASIL
Postada em 09/02/2006 20:34 hs            
Vc pode ir apagando, + quando vc remover a linha, o contador que vc utiliza para saber qual linha esta teria que ser decrementado 2 para continuar dando certo.
 
O que eu falei de marcar, seria criar uma coluna, pode deixar ela invisivel com .colwith (coluna) = 0, e se tiver que marvar vc setaria por exemplo, flex.textmatrix(linha, coluna) = *
 
E no fim da verificação, faria um outro for Eliminando todas as linhas com * em tal coluna.... T+
     
Defende
JARINÚ
SP - BRASIL
Postada em 10/02/2006 06:17 hs            
Consegui resolver o problema. Segue como ficou o codigo para quem interessar.


Private Function SemHorarios()
Dim valR As Integer
Dim nCartao As String
Dim Sql As String
Dim totalLinhas As Integer
Dim rsC As New ADODB.Recordset

On Error Resume Next

Conecta True
valR = grR.Rows

Do While valR >= 1
    Sql = "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 = Nothing
    valR = valR - 1
Loop
Conecta False

If Err.Number <> 0 Then
    Call MostraErro(Err.Number, Err.Description, Me, "SemHorarios")
    Exit Function
End If

End Function
     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



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