none
remover dados das celulas DataGrid RRS feed

  • Pergunta

  • Tenho um DataGridView e 2 campos. Nome e Endereço. Importo os dados de uma planilha do excel.

    Em algumas planilhas que importo do excel para o DGV, estão o Nome e o Endereço do fulano em uma única célula, gostaria de remover e colocar o nome da rua na célula correta ou seja na célula Endereço.

    Alguem poderia me ajudar.

    Muito obrigada

    sábado, 4 de janeiro de 2014 17:55

Respostas

  • Faça Duas coisas!

    1 - no Load do Formulário ou na Propriedadades do Grid deixe assim

    DataGridView1.AllowUserToAddRows = False

    2 - Sua rotina faltou um not antes do IsNothing

    Ou seja não nullo então entra no if

    Rotina correta

    For i As Integer = 0 To DataGridView1.Rows.Count - 1
    	Dim strRua As String = String.Empty
    	If Not IsNothing(DataGridView1.Rows(i).Cells(0).Value) Then
    		Dim strNome As String = DataGridView1.Rows(i).Cells(0).Value
    		'Buscando a Posição pela palavra Rua
    		Dim posRua As Integer = IIf(Not IsNothing(strNome), strNome.IndexOf("Rua"), -1)
    		If (posRua > -1) Then
    			'Encontrar a posição da Palavra Rua ... 
    			strRua = strNome.Substring(posRua) 'Nome da Rua
    			strNome = strNome.Remove(posRua) 'Nome
    
    			DataGridView1.Rows(i).Cells(0).Value = strNome
    			DataGridView1.Rows(i).Cells(1).Value = strRua
    		End If
    	End If
    Next

    OK!


    Fulvio Cezar Canducci Dias

    domingo, 5 de janeiro de 2014 22:18
  • Obrigada fúlvio, você tem uma facilidade para resolver esses problemas.

    mas tenho 2 dúvidas

    1-Porque no Load do formulario eu tenho que deixar DataGridView1.AllowUserToAddRows=False DataGridView1.AllowUserToAddRows = False O que significa isso.


    2-O que significa literalmente o Not isNothig, fiz um curso basico de vb.net mas não ensinaram sobre esse not isNothing, quando eu posso usa-lo??


    1 - Aquela propriedade marcada com False não deixa o Grid adicionar Linhas automáticamente eleminando algo que você no momento não precisa!

    Essa linha ele vai tirar aonde tem asterisco!

    2 -

    Not (Operador Lógico de negativa de Expressão)

    Dim i As Integer = 30
    If (i = 30) Then
    	'verdade entra no if
    	i = 50 ' entra aqui
    Else
    	i = 30
    End If
    'iniciando de novo para i = 30
    i = 30
    If Not (i = 30) Then 'inverte o valor de True para False e não entra no IF e sim no Else
    	i = 50
    Else
    	i = 10 'entra aqui
    End If

    Leitura recomendada: http://www.macoratti.net/vbn_nol1.htm

    - IsNothing (Função que verifica se o objeto está nullo e retornar True ou False) tipo: é nulo (nothing)

    Se for True é nulo e False tem valor !!!

    Leitura recomendada: http://msdn.microsoft.com/en-us/library/5adx7fxz(v=vs.90).aspx



    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Giovani Cr terça-feira, 14 de janeiro de 2014 13:14
    segunda-feira, 6 de janeiro de 2014 00:43

