• Domingo 22 de Diciembre de 2024, 14:22

Autor Tema:  LLENAR UNA ACCESS DB DESDE UN TEXTBOX  (Leído 4016 veces)

cabromex

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
LLENAR UNA ACCESS DB DESDE UN TEXTBOX
« en: Lunes 22 de Abril de 2013, 05:28 »
0
BUEN@S, TARDES, NOCHES DIAS.

TENGO UN LIGERO INCONVENIENTE CON UN CODIGO EN C#. LO QUE ESTOY TRATANDO DE HACER ES LLENAR UNA BASE DE DATOS DESDE LOS TEXTBOX, NO EH PUESTO UN DATA GRID PUESTO QUE NO LO VI NECESARIO.
LA BASE DE DATOS SE LLAMA USERSPAQUETERIA
LA TABLA SE LLAMA ENVIOS
LOS CAMPOS SE LLAMAN: EMPRESA, CONTACTO, ORIGEN, DESTINO, PESO, NumBultos, Descripcion, Linea Y CotO.

EN EL CATCH ME APARECE UN ERROR EL CUAL NO ENTIENDO COMO RESOLVER ADEMAS DE QUE NO HACE LO QUE SE SUPONE DEBE HACER

  private void btn_Cotizar_Click(object sender, EventArgs e)
        {
            string Empresa = txt_Empresa.Text;
            string Contacto = txt_Contacto.Text;
            string Origen = txt_Origen.Text;
            string Destino = txt_Destino.Text;
            string Peso = txt_Peso.Text;
            string NumBultos = txt_NBultos.Text;
            string Descripcion = txt_Descripcion.Text;
            string Linea = txt_Linea.Text;
            string CotO = txt_CotO.Text;

            OleDbConnection cn = new
           OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/MEDIA/UsersPaqueteria.mdb");

            try
            {
                OleDbCommand cmd = new OleDbCommand("INSERT INTO Envios ( [Empresa], [Contacto], [Origen], [Destino], [Peso], [NumBultos]s, [Descripcion], [Linea], [CotO] VALUES  (@Empresa, @Contacto, @Origen, @Destino, @Peso, @NumBultos, @Descripcion, @Linea, @CotO)",cn);
               
               // cmd.ExecuteNonQuery();//DE AQUI BRINCA EL CODIGO

                //DataSet ds = new DataSet();
               // OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                //da.Fill(ds, "Envios");

                cmd.Parameters.Add("@Empresa", OleDbType.VarChar).Value = Empresa;
                cmd.Parameters.Add("@Contacto", OleDbType.VarChar).Value = Contacto;
                cmd.Parameters.Add("@Destino", OleDbType.VarChar).Value = Destino;
                cmd.Parameters.Add("@Peso", OleDbType.VarChar).Value = Peso;
                cmd.Parameters.Add("@NumBultos", OleDbType.VarChar).Value = NumBultos;
                cmd.Parameters.Add("@Descripcion", OleDbType.VarChar).Value = Descripcion;
                cmd.Parameters.Add("@Linea", OleDbType.VarChar).Value = Linea;
                cmd.Parameters.Add("@CotO", OleDbType.VarChar).Value = CotO;
               
                cn.Open();
                cmd.ExecuteNonQuery();
               

               
 
                MessageBox.Show("Base de Datos Actualizada");
            }

            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }

            finally
            {
                cn.Close();
            }


        }
    }
}

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:LLENAR UNA ACCESS DB DESDE UN TEXTBOX
« Respuesta #1 en: Lunes 22 de Abril de 2013, 08:58 »
0
Hola Cabromex.

Bueno para empezar me parece que estas cometiendo un error al llamar al metodo ExecuteNonQuery() antes de crear los parametros, primero se deben crear los parametros, y luego se llama al metodo ExecuteNonQuery(), aunque veo que lo pusiste como comentario, aun asi me queda la duda si lo haces antes o despues.

Dices que te pone un error en el catch, pero no nos pones cual es el error, si no pones el error no hay manera de saber si es una excepcion de C# o una del motor de base de datos de acces, asi que publica el mensaje de error de la excepcion, aunque veo que lo mandas a la consola, y si tu aplicacion es de windows y no de consola, esta no se vera, asi que tambien te recomiendo que cambies las siguientes lineas:

Código: [Seleccionar]
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }


Por :

Código: [Seleccionar]
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


De esa manera la excepcion aparece en ventana y no la manda a la consola.

Una vez que veas que excepcion (error) manda, publica el mensaje para saber que tipo de excepion es, si de acces o de C#

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

