none
Duda con Insertar en Windows Forms RRS feed

  • Pregunta

  • Hola, estoy empezando a crear aplicaciones de Escritorio (Windows Forms) y bueno tengo un problema que ya me esta dando dolor de cabeza.

    Tengo una aplicacion bien basica que se utilizara para realizar Inventario de Articulos, tiene una BD local (le agregue la BD debido a que en el computador que estara no tendra instalada ninguna), se cargara el listado al centro y al lado izquierdo tendra un menu donde podra agregar, modificar, buscar, etc.

    http://img148.imageshack.us/i/err1.png

    Segun algunos manuales que vi, agregue para que listara, ahora bien, tengo una ventana hija que se carga para que agregue los datos que desea, esta se abrea asi:

     

    Form activeChild = this
    
    
    .ActiveMdiChild;
    if (activeChild == null )
    {
    //creamos ventana hija
    Nuevo hija = new Nuevo();
    hija.MdiParent = this ;
    hija.Show();
    hija.Activate();
    }

     

    Y muestra lo siguiente:

    http://img20.imageshack.us/i/err2p.png

    Ahora viene el problemita, cuando se inserta, es decir, cuando se pulsa el boton aceptar, simplemente no me agrega los datos a la bd, lo he hecho 3 veces ya el programa, lo he probado con Procedimientos Almacenados (PA), con el tableadapter y nada. Con el PA abre la conexion, se agregan los datos (van bien no tira excepcion y se agregan los datos), e incluso me da que si se inserto (devuelve 1) pero en la BD no aparece reflejado, el PA es el siguiente:

     

    /*************************
    **** Crear Producto ****
    *************************/

    //Funcion que crea un nuevo Producto
    public int crearProd(Producto objProducto)
    {
    SqlCommand cmd = new SqlCommand();
    int estado = 0;

    try {
    cmd.Connection = new SqlConnection(strConnection);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "paCrearProducto" ;
    cmd.Parameters.Add("@codigo" , SqlDbType.VarChar, 20).Value = objProducto.cod;
    cmd.Parameters.Add("@nombre" , SqlDbType.VarChar, 60).Value = objProducto.nombre;
    cmd.Parameters.Add("@cantidad" , SqlDbType.Int).Value = objProducto.cant;
    cmd.Parameters.Add("@p_unitario" , SqlDbType.Float).Value = objProducto.punitario;
    cmd.Parameters.Add("@p_docena" , SqlDbType.Float).Value = objProducto.pdocena;
    cmd.Connection.Open();
    estado = cmd.ExecuteNonQuery();
    }
    catch (Exception ex)
    {
    MessageBox.Show("Exception Capturada: " + ex.Message.ToString());
    estado = 0;
    }
    finally {
    cmd.Connection.Close();
    }
    return estado;
    }
    }

     

    Despues proble  con el Table Adapter, usando la misma funcion insert que tiene, asi:

     

    ArticulosDataSetTableAdapters.ProductoTableAdapter ProductoTA = new
    
    
    Les_3.ArticulosDataSetTableAdapters.ProductoTableAdapter();

    ProductoTA.Insert(txtCodigo.Text, txtDescripcion.Text, int .Parse(nudCantidad.Value.ToString()),
    float
    .Parse(nudUnitario.Value.ToString()), float .Parse(nudDocena.Value.ToString()));

     

    Tambien le agrege una funcion que insertara, en vez del Insert, pero el resultado es el mismo, no me carga los datos en la BD, me falta algo, pero aun no logro saber que es, alguna idea? para pasar el año nuevo un poco mas relajado :D

     

    Desde ya muchas gracias >,< mi neurona se los agradece

    viernes, 31 de diciembre de 2010 19:47

Todas las respuestas

  • hola

    imagino la db que estas usando es Sql Server ?

    si es asi estas usando un atach dinamciao de la db al servicio de base de datos ? o sea dentro del proyecto en el VS tienes el archivo .mdf ?

    lo pregunto porque recuerda que cuando inicias la aplciacion desde el propio VS esta mdf se copiara al \bin\Debug, y realziara los cambiso alli, no sobre la mdf que tienes en la carpeta que esta en el proyecto

    si detienes la aplciacion y vuelves a ejecutarla el Vs realziara una nueva copia de la mdf al \bin\Debug, pisando la anterior

    puede que sea este el problema que estas teniendo, que en realidad no es un probpema solo es la forma que funciona cuando estas desarrollando, cuando estes en produccion (o sea hayas instalado la aplciacion en la pc del usuario) esto no sucedera

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    sábado, 1 de enero de 2011 0:09
  • Hola, gracias por responder.

    Sobre tus preguntas, efectivamente estoy usando SQL Server y dentro de la misma carpeta donde tengo el programa tengo el archivo .mdf

    Hice lo que tu me dijiste, y no, lamentablemente al parecer me esta faltando algo para que efectivamente se actualize la BD, si bien se inserta en teoria correctamente, estos datos no se reflejan en la bd, aun despues de ejecutada como tu mencionas. Pero al parecer debe ser algo que me falta en codigo, porque si ejecuto el Procedimiento Almacenado directamente, este inserta los datos y se muestran, aunque claro, estoy trabajando directamente con la BD, estoy trabajando en Visual Basic 2005.

    Si te sirve de algo te adjunto el proyecto en el cual estoy trabajando, no tiene mucho, que como mencionaba lo estoy haciendo por 3ra vez, como no tengo una base en esto, veo algun manual y pruebo.

    http://www.megaupload.com/?d=BYTAEUWO

     

    Agradesco tu respuesta

    Atte, Ariel

    sábado, 1 de enero de 2011 9:47