private void btnConsultar_Click(object sender, EventArgs e) { // las condiciones de los filtros se puede pasar a traves de una coleccion de claves y valores (Dictionary) // o bien a través de una cadena de condiciones String sqlcondiciones; sqlcondiciones = ""; // Dictionary: Representa una colección de claves y valores. Dictionary <string, object> parametros = new Dictionary <string, object>(); DateTime fechaDesde; DateTime fechaHasta; if (DateTime.TryParse(txtFechaDesde.Text, out fechaDesde) && DateTime.TryParse(txtFechaHasta.Text, out fechaHasta)) { string desdeSinHora = (string)fechaDesde.ToShortDateString(); string hastaSinHora = (string)fechaHasta.ToShortDateString(); //convertir string a fecha en sqlserver: https://www.w3schools.com/sql/func_sqlserver_convert.asp //CONVERT(datetime,"02/02/2019",103) converte el string "02/02/2019" a fechahora (asi esta en la bd) y 103 indica que considera la fecha como dd/mm/aaaa sqlcondiciones += " AND (bug.fecha_alta>=" + "Convert(DateTime," + "'" + desdeSinHora + "'" + ",103)" + " AND bug.fecha_alta<=" + "Convert(DateTime," + "'" + hastaSinHora + "'" + ",103)" + ") "; parametros.Add("fechaDesde", txtFechaDesde.Text); parametros.Add("fechaHasta", txtFechaHasta.Text); } if (!string.IsNullOrEmpty(cboEstados.Text)) { var idEstado = cboEstados.SelectedValue.ToString(); sqlcondiciones += " AND (bug.id_estado=" + idEstado + ") "; parametros.Add("idEstado", idEstado); } if (!string.IsNullOrEmpty(cboAsignadoA.Text)) { var asignadoA = cboAsignadoA.SelectedValue.ToString(); sqlcondiciones += " AND (bug.id_usuario_asignado=" + asignadoA + ") "; parametros.Add("idUsuarioAsignado", asignadoA); } if (!string.IsNullOrEmpty(cboPrioridades.Text)) { var prioridad = cboPrioridades.SelectedValue.ToString(); sqlcondiciones += " AND (bug.id_prioridad=" + prioridad + ") "; parametros.Add("idPrioridad", prioridad); } if (!string.IsNullOrEmpty(cboCriticidades.Text)) { var criticidad = cboCriticidades.SelectedValue.ToString(); sqlcondiciones += " AND (bug.id_criticidad=" + criticidad + ") "; parametros.Add("idCriticidad", criticidad); } if (!string.IsNullOrEmpty(cboProductos.Text)) { var producto = cboProductos.SelectedValue.ToString(); sqlcondiciones += " AND (bug.id_producto=" + producto + ") "; parametros.Add("idProducto", producto); } //usando parametros // IList<Bug> listadoBugs = bugService.ConsultarBugsConFiltros(parametros); //sin usar parametros (concatenando condiciones) IList <Bug> listadoBugs = bugService.ConsultarBugsConFiltrosCondiciones(sqlcondiciones); //Asigno a la grilla la lista de objetos bug dgvBugs.DataSource = listadoBugs; if (dgvBugs.Rows.Count == 0) { MessageBox.Show("No se encontraron coincidencias para el/los filtros ingresados", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information); } }