//buscar nombre impuesto public DataTable BuscarNombre(DImpuestos Impuesto) { DataTable DtResultado = new DataTable("tbm_impuestos"); SqlConnection SqlCon = new SqlConnection(); try { SqlCon.ConnectionString = Conexion.Cn; SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = SqlCon; SqlCmd.CommandText = "spbuscar_impuesto"; //"spbuscar_empresa"; SqlCmd.CommandType = CommandType.StoredProcedure; SqlParameter ParTextobuscar = new SqlParameter(); ParTextobuscar.ParameterName = "@textobuscar"; ParTextobuscar.SqlDbType = SqlDbType.VarChar; ParTextobuscar.Size = (50); ParTextobuscar.Value = Impuesto.TextoBuscar; SqlCmd.Parameters.Add(ParTextobuscar); SqlDataAdapter SqlDat = new SqlDataAdapter(SqlCmd); SqlDat.Fill(DtResultado); } catch (Exception ex) { DtResultado = null; } return (DtResultado); }
//lo vamos a llamar con una funcion //metodo insertar, este va a llamar al metodo insertar de la capa datos dimpuestos public static string Insertar(int codigoempresa, string descripcion, int valorimpuesto) { DImpuestos Obj = new DImpuestos(); Obj.Codigoempresa = codigoempresa; Obj.Descripcion = descripcion; Obj.Valorimpuesto = valorimpuesto; return Obj.Insertar(Obj); }
//------------------- METODO BAJAS/ELIMINAR ----------------------------------------------------------------- public string Eliminar(DImpuestos TiposIva) { string rpta = ""; SqlConnection SqlCon = new SqlConnection(); try { //Código SqlCon.ConnectionString = Conexion.Cn; SqlCon.Open(); //Establecer el Comando SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = SqlCon; //-->DELETE con parametrización, esta si va bien, se indica el tipo de cada campo como en el PRC SqlCmd.CommandText = $"delete from TiposIva where idTipoIva = @IdTipoIva"; SqlParameter paridTipoIva = SqlCmd.Parameters.Add("@IdTipoIva", SqlDbType.Int); paridTipoIva.Value = IdTipoIva; //Ejecutamos nuestro comando, es decir estamos llamando al procedimiento almacenado para que se ejecute rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Elimino el Registro"; } catch (Exception ex) { rpta = ex.Message; } finally { if (SqlCon.State == ConnectionState.Open) { SqlCon.Close(); } } return(rpta); }
//lo vamos a llamar con una funcion //metodo eliminar, este va a llamar al metodo eliminar de la capa datos DEmpresas public static string Eliminar(int codigoimpuesto) { DImpuestos Obj = new DImpuestos(); Obj.Codigoimpuesto = codigoimpuesto; return Obj.Eliminar(Obj); }
//lo vamos a llamar con una funcion //metodo buscarempresa, este va a llamar al metodo buscarempresa de la capa datos DEmpresas public static DataTable BuscarNombre(string textobuscar) { DImpuestos Obj = new DImpuestos(); Obj.TextoBuscar = textobuscar; return Obj.BuscarNombre(Obj); }
//metodos //metodo insertar public string Insertar(DImpuestos Impuesto) { string respuesta = ""; SqlConnection SqlCon = new SqlConnection(); try { //codigo SqlCon.ConnectionString = Conexion.Cn; SqlCon.Open(); //establecer el comando para ejecutar sentencias en sql SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = SqlCon; SqlCmd.CommandText = "spinsertar_impuesto"; SqlCmd.CommandType = CommandType.StoredProcedure; //mandar a llamar a primer campo de la tabla SqlParameter ParCodigoempresa = new SqlParameter(); ParCodigoempresa.ParameterName = "@codigo_empresa"; ParCodigoempresa.SqlDbType = SqlDbType.VarChar; ParCodigoempresa.Value = Impuesto.Codigoempresa; SqlCmd.Parameters.Add(ParCodigoempresa); SqlParameter ParCodigoimpuesto = new SqlParameter(); ParCodigoimpuesto.ParameterName = "@codigo_impuesto"; ParCodigoimpuesto.SqlDbType = SqlDbType.Int; ParCodigoimpuesto.Direction = ParameterDirection.Output; SqlCmd.Parameters.Add(ParCodigoimpuesto); SqlParameter ParDescripcion = new SqlParameter(); ParDescripcion.ParameterName = "@descripcion"; ParDescripcion.SqlDbType = SqlDbType.VarChar; ParDescripcion.Size = 200; ParDescripcion.Value = Impuesto.Descripcion; SqlCmd.Parameters.Add(ParDescripcion); SqlParameter ParValorimpuesto = new SqlParameter(); ParValorimpuesto.ParameterName = "@valor_impuesto"; ParValorimpuesto.SqlDbType = SqlDbType.VarChar; ParValorimpuesto.Value = Impuesto.Valorimpuesto; SqlCmd.Parameters.Add(ParValorimpuesto); //ejecutamos nuestro comando respuesta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "No se ingreso el registro."; } catch (Exception ex) { respuesta = ex.Message; } finally { if (SqlCon.State == ConnectionState.Open) SqlCon.Close(); } return respuesta; }
//metodo eliminar public string Eliminar(DImpuestos Impuesto) { string respuesta = ""; SqlConnection SqlCon = new SqlConnection(); try { //codigo SqlCon.ConnectionString = Conexion.Cn; SqlCon.Open(); //establecer el comando para ejecutar sentencias en sql SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = SqlCon; SqlCmd.CommandText = "speliminar_impuesto"; SqlCmd.CommandType = CommandType.StoredProcedure; //mandar a llamar a primer campo de la tabla SqlParameter ParCodigoimpuesto = new SqlParameter(); ParCodigoimpuesto.ParameterName = "@codigo_impuesto"; ParCodigoimpuesto.SqlDbType = SqlDbType.Int; ParCodigoimpuesto.Value = Impuesto.Codigoimpuesto; SqlCmd.Parameters.Add(ParCodigoimpuesto); //ejecutamos nuestro comando respuesta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "No se elimino el registro."; } catch (Exception ex) { respuesta = ex.Message; } finally { if (SqlCon.State == ConnectionState.Open) SqlCon.Close(); } return respuesta; }
//------------------- METODO ALTAS ------------------------------------------------------------------ /* * En los parametros que vamos a recibir en este método lo hacemos es * instanciar la clase, de esta forma nos evitamos tener que estar poniendo campo a campo * de los que se tengan que tener en cuenta, en este ejemplo son pocos campos pero si fueramos a tratar tabla * donde hubiera muchos campos es un puto coñazo */ public string Insertar(DImpuestos TiposIva) { string rpta = ""; //--> rpta - Variable para saber el valor de retorno SqlConnection SqlCon = new SqlConnection(); //--> SqlCon - Variable de tipo Conexión SQL try //--->Control de Errores { //--> Le digo a ConnectionString cual es nuestra conexión que tengo en la clase Conexión y en la variable Cn SqlCon.ConnectionString = Conexion.Cn; SqlCon.Open(); //--> Abrimos la conexión SqlCommand SqlCmd = new SqlCommand(); //--> SqlCmd será la variable de la clase SqlCommand para poder utilizar los comandos de SQL SqlCmd.Connection = SqlCon; //--> Le pasamos la conexión. //-----------------------CODIGO PARA PROCEDIMIENTOS ALMACENADOS------------------------ //SqlCmd.CommandText = "spInsertar_familia"; //--> Le decimos el nombre del Procedimiento a ejecutar //SqlCmd.CommandType = CommandType.StoredProcedure; //--> Le decimos que el tipo de comando es un PRC //-----------------------CODIGO PARA TEXTO es el tipo que está por defecto ------------------------ /* * - En este caso vamos a utilizar una linea con las instrucciones a ejecutar * - El $ es interpolación de cadenas, necesario, tengo mucho caracter especial. * - NombreTabla Values ( valores a grabar en el mismo orden que tengan los campos en la tabla) * - Para que no de fallo ya que los campos Identity no se deben de enviar * indicaremos el nombre de la tabla y entre paréntesis el nombre de los campos. * * - Si los valores de los porcentajes van con la coma decimal da error de conversion de Varchar a Numeric * los valores de NPorcIva y NPorReq son correctos, son númericos, pero la coma no la reconoce bien * * Utilizando la opción del procedimiento almacenado no da ese problema... * los valores que llegan son correctos, son decimal * * Con esta cadena de inserción no había forma, daba error de conversion de VarChar a Decimal ... * SqlCmd.CommandText = $"insert into TiposIva( cDetIva, nPorcIva, nPorReq ) values ( '{this.CDetIva}' , {this.NPorcIva}, {this.NPorReq} )"; * */ //-->INSERT con parametrización, esta si va bien, se indica el tipo de cada campo como en el PRC SqlCmd.CommandText = $"insert into TiposIva( cDetIva, nPorcIva, nPorReq ) values ( @CDetIva , @NPorcIva, @NPorReq )"; SqlParameter parcDetIva = SqlCmd.Parameters.Add("@CDetIva", SqlDbType.VarChar); SqlParameter parNPorcIva = SqlCmd.Parameters.Add("@NPorcIva", SqlDbType.Decimal); SqlParameter parNPorReq = SqlCmd.Parameters.Add("@NPorReq", SqlDbType.Decimal); parcDetIva.Value = CDetIva; parNPorcIva.Value = NPorcIva; parNPorReq.Value = NPorReq; //--> ExecuteNonQuery nos devolverá el número de filas(registros) afectados, rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Ingreso el Registro"; } catch (Exception ex) { rpta = ex.Message; //-->Mostramos el mensaje. } finally //--> El finally se ejecuta siempre // tanto si hay error como si no lo hay, así que cerramos la conexión que chupa mucha memoria. { if (SqlCon.State == ConnectionState.Open) { SqlCon.Close(); } } return(rpta); }