Reader en Null resultado de consulta sql
Publicado por Hector Aguilar (1 intervención) el 09/08/2021 18:34:03
Buenos dias he tenido este problema con un reader es una app que conecta varias veces a la base de datos
declaro el reader como null aqui no deberia a ver problema
OdbcDataReader reader2 = null;
odbcCommand.CommandText = String.Format("select * from CAST(SUBSTRING(now(),9,2) AS INT);");
odbcCommand.Connection = conn1;
reader1 = odbcCommand.ExecuteReader();
if (reader1.HasRows)
{
DirectivosCasos = reader1.GetString(0).ToString();
EntradaFecha = Convert.ToInt32(DirectivosCasos);
if (EntradaFecha > 15)
{
reader1.Close();
dEmpleados.Clear();
odbcCommand.CommandText = String.Format("select a.numemp,importe from nomcatalogoempleados a inner join stmpprepanet b on a.numemp= b.numemp where a.numemp in (select b.numemp from stmpprepanet) and tiponomina= '3';"); //Ejecuto este query cuando el if anterior se cumpla
odbcCommand.Connection = conn1;
reader2 = odbcCommand.ExecuteReader();
//string directivo = "Directivo";
//Se empieza a llenar Diccionario y asigna sEmpleados lo que contiene el reader2
if (reader2.HasRows) // pregunto si tiene informacion el reader sobre la consulta
{
if (dgvEmpleadosSinCargos.Visible == false)
{
lblDescripcionGrib.Visible = Visible;
dgvEmpleadosSinCargos.Visible = Visible;
}
dgvEmpleadosSinCargos.Rows.Add("*******************", "********************");
dgvEmpleadosSinCargos.Rows.Add("Directivos", "Importe");
while (reader2.Read())
{
dEmpleados.Add(int.Parse(reader2.GetString(0).ToString()), reader2.GetString(1));
}
reader2.Close(); //aqui cierro el reader2 pero este es el camino bueno cuando se llena el reader , no siempre va a tener informacion ya que un mes puede traer empleados o puede que no
foreach (KeyValuePair<int, string> p in dEmpleados) //lleno un datagrid la aplicacion es muy vieja cuando iniciaba como programador.
{
if (p.Value != " ")
{
//dgvEmpleadosSinCargos.Text += p.Key + p.Value;
dgvEmpleadosSinCargos.Rows.Add(p.Key, p.Value);
}
else
{
// // //dgvEmpleadosSinCargos.Text += p.Key + fechabaja;
dgvEmpleadosSinCargos.Rows.Add(p.Key, "no se por que salio ");
}
}
//foreach(KeyValuePair<int , string> items in dEmpleados){
//dgvEmpleadosSinCargos.Rows.Add(items.Key,items.Value);
//}
}
reader2.Close(); //aqui truena por que aveces no trae informacion y se ejecuto despues del dia 15 del mes
}
}
el programa sigue pero abajo vuelvo a ejecutar otro reader para otra informacion,
Si alguien sabe de algun parcheo sobre una consulta sql favor de ayudar
declaro el reader como null aqui no deberia a ver problema
OdbcDataReader reader2 = null;
odbcCommand.CommandText = String.Format("select * from CAST(SUBSTRING(now(),9,2) AS INT);");
odbcCommand.Connection = conn1;
reader1 = odbcCommand.ExecuteReader();
if (reader1.HasRows)
{
DirectivosCasos = reader1.GetString(0).ToString();
EntradaFecha = Convert.ToInt32(DirectivosCasos);
if (EntradaFecha > 15)
{
reader1.Close();
dEmpleados.Clear();
odbcCommand.CommandText = String.Format("select a.numemp,importe from nomcatalogoempleados a inner join stmpprepanet b on a.numemp= b.numemp where a.numemp in (select b.numemp from stmpprepanet) and tiponomina= '3';"); //Ejecuto este query cuando el if anterior se cumpla
odbcCommand.Connection = conn1;
reader2 = odbcCommand.ExecuteReader();
//string directivo = "Directivo";
//Se empieza a llenar Diccionario y asigna sEmpleados lo que contiene el reader2
if (reader2.HasRows) // pregunto si tiene informacion el reader sobre la consulta
{
if (dgvEmpleadosSinCargos.Visible == false)
{
lblDescripcionGrib.Visible = Visible;
dgvEmpleadosSinCargos.Visible = Visible;
}
dgvEmpleadosSinCargos.Rows.Add("*******************", "********************");
dgvEmpleadosSinCargos.Rows.Add("Directivos", "Importe");
while (reader2.Read())
{
dEmpleados.Add(int.Parse(reader2.GetString(0).ToString()), reader2.GetString(1));
}
reader2.Close(); //aqui cierro el reader2 pero este es el camino bueno cuando se llena el reader , no siempre va a tener informacion ya que un mes puede traer empleados o puede que no
foreach (KeyValuePair<int, string> p in dEmpleados) //lleno un datagrid la aplicacion es muy vieja cuando iniciaba como programador.
{
if (p.Value != " ")
{
//dgvEmpleadosSinCargos.Text += p.Key + p.Value;
dgvEmpleadosSinCargos.Rows.Add(p.Key, p.Value);
}
else
{
// // //dgvEmpleadosSinCargos.Text += p.Key + fechabaja;
dgvEmpleadosSinCargos.Rows.Add(p.Key, "no se por que salio ");
}
}
//foreach(KeyValuePair<int , string> items in dEmpleados){
//dgvEmpleadosSinCargos.Rows.Add(items.Key,items.Value);
//}
}
reader2.Close(); //aqui truena por que aveces no trae informacion y se ejecuto despues del dia 15 del mes
}
}
el programa sigue pero abajo vuelvo a ejecutar otro reader para otra informacion,
Si alguien sabe de algun parcheo sobre una consulta sql favor de ayudar
Valora esta pregunta


0