• Jueves 28 de Marzo de 2024, 14:19

Autor Tema:  Conexion caduca en C#  (Leído 2110 veces)

lkdragon

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Conexion caduca en C#
« en: Martes 20 de Diciembre de 2011, 18:08 »
0
Buenos dias.
Soy nuevo en c# y pues estoy haciedo una aplicacion que lee facturas, bueno la cosa esta asi, leeo de una tabla los datos de mi factura pero de un form, y lo paso a otro form, y lo que pasa es que al leer me tira un mensaje de que la conexion esta cerrada, pero en ningun momento la he cerrado, aqui le dejo el codigo para que vean, muchas gracias por su atencion.

es el codigo de la lectura
conexion = new SqlConnection();
            conexion.ConnectionString = ConfigurationManager.ConnectionStrings["Fletera"].ConnectionString;
            conexion.Open();
            query = new SqlCommand();
            query.Connection = conexion;
            query.CommandText = "SELECT * FROM factura WHERE folio = '" + id + "'";
            lectura = query.ExecuteReader();
            if (lectura.Read())
            {
                txtf1.Text = lectura.GetString(0);
                txtf2.Text = lectura.GetDateTime(1).ToShortDateString();
                or = lectura.GetInt32(2);
                de = lectura.GetInt32(3);
                rfcor = lectura.GetString(4);
                rfcde = lectura.GetString(5);
                txtf9.Text = lectura.GetString(6);
                txtf10.Text = lectura.GetString(7);
                txtf11.Text = lectura.GetString(8);
                txtf12.Text = lectura.GetDecimal(9).ToString();
                txtf13.Text = lectura.GetDecimal(10).ToString();
                txtf14.Text = lectura.GetDecimal(11).ToString();
                txtf15.Text = lectura.GetDecimal(12).ToString();
                txtf16.Text = lectura.GetDecimal(13).ToString();
                txtotros.Text = lectura.GetDecimal(14).ToString();
                txtf17.Text = lectura.GetDecimal(15).ToString();
                txtf18.Text = lectura.GetDecimal(16).ToString();
                txtf19.Text = lectura.GetDecimal(17).ToString();
                txtf20.Text = lectura.GetDecimal(18).ToString();
                txtf21.Text = lectura.GetString(20);
                txtf22.Text = lectura.GetString(19);
                cmbf3.Text = lectura.GetInt32(21).ToString();
            }
            lectura.Close();
           
            query.CommandText = "SELECT estado FROM estados WHERE idestado = " + or + "";
            lectura = query.ExecuteReader();
            if (lectura.Read())
            {
                cmbf1.Text = lectura.GetString(0);
            }
            lectura.Close();
           
            query.CommandText = "SELECT estado FROM estados WHERE idestado = " + de + "";
            lectura = query.ExecuteReader();
            if (lectura.Read())
            {
                cmbf2.Text = lectura.GetString(0);
            }
            lectura.Close();

            query.CommandText = "SELECT nombre,direccion FROM clientes WHERE rfc = '" + rfcor + "'";
            lectura = query.ExecuteReader();
            if (lectura.Read())
            {
                txtf3.Text = lectura.GetString(0);
                txtf5.Text = lectura.GetString(1);
                txtf4.Text = rfcor;
            }
            lectura.Close();
           
            conexion.ResetStatistics();
            query.CommandText = "SELECT nombre,direccion FROM clientes WHERE rfc = '" + rfcde + "'";
            lectura = query.ExecuteReader();
            if (lectura.Read())
            {
                txtf6.Text = lectura.GetString(0);
                txtf8.Text = lectura.GetString(1);
                txtf7.Text = rfcde;
            }
            lectura.Close();
 
            sda = new SqlDataAdapter("SELECT cantidad,descripcion,peso,volumen FROM fd WHERE folio = '" + id + "'", conexion);
            ds = new DataSet();
            sda.Fill(ds, "fd");
            dataGridView1.DataSource = ds.Tables["fd"];
            dataGridView1.Columns[0].Width = 60;
            dataGridView1.Columns[1].Width = 410;
            dataGridView1.Columns[2].Width = 60;
            dataGridView1.Columns[3].Width = 205;
            dataGridView1.Columns[0].HeaderText = "Cantidad";
            dataGridView1.Columns[1].HeaderText = "Descripción";
            dataGridView1.Columns[2].HeaderText = "Peso";
            dataGridView1.Columns[3].HeaderText = "Volumén";
            dataGridView1.AllowUserToAddRows = false;
            query.Dispose();
            conexion.Close();

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re:Conexion caduca en C#
« Respuesta #1 en: Miércoles 21 de Diciembre de 2011, 17:15 »
0
Hola que tal, podrias especificar en que línea exactamente marca el error?, así como también mostrar el mensaje de error que manda...

Por cierto, una opción para ubicar el problema es poniendo un punto de interrupción al inicio de tú código es decir aquí: conexion = new SqlConnection();.
Para correr paso a paso tú programa y ver exactamente en que momento la propiedad State de tú objeto conexion cambia de estado a cerrada.

Saludos!
@gabio87