Array
(
)

Método para Deletar não funciona

Dotnet
   - 17 jul 2008

Bom dia,

Estou desenvolvendo um projeto em camadas e o método para deletar não funciona, já testei a procedure e funcionou normalmente, não entendo porque no gridview..ele não funciona, segue código da Classe

public void delete(int ID_Modulo)
{
SqlConnection con = new SqlConnection(ConStr);
string SQL = ´DeleteModulo´; //´delete Modulo where ID_Modulo=@ID_Modulo´;
SqlCommand cmd = new SqlCommand(SQL,con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue(´@ID_Modulo´,ID_Modulo);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}

obrigada

Ricardo Silva
   - 17 jul 2008

mas da algum erro????

qual???

Dotnet
   - 18 jul 2008

Olá Ricardo,

Não apresenta nenhum erro, simplesmente não deleta. O que poderia ser?
Peguei o código feito pelo Guinther, para testar e tb não funcionou, dá a impressão de que é alguma coisa no Gridview...

se souber qual é o erro por favor me avise

obrigada

Ricardo Silva
   - 18 jul 2008

entaum... os comando SQL esta correto...
o que pode estar acontecendo é a passagem de parametro...

ou seja, se vc passar o ID_modulo = 0, ele vai deletar o modulo de codigo 0 esse comando executa sem erros, porem não afeta nehuma linha pois não existe este modulo.

tenta debugar e ver qual realmente o codigo do ID_Modulo

na duvida soh posta

Dotnet
   - 18 jul 2008

Olá Ricardo

Eu debuguei a aplicação e realmente ID_Modulo = 0, mas como faço pra resolver isso, já que estou usando um gridiview???

obrigada

Ricardo Silva
   - 18 jul 2008

como vc esta chamando a função delete();

se tiver em um clique do botão:
#Código

private void btnExcluir_Click(object sender, EventArgs e) {
   if(grid.CurrentRow != null) {
      if(MessageBox.Show("Deseja realmente excluir este registro?", "Atenção", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes){
      int codigo = (int)grid.CurrentRow.Cells["colCodigo"].Value;
      delete(codigo);   
    }
  } else {
      MessageBox.Show("Selecione um registro", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information);
  }  
}


na duvida soh posta

Dotnet
   - 18 jul 2008

Na verdade eu estou usando um gridiview onde habilitei a opção para deletar através da smartTag. Como eu poderia resolver nesse caso???

Donatopaschoa
   - 20 jul 2008

Boa tarde´DOTNET´:

Pelo que entendi não há problema na sua aplicação Web pois qdo vc executa a Store Procedurediretamente no SQL há o retorno esperado.

Acredito que o problema esteja localizado no servidor SQL, ou seja, faltou vc ceder direitos de execução na Store Procedure p/ o usuário da sua aplicação Web.

P/ testar se o erro acima se enquadre, basta vc se logar ao SQL c/ o usuário e a senha ref. a string de conexão da sua aplicação Web e tentar executar a Store Procedure. Desta forma, além de vc testar em ´modo real´, a mensagem de erro da Store Procedure estará detalhando o tipo de erro (pode ser que seja falta de direitos ref. deletar a tabela relacionada além da execução da Store Procedure).

Espero ter contribuído.

Abçs

Citação:
Bom dia,

Estou desenvolvendo um projeto em camadas e o método para deletar não funciona, já testei a procedure e funcionou normalmente, não entendo porque no gridview..ele não funciona, segue código da Classe

public void delete(int ID_Modulo)
{
SqlConnection con = new SqlConnection(ConStr);
string SQL = ´DeleteModulo´; //´delete Modulo where ID_Modulo=@ID_Modulo´;
SqlCommand cmd = new SqlCommand(SQL,con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue(´@ID_Modulo´,ID_Modulo);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}

obrigada