Inquiridor
UPDATE no MySQL pelo DataGrindView C#

Pergunta
-
Estou com um problema eu não consigo da um UPDATE na quantidade após ela ser salva eu tenho que fazer uma comparação com o numero do Código de barras do produto.
Ele pega os valores tudo certinho mais da um erro !
Esse é o código que eu estou usando
private void AtualizarQuantidade() { try { string SQL = "UPDATE produtos SET produtos_QtdeTotal = '" + TxtQuantidadeAtual.Text.Trim() + "'" + " WHERE produtos_CodigoBarras = '" + DgCaixa.SelectedRows[0].Cells[0].Value.ToString() + "'"; if (ClasseBanco.ExecutaUpdate(SQL) == true) { } } catch (Exception erro) { MessageBox.Show(ClasseErro.Erro(erro.ToString()), "ERRO INTERNO", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
o Erro é este:
O índice estava fora do intervalo. Ele deve ser não-negativo e menor que o tamanho da coleção.
Nome do parâmetro: index
Todas as Respostas
-
O erro acontece em qual linha?
Acredito que seja aqui:
DgCaixa.SelectedRows[0].Cells[0].Value.ToString()
Esse erro dá quando você tenta selecionar um item de uma coleção que ele não existe, talvez não tenha nenhuma linha selecionada em "DgCaixa" e você esteja tentando acessar "SelectedRow[0]", o que origina o erro, veja se não é isso.
Abraços!
Thiago Coelho - Líder das Comunidades .NET Coders e Windows 8 Brasil
thiagocoelho.net | @thiagokoelho -
Só que ele pega o valor entende? so da erro ao inserir no banco de dados
- Editado Kennedy Alvino quinta-feira, 27 de dezembro de 2012 19:01
-
1. Como está escrito esse método?
ClasseBanco.ExecutaUpdate(SQL)
2. Faz um debug e cola aqui o valor da variável "SQL" ao executar esse método.
Abraços!
Thiago Coelho - Líder das Comunidades .NET Coders e Windows 8 Brasil
thiagocoelho.net | @thiagokoelho -
-
OK, mas comoe stá o método ExecutaUpdate?
Thiago Coelho - Líder das Comunidades .NET Coders e Windows 8 Brasil
thiagocoelho.net | @thiagokoelho -
Então... Ele dá o erro porque não tem linha no DataGrid e vc está selecionando a linha [0] direto, sem validar o SelectedIndex do DataGrid.
Coloca uma validação para fazer a execução dos comandos somente se o SelectedIndex do DataGrid for Maior que -1, assim:
if(DgCaixa.SeletedIndex > -1) { //seu código aqui... }
-
O Metodo ExecutaUpdate ta certo eu uso ele em todos os outros forms mais é que na primeira não está pegando o valor entende? e por que o dataGrindView esta vazio
ai o apos uma linha já esta inserida ele me da esse resultado se eu executo isso no MySQL Funciona normal!
"UPDATE produtos SET produtos_QtdeTotal = '9927' WHERE produtos_CodigoBarras = '7897975023133'"
-