cabromex

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re:LLENAR UNA ACCESS DB DESDE UN TEXTBOX
« Respuesta #2 en: Lunes 22 de Abril de 2013, 15:02 »
0
disculpen que no haya contestado ayer. la neta me eche a dormir.
ESTE ES EL CODIGO, CON ALGUNAS MODIFICACIONES. ESTA UN POCO MAS LEGIBLE
EL ERROR QUE ME MARCA ES EL SIGUIENTE:SE DETECTO OLEDBEXCEPTION No se han especificado valores para algunos de los parámetros requeridos.



 private void btn_Cotizar_Click(object sender, EventArgs e)
        {

            OleDbConnection cn = new
           OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/MEDIA/UsersPaqueteria.mdb");

            try
            {
                OleDbCommand cmd = new OleDbCommand("INSERT INTO Envios (Empresa, Contacto, Origen, Destino, Peso, NumBultos, Descripcion, Linea, CotO) VALUES  (@Empresa, @Contacto, @Origen, @Destino, @Peso, @NumBultos, @Descripcion, @Linea, @CotO)",cn);
               
               
                cmd.Parameters.AddWithValue("@Empresa",  txt_Empresa.Text);
                cmd.Parameters.AddWithValue("@Contacto", txt_Contacto.Text);
                cmd.Parameters.AddWithValue("@Destino", txt_Origen.Text);
                cmd.Parameters.AddWithValue("@Peso", txt_Peso.Text);
                cmd.Parameters.AddWithValue("@NumBultos", txt_NBultos.Text);
                cmd.Parameters.AddWithValue("@Descripcion", txt_Descripcion.Text);
                cmd.Parameters.AddWithValue("@Linea", txt_Linea.Text);
                cmd.Parameters.AddWithValue("@CotO", txt_CotO.Text);
               
                cn.Open();
                cmd.ExecuteNonQuery();
               

               
 
                MessageBox.Show("Base de Datos Actualizada");
            }

            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }

            finally
            {
                cn.Close();
            }


        }
    }
}

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:LLENAR UNA ACCESS DB DESDE UN TEXTBOX
« Respuesta #3 en: Lunes 22 de Abril de 2013, 16:30 »
0
Citar
SE DETECTO OLEDBEXCEPTION No se han especificado valores para algunos de los parámetros requeridos.

Esto es porque hay un parametro al que no le has especificado un valor, en este caso, te falta el parametro @origen, ademas, el parametro @destino esta equivocado:

Código: [Seleccionar]
                    cmd.Parameters.AddWithValue("@Destino", txt_Origen.Text);

Agrega el parametro faltante, y corrige el parametro @destino:

Código: [Seleccionar]
                    cmd.Parameters.AddWithValue("@Origen", txt_Origen.Text);
                    cmd.Parameters.AddWithValue("@Destino", txt_Destino.Text);

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

cabromex

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re:LLENAR UNA ACCESS DB DESDE UN TEXTBOX
« Respuesta #4 en: Lunes 22 de Abril de 2013, 17:18 »
0
LO VOY A HACER. YO AVISO SI SE SOLUCIONO EL PROBLEMA

cabromex

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re:LLENAR UNA ACCESS DB DESDE UN TEXTBOX
« Respuesta #5 en: Lunes 22 de Abril de 2013, 17:30 »
0
 :jumpie: JAJAJAJA ESE ERA TODO EL PROBLEMA???? JAJAJAJA QUE VERGUENZA, TANTAS VUELTAS QE LE DI Y NO ME DI CUENTA. MUCHAS GRACIAS

cabromex

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re:LLENAR UNA ACCESS DB DESDE UN TEXTBOX
« Respuesta #6 en: Miércoles 24 de Abril de 2013, 14:58 »
0
ACABO DE OBSERVAR OTRO LIGERO INCONVENIENTE, LA INFORMACION SI SE GUARDA EN LA BASE DE DATOS, PERO NO EN LA QUE DEBERIA DE SER. NOSE SI PODRIAN DARME ALGUN CONSEJO O ALGUN MOTIVO POR EL CUAL ESTO ESTE SUCEDIENDO
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

cabromex

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re:LLENAR UNA ACCESS DB DESDE UN TEXTBOX
« Respuesta #7 en: Miércoles 24 de Abril de 2013, 15:04 »
0
ENCONTRE LA SOLUCION, ACOMODE LOS PARAMETROS DEL COMANDO, EN EL ORDEN EN EL QUE QIERO QE VAYAN LLENADO LA TABLA Y ESO CORRIGIO EL PROBLEMA.  :nosweat: