none
Sintaxe de Update Banco access (mdb) RRS feed

  • Pergunta

  • Pessoal boa tarde, tenho um sisteminha que utiliza o Access, e de repente uma rotina parou de funcionar, já procurei na sitaxe mas não achei o erro.... Eu rodo o update de um registro, mas simplesmente não dá erro e nem atualiza.....

    Podem me ajudar? Segue código

    OleDbConnection dbConn = new OleDbConnection( Conexao );
                try
                {
                    OleDbCommand dbCommand = new OleDbCommand();
    
                    dbCommand.CommandText = "UPDATE Clientes SET ID_CLI =?, Cliente = ?, ATIVO = ? WHERE ID_CLI = ?";
    
    
                    dbCommand.Parameters.AddWithValue( "ID_CLI" , codigo );
                    dbCommand.Parameters.AddWithValue( "Cliente" , cliente );
                    dbCommand.Parameters.AddWithValue( "ATIVO" , ativo == "True" ? "S" : "N" );
                    dbCommand.Parameters.AddWithValue( "ID_ANTIGO" , codigoAntigo );
    
                    dbCommand.CommandType = CommandType.Text;
                    dbCommand.Connection = dbConn;
    
    
                    dbConn.Open();
                    dbCommand.ExecuteNonQuery();
                    dbConn.Close();
    
                    return true;
                }
                catch ( Exception )
                {
                    throw;
                }
                finally
                {
                    dbConn.Close();
                }

    quinta-feira, 31 de outubro de 2013 15:48

Todas as Respostas

  • Você deve declarar os parâmetros na ordem que vai utilizar.
    Na sua query você está utilizando duas vezes o ID_CLI e nenhuma vez o ID_ANTIGO.

    dbCommand.CommandText = "UPDATE Clientes SET ID_ANTIGO = @ID_ANTIGO, Cliente = @Cliente, ATIVO = @ATIVO WHERE ID_CLI = @ID_CLI";
    //dbCommand.CommandText = "UPDATE Clientes SET ID_CLI =@ID_CLI, Cliente = @Cliente, ATIVO = @ATIVO WHERE ID_ANTIGO = @ID_ANTIGO";
    dbCommand.Parameters.AddWithValue( "@ID_CLI" , codigo );
    dbCommand.Parameters.AddWithValue( "@Cliente" , cliente );
    dbCommand.Parameters.AddWithValue( "@ATIVO" , ativo == "True" ? "S" : "N" );
    dbCommand.Parameters.AddWithValue( "@ID_ANTIGO" , codigoAntigo );

    segunda-feira, 18 de novembro de 2013 23:33
  • SUA SQL UPDATE ta errada!

    UPDATE Clientes SET Cliente = ?, ATIVO = ? WHERE ID_CLI = ?

    Acredito que o ID_CLI é a chave da sua tabela então não atualize ela só use como filtro ...

    OleDbConnection dbConn = new OleDbConnection( Conexao );
    try
    {
    	OleDbCommand dbCommand = new OleDbCommand();
    
    	dbCommand.CommandText = "UPDATE Clientes SET Cliente = ?, ATIVO = ? WHERE ID_CLI = ?";
    	
    	dbCommand.Parameters.AddWithValue( "Cliente" , cliente );
    	dbCommand.Parameters.AddWithValue( "ATIVO" , ativo == "True" ? "S" : "N" );
    	dbCommand.Parameters.AddWithValue( "ID_CLI" , codigoAntigo );
    
    	dbCommand.CommandType = CommandType.Text;
    	dbCommand.Connection = dbConn;
    
    
    	dbConn.Open();
    	dbCommand.ExecuteNonQuery();
    	dbConn.Close();
    
    	return true;
    }
    catch ( Exception )
    {
    	throw;
    }
    finally
    {
    	dbConn.Close();
    }

    Eu acredito que seja! Chave! agora se pode me dizer???


    Fulvio Cezar Canducci Dias

    terça-feira, 19 de novembro de 2013 03:22