none
Dúvida em C# RRS feed

  • Pergunta

  • Boa noite pessoal. Estou fazendo uma consulta em meu banco, fazendo com que a consulta me retorne o número da última OS grava. A busca é feita corretamente,  O meu datagrid retorna o número da última OS Gravada, porém, no momento de fazer uma consistência em cima dessa informação me aparece o seguinte erro. Gostaria de saber de alguém, se consegue encontrar o erro?

    quinta-feira, 7 de janeiro de 2016 21:36

Respostas

  • A tua logica de programacoa esta errada. Este exemplo te vai ajudar a responder a tua pergunta:

    https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rowcount(v=vs.110).aspx


    A flower cannot blossom without sunshine, and man cannot live without love.

    • Marcado como Resposta Marcos SJ quarta-feira, 13 de janeiro de 2016 11:22
    terça-feira, 12 de janeiro de 2016 17:27
    Moderador

Todas as Respostas

  • Sera que sua grid não esta com uma linha em branco selecionada, esperimente caso sua grid esteja sempre exibindo uma linha em branco remova a mesma nas configurações allowNew ... não me lembro ao certo agora pois não estou com o VS aqui nessa maquina

    Ou você pode realizar a consistencia da seguinte forma

    if(grid[0,grid.currentrow.Index].value != null)

    {

    }

    else

    {

    }


    Junior

    quinta-feira, 7 de janeiro de 2016 22:38
  • Não deu certo.

    O retorno do meu grid é esse:

    quinta-feira, 7 de janeiro de 2016 23:18
  • Execute a aplicação em modo de debug para verificar onde está o problema.
    sexta-feira, 8 de janeiro de 2016 01:12
  • Márcio eu estou fazendo isso, porém, no momento que chega na linha o programa sai direto e apresenta o erro.

    sexta-feira, 8 de janeiro de 2016 13:09
  • dgvConsulta[0, dgvConsulta.CurrentRow.Index] está NULL. Ou dgvConsulta[0, dgvConsulta.CurrentRow.Index].Value esta NULL. Por isso você está recebendo esse erro. 

    Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985


    sexta-feira, 8 de janeiro de 2016 13:24
  • Garibaldo faça teste debugando crie variáveis atribuindo o conteúdo do dgvConsulta, por exemplo.

    var contentDgv = dgvConsulta[0, dgvConsulta.CurrentRow.Index];
    
    var contentValue = dgvConsulta[0, dgvConsulta.CurrentRow.Index].Value;
    
    Dessa forma você poderá ver se realmente tem valor nesses dois casos e partir dai para encontrar o problema!

    Espero que ajude!

    sexta-feira, 8 de janeiro de 2016 13:47
  • Léo, eu testei as duas formas, porém, deu o mesmo erro. O interessante é que eu tenho essa mesma rotina, chamando as mesmas procedures funcionando em outro programa.

    sexta-feira, 8 de janeiro de 2016 20:48
  • Qual o valor do CurrentRow.Index? Pode estar vindo -1, de uma verificada.

    Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985

    segunda-feira, 11 de janeiro de 2016 10:36
  • Bom dia, em que evento esta executando este procedimento?

    MCP - MCSD Se a Resposta foi util, por favor marque como Valida assim esta contribuindo para gratificar toda a ajuda de nossos colegas. Paulo Caleffi

    segunda-feira, 11 de janeiro de 2016 11:12
  • Eu coloco o cursor sobre o CurrentRow e vem null.

    segunda-feira, 11 de janeiro de 2016 16:07
  • Encontrou seu problema :D !!!

    Você está tentanto acessar a propriedade index de um objeto null "CurrentRow.Index".

    Agora vc tem que entender pq o CurrentRow ta null... Eu imagino que deva ser a ultima linha do datagridview...

    Para vc evitar esse erro basta colocar um IF tipo esse no inicio do seu método.

    if(dgv.CurrentRow == null)
       return;


    Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985

    segunda-feira, 11 de janeiro de 2016 16:48
  • André boa tarde. Se é assim, como eu faço para pegar a informação que está retornando no DataGrid? Se você verificar mais acima, eu mostro em meu datagrid a informação que desejo pegar.

    Eu estou mostrando tanto a rotina que eu carrego o dataGrid como eu também mostro o meu Datagrid Povoado. O Datagrid está povoado , porém, está dando o erro.

    Gari.

    segunda-feira, 11 de janeiro de 2016 16:57
  • Você quer pegar o valor da row selecionada? Em qual evento vc ta tentando fazer isso? Você pode estar usando um evento onde o DataGridView ainda não foi povoado.

    Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985

    segunda-feira, 11 de janeiro de 2016 17:05
  • André, quando eu chego nessa consulta o datagrid está povoado
                    dgvConsulta.DataSource = tbUltimaOS.PesquisaUltimaOrdemServico(nNumero_Filial, nNumeroOrdemServico);
    

    segunda-feira, 11 de janeiro de 2016 22:04
  • Não necessariamente...

    Se vc ta colocando isso em um evento especifico de renderização da tela, tipo formload, vc mudou o datasource mais muito possivelmente ele ainda nao disparou outros eventos do DGV tipo datasource change (chute...). 

    Ai quando vc está tetando pegar o current row da erro pois o DGV ainda não foi totalmente montado neste evento...

    Da uma olhada aqui sobre o ciclo de vida dos componentes https://msdn.microsoft.com/en-us/library/86faxx0d%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396


    Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985


    terça-feira, 12 de janeiro de 2016 11:30
  • A tua logica de programacoa esta errada. Este exemplo te vai ajudar a responder a tua pergunta:

    https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rowcount(v=vs.110).aspx


    A flower cannot blossom without sunshine, and man cannot live without love.

    • Marcado como Resposta Marcos SJ quarta-feira, 13 de janeiro de 2016 11:22
    terça-feira, 12 de janeiro de 2016 17:27
    Moderador
  • Sugiro que use

    if( dgvConsulta != null && !String.IsNullOrWhiteSpace(dgvConsulta[0, dgvConsulta.CurrentRow.Index].Value.ToString())){ ... }

    terça-feira, 12 de janeiro de 2016 18:51