VALIDAR DATAGRID

JOHNSTEVE 18/10/2016 11:36:29
#468168
Bom dia colegas, estou tentando fazer uma validação segura para meus clientes. pq uns estavam tentando problema pq eu nao validei esse botao Gerar novo MDF-e.
funciona assim. se eu estiver um MDF-e Autorizado, eu nao posso gerar um novo MDF-e. a menos que eu Encerrer o MDF-e q esta autorizado.

dai eu nao fiz a validacao no botao e tava passando para gerar o novo MDFe. dai o cliente tava perdendo tempo em preencher o formulario pq qnd gera o XML q vem o retorno da SEFAZ meu sistema avisa. q nao poderar emitir pq consta na base de dados da SEFAZ um MDF-e Autorizado..

entao eu pensei fazer o seguinte.. mais nao esta dando certo.. eu queria barrar no botao Novo.. se constar um MDF-e Autorizado. queria barrar para ele encerrar primeiro e depois gerar um novo MDF-e .

vejam.

   Private Sub btnNovoMDFe_Click(sender As Object, e As EventArgs) Handles btnNovoMDFe.Click
If dgvGerenciamento_CTe.CurrentRow().Cells(9).Value = [Ô]Autorizado[Ô] Then
MsgBox([Ô]Alerta! Existe MDf-e Autorizado, Verificar se houve encerramento do manifesto.[Ô], MsgBoxStyle.Information, [Ô][Ô])

Else
txtMensagem.Text = [Ô][Ô]
MDFe.ShowDialog()
End If
End Sub


eu fiz assim mais ainda continua passando para o form MDFe.showdialog. ..
eu tava pesquisando em fazer um For. mais nao achei exemplo... pq nessa coluna [Ô]9[Ô] eu tenho todos os MDFe... veja no print
NILSONTRES 18/10/2016 12:27:43
#468170
tenta assim.
If dgvGerenciamento_CTe.Rows(e.rowindex).Cells(9).Value = [Ô]Autorizado[Ô] Then

CurrentRow é se utilizar o evento keydow(teclado).
--------------------------------------------------
Olha, nunca utilize numero de index para colunas.
Entendo o seu caso, eu mesmo só depois de sofrer para cair a ficha, o problema é a manutenção, imagine que vc precise adicionar mais uma coluna nesse grid. nesse caso se ela for incluída antes da 9, seu código já teria que ser alterado para a 10, certo ?
Ai que acontece um monte de erros no futuro, vc acaba esquecendo de fazer essa alteração.
Então vincule sua coluna assim:
De um nome para ela, depois faça assim.
ex:If dgvGerenciamento_CTe.Rows(e.rowindex).Cells(nomedacoluna.name).Value = [Ô]Autorizado[Ô] Then
Dessa forma mesmo que vc insira outras colunas não precisara alterar mais nada.
Obs: até hoje nunca vi ninguém fazer assim como eu faço, mas essa é a melhor opção.
JOHNSTEVE 18/10/2016 12:56:32
#468172
Citação:

:
tenta assim.
If dgvGerenciamento_CTe.Rows(e.rowindex).Cells(9).Value = [Ô]Autorizado[Ô] Then

CurrentRow é se utilizar o evento keydow(teclado).
--------------------------------------------------
Olha, nunca utilize numero de index para colunas.
Entendo o seu caso, eu mesmo só depois de sofrer para cair a ficha, o problema é a manutenção, imagine que vc precise adicionar mais uma coluna nesse grid. nesse caso se ela for incluída antes da 9, seu código já teria que ser alterado para a 10, certo ?
Ai que acontece um monte de erros no futuro, vc acaba esquecendo de fazer essa alteração.
Então vincule sua coluna assim:
De um nome para ela, depois faça assim.
ex:If dgvGerenciamento_CTe.Rows(e.rowindex).Cells(nomedacoluna.name).Value = [Ô]Autorizado[Ô] Then
Dessa forma mesmo que vc insira outras colunas não precisara alterar mais nada.
Obs: até hoje nunca vi ninguém fazer assim como eu faço, mas essa é a melhor opção.



vc tem razão nilson, as vezes qnd estou com pouco serviço eu faço assim mesmo.. eu pego o nome da coluna do grid.. e passo no codigo [Ô]id[Ô] [Ô]qualquer nome[Ô].. eu fiz assim (9) pq tava meio com pressa .. kkkkk mais entendo oq vc falou show de bola. tem q ficar muito atento pois esses pequenos detalhe são os piores.. kkkk

JOHNSTEVE 18/10/2016 13:05:13
#468173
Nilson, mais oq eu preciso ainda.. seria um Loop desse grid.
pois. nesse grid apenas 1 vai esta AUTORIZADO.. os demais vao estao CANCELADO OU ENCERRADO.

dai no botao eu queria chamar essa função .. fazendo uma leitura no grid. e ver. se encontra algum MDFe- AUTORIZADO.. se encontrar barra para que o cliente faça o ENCERRAMENTO.

NILSONTRES 18/10/2016 13:36:16
#468177
dim i as integer
for i = 0 to dgvGerenciamento_CTe.Rows.count-1
If dgvGerenciamento_CTe.Rows(i).Cells(9).Value = [Ô]Autorizado[Ô] Then

end if
next
KILLER 18/10/2016 13:48:18
#468178
Resposta escolhida
Primeiro de tudo NILSONTRES faço exatamente igual o seu exemplo, depois de quebrar a cabeça várias vezes com esse index de colunas.
O código que o NILSONTRES passou por último deve funcionar perfeitamente, mas seu cliente pode enviar mais de um MDF-e antes de encerrar o último,
O que ele não pode fazer é enviar outro MDF-e para a mesma placa.
JOHNSTEVE 18/10/2016 20:09:37
#468186
Citação:

:
Primeiro de tudo NILSONTRES faço exatamente igual o seu exemplo, depois de quebrar a cabeça várias vezes com esse index de colunas.
O código que o NILSONTRES passou por último deve funcionar perfeitamente, mas seu cliente pode enviar mais de um MDF-e antes de encerrar o último,
O que ele não pode fazer é enviar outro MDF-e para a mesma placa.



Opa boa ideia KILLER, eu andei olhando o manual direito e vi essas parte q vc falou.
independente de veiculo a empresa tenha..
1,2,3,4,5.......
se o veiculo 1. nao tiver concluido o percurso a entrega.. ele nao poderar emitir um novo MDFe. so pode emitir qnd conclui a entrega. q dai vai ter q ENCERRAR o MDFe.
da a empresa pode emiti 5 10, 15 MDFe. contando q seja de acordo com a quantidade de veiculo tiver.

entao KILLER, eu ia me ferrar kkkk ia fazer uma logica q nao tinha nada haver .. kkkkk vlw ai pela dica.
Tópico encerrado , respostas não são mais permitidas