Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ViniciusRafael

[Resolvido] Erro "DeleteCommand afetou 0 dos registros 1 espe

Recommended Posts

Olá pessoal, fiz esse mesmo post no fórum MSDN. Enfim, vamos lá!

 

Bom, estava acompanhando uma vídeo aula sobre um sistema para bibliotecas. De começo preferi usar o SQL Server e fazer o código manualmente, mas fiquei interessado em aprender a usar o Wizard do Visual Studio e acabei me dando mal. Mesmo o Wizard gerando todo o código, o sistema está com um defeito grave (que me parece ser simples de resolver, mas estou quebrando a cabeça e nada até agora). Vamos lá:

 

Quando abro o formulário de cadastro de editora consigo adicionar, excluir e salvar normalmente, mas apenas se eu não fizer nesta ordem: Adicionar, Salvar e excluir. Caso eu faça nesta ordem, ocorre uma exceção.

 

Como eu disse, usei apenas o wizard do VS, e como sou iniciante em c# ficou difícil pra resolver (dei uma olhada no DeleteCommand e não vi erro, mas já estava com dor de cabeça e pode ter passado algo).

 

Código do botão:

private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
       {
           try
           {
               if (MessageBox.Show("Deseja excluir?", "Excluir", MessageBoxButtons.YesNo) == DialogResult.Yes)
               {
                   this.Validate();
                   this.editoraBindingSource.EndEdit();
                   this.tableAdapterManager.UpdateAll(this.bDSYSTEMOTECADataSet);
                   this.editoraTableAdapter.Fill(this.bDSYSTEMOTECADataSet.Editora);
               }
               else
                   this.editoraTableAdapter.Fill(this.bDSYSTEMOTECADataSet.Editora); // Re-Preencher o DataSet.  

           }

Se eu retiro a linha

 

 this.tableAdapterManager.UpdateAll(this.bDSYSTEMOTECADataSet); 

Funciona, mas quero que ao confirmar a exclusão seja salva no BD.

 

 

Vou deixar a solução disponível para download, para assim fica mais fácil solucionar o problema.

 

Solução --> CLIQUE AQUI PARA BAIXAR (PELO SKYDRIVE)

 

Para visualizar o form Editora é só entrar na aba Cadastrar --> Editora

 

Para entrar no sistema é preciso um login e senha. Login = adm / Senha = 123

 

----------------------------------------------------

 

Esse problema está acontencendo apenas no form de cadastrar Editora. Enfim, se eu não conseguir resolver o problema até Domingo irei excluir o form e fazer novamente, será mais ágil.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, pelo wizard do VS eu não sei fazer, mas manualmente você poderia fazer assim:

 

if messagebox.show("msg")...... {

try{
String ConS = "<sua connectionString do arquivo app.config>"; //Pegue sua String no arquivo app.config no solution explorer
String SQL = "DELETE * FROM <tabela> WHERE <código> = <código que quer deletar>";
SQLConnection con = new SQLConnection(ConS);
SQLCommand com = new SQLCommand(SQL,con);

con.open();
com.executeNonQuery();
con.close();

con.dispose();
com.dispose();
}

Catch( Exception e) {
MessageBox.Show(e.Message);
}

}

 

Não aconselho ninguem, especialmente os que estão aprendendo C# a usar o Wizard do VS justamente por causa disso, você não sabe o que está acontecendo no seu programa, ou seja, você é um programador que não faz a minima ideia do que o seu programa está fazendo. Ele enche o seu programa de códigos porcos e inuteis e acaba acontecendo isso ai.

 

Quando você for programar adiciona manualmente os códigos, se quiser posso te ensinar os comandos basicos do SQL e do OleDB, mas você tem que saber direito como todos eles funcionam antes de sair deletando tabelas rsrs

 

Até!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, pelo wizard do VS eu não sei fazer, mas manualmente você poderia fazer assim:

 

if messagebox.show("msg")...... {

try{
String ConS = "<sua connectionString do arquivo app.config>"; //Pegue sua String no arquivo app.config no solution explorer
String SQL = "DELETE * FROM <tabela> WHERE <código> = <código que quer deletar>";
SQLConnection con = new SQLConnection(ConS);
SQLCommand com = new SQLCommand(SQL,con);

con.open();
com.executeNonQuery();
con.close();

con.dispose();
com.dispose();
}

Catch( Exception e) {
MessageBox.Show(e.Message);
}

}

 

Não aconselho ninguem, especialmente os que estão aprendendo C# a usar o Wizard do VS justamente por causa disso, você não sabe o que está acontecendo no seu programa, ou seja, você é um programador que não faz a minima ideia do que o seu programa está fazendo. Ele enche o seu programa de códigos porcos e inuteis e acaba acontecendo isso ai.

 

Quando você for programar adiciona manualmente os códigos, se quiser posso te ensinar os comandos basicos do SQL e do OleDB, mas você tem que saber direito como todos eles funcionam antes de sair deletando tabelas rsrs

 

Até!

Então, eu estava fazendo manualmente mesmo, criando meu objeto DataAdpater, SqlCommand, SqlConnection, etc. Mas, o cara que fez o tutorial usou o wizard, então resolvi acompanhar 100% o tutorial e não foi como eu esperava. A experiência valeu a pena, descobri na prática que o wizard realmente é muito porco... Ele conseguiu bugar meu sistema 2 de 5x, testei criando e re-criando os forms e 2 ficaram bugados do nada. Fiz uma pesquisa no DeleteCommand e UpdateCommand e nada, parece estar tudo "aceitável", mas também tem muito código que aparentemente é inútil AHUAUHAUAUAHAUAUUAUA

 

Valeu pela resposta, espero contar contigo nas próximas dúvidas AHUAHUAUAUAUUAUAUAA

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.