none
CRUD Access y C# RRS feed

  • Pregunta

  • Hola a todos mi Nombre es Erick y soy nuevo en el Foro de Microsoft.

    Estoy desarrollando una pequeña aplicación C# conectada a una base de datos Access.

    Tengo problemas para realizar la consulta de actualización desde mi formulario y un TextBox.

    Son tres tablas las que tengo relacionadas y en un DataGrid muestro los registros mediante una consulta INNER JOIN con la fila seleccionada paso los datos a los TexBox y ahi solo habilito ciertos TexBox que son los que se pueden actualizar en la base de datos.

    Estoy tratando de ejecutar la consulta pero me marca error:

    Syntax erro in UPDATE statment


    El codigo utilizado es el siguiente:

    String sql = "UPDATE tblPARTS INNER JOIN (tblCANTIDAD INNER JOIN tblESTANTERIA ON tblCANTIDAD.IdCANTIDAD = tblESTANTERIA.IdESTANTERIA) ON tblPARTS.IdPARTS = tblCANTIDAD.IdCANTIDAD SET tblPARTS Equipo='" + txtEquipo.Text + "', Estante=" + txtEstante.Text + ", Seccion='" + txtSeccion.Text + "', Ubicacion='" + txtUbica.Text + "', Bolsas=" + txtBolsas.Text + ", BolsasMin=" + txtBolsaMin.Text + ", QtyBolsa=" + txtQtyBolsa.Text + ", Qty=" + txtQty.Text + ", WHERE IdPARTS = '" + txtPARTS.Text + "'";
                cmd = new OleDbCommand(sql, con);
     try
                {
                    con.Open();
                    adapter = new OleDbDataAdapter(cmd);
                   cmd.ExecuteNonQuery();
                        MessageBox.Show("Registro actualizado correctamente...!", "Registro Actualizado", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                    con.Close();



    Los campos:


    Estante
    Bolsas
    BolsasMin
    QtyBolsa
    Qty

    Son de tipo entero el resto de los campos son Text.

    Al igual tengo problemas con la inserción de datos a la base de datos.

    Espero me puedan ayudar.

    Erick Gamer

     

    lunes, 27 de agosto de 2018 21:14

Respuestas

  • hola

    no se realiza un update y joins de esa forma

    string sql = @"UPDATE p 
    		SET p.Equipo= @Equipo, p.Estante= @Estante, .....
    		FROM tblPARTS p INNER JOIN p....
    		INNER JOIN tblCANTIDAD c INNER JOIN tblESTANTERIA e ON c.IdCANTIDAD = e.IdESTANTERIA
    		ON p.IdPARTS = tblCANTIDAD.IdCANTIDAD 
    		WHERE IdPARTS = @IdPARTS";
    
    OleDbCommand cmd = new OleDbCommand(sql, con);
    cmd.Parameters.AddWithValue("@Equipo", txtEquipo.Text);
    cmd.Parameters.AddWithValue("@Estante", txtEstante.Text);
    .
    .
    .
    cmd.Parameters.AddWithValue("@IdPARTS", txtPARTS.Text);
    
    try
    {
    	con.Open();
    		
    	cmd.ExecuteNonQuery();
    	MessageBox.Show("Registro actualizado correctamente...!", "Registro Actualizado", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    }
    con.Close();

    analiza lo que resalto en negrita

    deebs completar donde puse .... , pero veras que tblPARTS  no lo unes al resto

    ademas debes usar siempre parametros, no se concatena en el string

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 27 de agosto de 2018 21:25