Todas as Respostas

  • Dim strNome As String = "Pedro de GomesRua Ulisses Cruz"
    Dim strRua As String = String.Empty
    
    'Buscando a Posição pela palavra Rua
    Dim posRua As Integer = strNome.IndexOf("Rua")
    If (posRua > -1) Then
        'Ennctrou a posição da Palavra Rua ... 
        strRua = strNome.Substring(posRua)
        strNome = strNome.Remove(posRua)
    End If


    Fulvio Cezar Canducci Dias

    sábado, 4 de janeiro de 2014 19:02
  • Entendi seu código, é para TextBox não é??

    Tentei adaptar para o DataGridView mas não consegui, eu gostaria de fazer isso dentro do DataGridView,

    tipo buscar a posição pela palavra Rua dentro do DGV, encotrar e passar tudo o o que estiver a direita dentro da célula para a outra célula do DGV.

    Esta assim

    Deveria ficar assim

    sábado, 4 de janeiro de 2014 19:59
  • Não eu coloquei em strings!

    Como se ta fazendo ?


    Fulvio Cezar Canducci Dias

    sábado, 4 de janeiro de 2014 20:34
  • Tentei fazer assim, para percorrer todas as linhas da coluna 0 e verificar se existe a palavra "Rua" e depois mudar de uma célula para outra

      For i As Integer = 0 To DataGridView1.Rows.Count - 1
    
                Dim strRua As String = String.Empty
                Dim strNome As String = DataGridView1.Rows(i).Cells(0).Value
    
    
                'Buscando a Posição pela palavra Rua
                Dim posRua As Integer = strNome.IndexOf("Rua")
                If (posRua > -1) Then
                    'Encontrar a posição da Palavra Rua ... 
                    strRua = strNome.Substring(posRua) 'Nome da Rua
                    strNome = strNome.Remove(posRua) 'Nome
    
                End If
    
    
                DataGridView1.Rows(i).Cells(0).Value() = strNome
                DataGridView1.Rows(i).Cells(1).Value() = strRua
            Next

    Não funcionou

    sábado, 4 de janeiro de 2014 22:51
  • Tentei fazer assim, para percorrer todas as linhas da coluna 0 e verificar se existe a palavra "Rua" e depois mudar de uma célula para outra

      For i As Integer = 0 To DataGridView1.Rows.Count - 1
    
                Dim strRua As String = String.Empty
                Dim strNome As String = DataGridView1.Rows(i).Cells(0).Value
    
    
                'Buscando a Posição pela palavra Rua
                Dim posRua As Integer = strNome.IndexOf("Rua")
                If (posRua > -1) Then
                    'Encontrar a posição da Palavra Rua ... 
                    strRua = strNome.Substring(posRua) 'Nome da Rua
                    strNome = strNome.Remove(posRua) 'Nome
    
                End If
    
    
                DataGridView1.Rows(i).Cells(0).Value() = strNome
                DataGridView1.Rows(i).Cells(1).Value() = strRua
            Next

    Não funcionou

    Deixe Assim as duas ultimas linhas

    DataGridView1.Rows(i).Cells(0).Value = strNome
    DataGridView1.Rows(i).Cells(1).Value = strRua
    Outra coisa também, pegue mania de fazer BreakPoint porque se poderia parar nessas linhas e verificar se houve a divisão entendeu! são dicas legais que to te passando!


    Fulvio Cezar Canducci Dias


    domingo, 5 de janeiro de 2014 01:39
  • Então mas da o seguinte erro

    domingo, 5 de janeiro de 2014 02:16
  • Então mas da o seguinte erro

    Qual o valor de strNome se for nothing tem que colocar um if ai!

    Fulvio Cezar Canducci Dias

    domingo, 5 de janeiro de 2014 02:19
  • Assim? 

     For i As Integer = 0 To DataGridView1.Rows.Count - 1
    
                Dim strRua As String = String.Empty
                If IsNothing(DataGridView1.Rows(i).Cells(0).Value) Then
                    Dim strNome As String = DataGridView1.Rows(i).Cells(0).Value
    
    
    
    
                    'Buscando a Posição pela palavra Rua
                    Dim posRua As Integer = strNome.IndexOf("Rua")
                    If (posRua > -1) Then
                        'Encontrar a posição da Palavra Rua ... 
                        strRua = strNome.Substring(posRua) 'Nome da Rua
                        strNome = strNome.Remove(posRua) 'Nome
    
    
                    End If
    
    
                    DataGridView1.Rows(i).Cells(0).Value = strNome
                    DataGridView1.Rows(i).Cells(1).Value = strRua
                End If
            Next

    Deu o mesmo erro

    domingo, 5 de janeiro de 2014 17:01
  • Faça Duas coisas!

    1 - no Load do Formulário ou na Propriedadades do Grid deixe assim

    DataGridView1.AllowUserToAddRows = False

    2 - Sua rotina faltou um not antes do IsNothing

    Ou seja não nullo então entra no if

    Rotina correta

    For i As Integer = 0 To DataGridView1.Rows.Count - 1
    	Dim strRua As String = String.Empty
    	If Not IsNothing(DataGridView1.Rows(i).Cells(0).Value) Then
    		Dim strNome As String = DataGridView1.Rows(i).Cells(0).Value
    		'Buscando a Posição pela palavra Rua
    		Dim posRua As Integer = IIf(Not IsNothing(strNome), strNome.IndexOf("Rua"), -1)
    		If (posRua > -1) Then
    			'Encontrar a posição da Palavra Rua ... 
    			strRua = strNome.Substring(posRua) 'Nome da Rua
    			strNome = strNome.Remove(posRua) 'Nome
    
    			DataGridView1.Rows(i).Cells(0).Value = strNome
    			DataGridView1.Rows(i).Cells(1).Value = strRua
    		End If
    	End If
    Next

    OK!


    Fulvio Cezar Canducci Dias

    domingo, 5 de janeiro de 2014 22:18
  • Obrigada fúlvio, você tem uma facilidade para resolver esses problemas.

    mas tenho 2 dúvidas

    1-Porque no Load do formulario eu tenho que deixar DataGridView1.AllowUserToAddRows=False DataGridView1.AllowUserToAddRows = False O que significa isso.


    2-O que significa literalmente o Not isNothig, fiz um curso basico de vb.net mas não ensinaram sobre esse not isNothing, quando eu posso usa-lo??


    segunda-feira, 6 de janeiro de 2014 00:27
  • Obrigada fúlvio, você tem uma facilidade para resolver esses problemas.

    mas tenho 2 dúvidas

    1-Porque no Load do formulario eu tenho que deixar DataGridView1.AllowUserToAddRows=False DataGridView1.AllowUserToAddRows = False O que significa isso.


    2-O que significa literalmente o Not isNothig, fiz um curso basico de vb.net mas não ensinaram sobre esse not isNothing, quando eu posso usa-lo??


    1 - Aquela propriedade marcada com False não deixa o Grid adicionar Linhas automáticamente eleminando algo que você no momento não precisa!

    Essa linha ele vai tirar aonde tem asterisco!

    2 -

    Not (Operador Lógico de negativa de Expressão)

    Dim i As Integer = 30
    If (i = 30) Then
    	'verdade entra no if
    	i = 50 ' entra aqui
    Else
    	i = 30
    End If
    'iniciando de novo para i = 30
    i = 30
    If Not (i = 30) Then 'inverte o valor de True para False e não entra no IF e sim no Else
    	i = 50
    Else
    	i = 10 'entra aqui
    End If

    Leitura recomendada: http://www.macoratti.net/vbn_nol1.htm

    - IsNothing (Função que verifica se o objeto está nullo e retornar True ou False) tipo: é nulo (nothing)

    Se for True é nulo e False tem valor !!!

    Leitura recomendada: http://msdn.microsoft.com/en-us/library/5adx7fxz(v=vs.90).aspx



    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Giovani Cr terça-feira, 14 de janeiro de 2014 13:14
    segunda-feira, 6 de janeiro de 2014 00:43