none
Problema para pasar datos de un form al DB. (LINQ2SQL) RRS feed

  • Pregunta

  • Tengo un proyecto ya avanzado en Csharp con linq to sql, el detalle de mi problema es el siguiente tengo un form con un dataGridView que pasa unos datos a unos textBox y depues de eso trato de hacer la función de guardado por medio de un botón. Para pasar la información impresa a la Base de Datos. Pero me marca problemas para reconocer al momento de insertar: No me deja insertar al DB ningun INT y tampoco los DECIMALES.

        Ges.REGISTRAR_COMPRA_02(txtFolioCom.Text, Convert.ToInt32(txtIdCliente.Text),txtNomCliente.Text, txtTienda.Text, Convert.ToInt32(txtIdCompra.Text), Convert.ToInt32(txtIdVale.Text), Convert.ToDecimal(txtAbon.Text), Convert.ToDecimal(txtNumPag.Text), txtFech.Text, ref mjs);



    No sé porque me marca eso, ya revise que el .dbml este bien actualizado, y revise mis bases para ver por qué no me acepta los datos pero no he podido dar con el clavo :/ que podrá ser?

    Codigo en CSharp:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Gestor_de_Vales_2._0
    {
        public partial class Gen_Compra : Form
        {
    
            GesVaDataContext Ges = new GesVaDataContext();
            public static string Band = string.Empty;
    
            public Gen_Compra()
            {
                InitializeComponent();
            }
    
            private void Bloqueatextos()
            {
                txtAbon.Enabled = false;
                txtDebe.Enabled = false;
                txtFolioCom.Enabled = false;
                txtIdCliente.Enabled = false;
                txtIdCompra.Enabled = false;
                txtIdVale.Enabled = false;
                txtNomCliente.Enabled = false;
                txtNumPag.Enabled = false;
                txtTienda.Enabled = false;
                txtNumPag.Enabled = false;
                txtDebe.Enabled = false;
                dgvDatosVale.Enabled = false;
            }
    
            private void Bloqueabotones()
            {
                btnCompElim.Enabled = false;
                btnCompGua.Enabled = false;
                btnCompModi.Enabled = false;
            }
    
            private void Activatextos()
            {
                txtAbon.Enabled = true;
                txtDebe.ReadOnly = true;
                txtNumPag.ReadOnly = true;
            }
    
            private void Limipiar()
            {
                txtAbon.Clear();
                txtDebe.Clear();
                txtFolioCom.Clear();
                txtIdCliente.Clear();
                txtIdCompra.Clear();
                txtIdVale.Clear();
                txtNomCliente.Clear();
                txtNumPag.Clear();
                txtTienda.Clear();
                txtNumPag.Clear();
                txtDebe.Clear();
            }
    
            private void Desbloqbotn()
            {
                btnCompGua.Enabled = true;
            }
    
            private void LlamarVales()
            {
                try
                {
                    var vista2 = Ges.VER_VALE_ACTIVOS_s.ToList();
                    dgvDatosVale.DataSource = vista2;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    
            private void Gen_Compra_Load(object sender, EventArgs e)
            {
                Bloqueatextos();
                Bloqueabotones();
                LlamarVales();
                txtFech.Text = DateTime.Now.ToString();
    
                dgvDatosVale.Columns[0].HeaderText = "Vale ID";
                dgvDatosVale.Columns[1].HeaderText = "Código";
                dgvDatosVale.Columns[2].HeaderText = "Cliente ID";
                dgvDatosVale.Columns[3].HeaderText = "Cliente Nombre";
                dgvDatosVale.Columns[4].HeaderText = "Vale Tienda";
                dgvDatosVale.Columns[5].HeaderText = "Vale Pagos";
                dgvDatosVale.Columns[6].HeaderText = "Vale Monto";
                dgvDatosVale.Columns[7].HeaderText = "Vale IVA";
                dgvDatosVale.Columns[8].HeaderText = "Vale Estado";
            }
    
            private void btnCompSal_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }
    
            private void btnCompMenu_Click(object sender, EventArgs e)
            {
                this.Close();
            }
    
            private void btnCompNuevo_Click(object sender, EventArgs e)
            {
                Limipiar();
                Desbloqbotn();
                Activatextos();
                dgvDatosVale.Enabled = true;
            }
    
            private void txtAbon_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (((e.KeyChar) < 46 && e.KeyChar != 8) || e.KeyChar > 57)
                {
                    e.Handled = true;
                }
            }
    
            private void dgvDatosVale_DoubleClick(object sender, EventArgs e)
            {
                if (true)
                { 
                        DialogResult rsl = MessageBox.Show("Seguro que quieres esta selección?", "Aviso de Formulario",
                        MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
                        if (rsl == DialogResult.OK)
                        {
                            this.txtIdCompra.Text = Convert.ToString(this.dgvDatosVale.CurrentRow.Cells[0].Value);
                            this.txtFolioCom.Text = Convert.ToString(this.dgvDatosVale.CurrentRow.Cells[1].Value);
                            this.txtIdCliente.Text = Convert.ToString(this.dgvDatosVale.CurrentRow.Cells[2].Value);
                            this.txtNomCliente.Text = Convert.ToString(this.dgvDatosVale.CurrentRow.Cells[3].Value);
    
                            this.txtTienda.Text = Convert.ToString(this.dgvDatosVale.CurrentRow.Cells[4].Value);
                            this.txtIdVale.Text = Convert.ToString(this.dgvDatosVale.CurrentRow.Cells[5].Value);
                            this.txtNumPag.Text = Convert.ToString(this.dgvDatosVale.CurrentRow.Cells[6].Value);
                            this.txtDebe.Text = Convert.ToString(this.dgvDatosVale.CurrentRow.Cells[7].Value);
                        }
                }
            }
    
            private void btnCompGua_Click(object sender, EventArgs e)
            {
                if (txtAbon.Text == "")
                {
                    MessageBox.Show("Te han faltado datos que llenar.", "Aviso de Formulario",
                   MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                else
                {
                    try
                    {
                        Ges.REGISTRAR_COMPRA_02(txtFolioCom.Text, Convert.ToInt32(txtIdCliente.Text),txtNomCliente.Text, txtTienda.Text, Convert.ToInt32(txtIdCompra.Text), Convert.ToInt32(txtIdVale.Text), Convert.ToDecimal(txtAbon.Text), Convert.ToDecimal(txtNumPag.Text), txtFech.Text, ref mjs);
                        //Ges.REGISTRAR_COMPRA_02(txtFolioCom.Text, Convert.ToInt32(txtIdCliente.Text), txtNomCliente.Text, txtTienda.Text, Convert.ToInt32(txtIdCompra.Text), Convert.ToInt32(txtIdVale.Text), Convert.ToDecimal(txtAbon.Text), Convert.ToDecimal(txtNumPag.Text), txtFech.Text, ref mjs);
                    }
    
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
    
            }
        }
    }

    Store Proc:
    USE [G_VALES]
    GO
    /****** Object:  StoredProcedure [dbo].[REGISTRAR_COMPRA_02]    Script Date: 01/01/2013 21:00:36 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ---
    ALTER proc [dbo].[REGISTRAR_COMPRA_02]
    @COMPRA_FOLIO            varchar(5),
    @CLIENTE_ID                int,
    @CLIENTE_NOMBRE            varchar(10),
    @VALE_TIENDA            varchar(10),
    @VALE_ID                int,
    @COMPRA_NUM_PAGOS        int,
    @COMPRA_PAGADO            decimal(38, 2),
    @COMPRA_DEBE            decimal(38, 2),
    @COMPRA_FH                varchar (50),
    @mjs                    varchar(50)out
    as begin
                    insert into TB_COMPRA values(@COMPRA_FOLIO, @CLIENTE_ID, @CLIENTE_NOMBRE, @VALE_TIENDA, @VALE_ID
                    , @COMPRA_NUM_PAGOS, @COMPRA_PAGADO, @COMPRA_DEBE, @COMPRA_FH)
                    set @mjs = 'Compra Registrada.'
        end



    Un saludo y feliz año.



    miércoles, 2 de enero de 2013 3:19

Respuestas

Todas las respuestas

  • Pero me marca problemas para reconocer al momento de insertar: No me deja insertar al DB ningun INT y tampoco los DECIMALES.

    cual es el mensaje del error tal cual lo visualizas ? al ejecutar la linea

    Ges.REGISTRAR_COMPRA_02(txtFolioCom.Text, ....


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 2 de enero de 2013 3:24
  • Son estos:

    Error    2    Argument 10: cannot convert from 'ref mjs' to 'ref string'    C:\Users\Sagahon\Desktop\Sistema de Vales\Lv1\Lv4.2\Gestor de Vales 2.0\Gestor de Vales 2.0\Gen_Compra.cs    162    288    Gestor de Vales 3.0

    Error    1    The best overloaded method match for 'Gestor_de_Vales_2._0.GesVaDataContext.REGISTRAR_COMPRA_02(string, int?, string, string, int?, int?, decimal?, decimal?, string, ref string)' has some invalid arguments    C:\Users\Sagahon\Desktop\Sistema de Vales\Lv1\Lv4.2\Gestor de Vales 2.0\Gestor de Vales 2.0\Gen_Compra.cs    162    21    Gestor de Vales 3.0

    Error    3    The name 'mjs' does not exist in the current context    C:\Users\Sagahon\Desktop\Sistema de Vales\Lv1\Lv4.2\Gestor de Vales 2.0\Gestor de Vales 2.0\Gen_Compra.cs    162    288    Gestor de Vales 3.0

    tambien este:

    "The best overloaded method match for 'Gestor_de_Vales_2.0_0.GesVaDataContext.REGISTRAR_COMPRA_02(string,int?,string,string,int?,int?,decimal?,string,ref string)' has some invalid arguments"

    Nose por que me marca eso si ya hice unos parecidos y no tenia ningun problema. :/, gracias por tu tiempo.


    sábado, 5 de enero de 2013 0:34
  • Ya lo solucione me faltaba definir el valor de el msg que viene desde el SQL.
    • Marcado como respuesta SagahonArturo lunes, 7 de enero de 2013 19:43
    lunes, 7 de enero de 2013 19:43