none
Seleccionar y modificar un registro RRS feed

  • Pregunta

  • Hola y antes de nada gracias por leer mi duda

    Estoy programando una base de datos Access y quiero que si se cumplen una serie de condiciones se seleccione una casilla y se modifique su valor y los siguientes.

                do
                {
                    OleDbCommand prueba2;
                    i = nuevo_valor+ 1;
                    string d="UPDATE tabla1 SET Id_nombre=nuevo_valor FROM(SELECT Id_nombre FROM tabla1 WHERE Id_nombre=i)";
                    prueba2 = new OleDbCommand(d, CANAL);
                    prueba2.Connection.Open();
                    prueba2.ExecuteNonQuery();                                         //aquí tengo el error
                    prueba2.Connection.Close();
                    nuevo_valor= nuevo_valor + 1;
                }
                while ();

    donde id_nombre es un campo de mi tabla, y "nuevo_valor" e "i" son variables int.

    Error de sintaxis (falta operador) en la expresión de consulta 'nuevo_valor FROM(SELECT Id_nombre FROM tabla1 WHERE Id_nombre=i)'.

    Muchas gracias

    lunes, 4 de abril de 2011 18:03

Respuestas

  • hola

    no entendo en el ejemplo que funcion cumpliria el while, pero con respecto al UPDATE pdoria ser, por ahi en lugar de un while podrias suar un for para limita el numero de iteraciones

    el tema es que como lo has definido entra en un ciclo infinito no hay ninguan logica que lo corte

     

    el codigo podrias ser algo como esto

    CANAL.Open();
    string d= "UPDATE tabla1 SET Id_nombre= @valor WHERE Id_nombre= @id";
    OleDbCommand prueba2 = new OleDbCommand(d, CANAL);
       
    do
    {
        i = nuevo_valor+ 1;
       
        prueba2.Parameters.Clear();
        prueba2.Parameters.AddWithValue("@valor", nuevo_valor);
        prueba2.Parameters.AddWithValue("@id", i);

        prueba2.ExecuteNonQuery();
       
        nuevo_valor= nuevo_valor + 1;
    }
    while ();

    CANAL.Close();

     

    si es que usas parametros

    me parecio raro que connection lo definieras en una variable de nombre CANAL, pero sino es asi define un OleDbConection

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Ynos_86 martes, 5 de abril de 2011 7:20
    martes, 5 de abril de 2011 4:07

Todas las respuestas

  • Estas utilizando una Sentencia SQL de una forma que no es la adecuada.

    Para tu caso debes trabajar con SubConsultas:

    Si no estas familiarizado con el tema de las SubConsultas te recomiendoe ste articulo:

    http://www.elguille.info/colabora/NET2005/Percynet_Subconsultas_en_SQL_Server.htm

    Cuando tengas el concepto claro de como se utiliza las SubConsultas, podras desarrollar tu incoveniente de la forma que desees. Y creo que ese articulo ayuda.

     

    Espero sea de utilidad.

     

     

     


    Programador .NET - Desarrollador 5 Estrellas.
    lunes, 4 de abril de 2011 22:22
  • hola

    no entendo en el ejemplo que funcion cumpliria el while, pero con respecto al UPDATE pdoria ser, por ahi en lugar de un while podrias suar un for para limita el numero de iteraciones

    el tema es que como lo has definido entra en un ciclo infinito no hay ninguan logica que lo corte

     

    el codigo podrias ser algo como esto

    CANAL.Open();
    string d= "UPDATE tabla1 SET Id_nombre= @valor WHERE Id_nombre= @id";
    OleDbCommand prueba2 = new OleDbCommand(d, CANAL);
       
    do
    {
        i = nuevo_valor+ 1;
       
        prueba2.Parameters.Clear();
        prueba2.Parameters.AddWithValue("@valor", nuevo_valor);
        prueba2.Parameters.AddWithValue("@id", i);

        prueba2.ExecuteNonQuery();
       
        nuevo_valor= nuevo_valor + 1;
    }
    while ();

    CANAL.Close();

     

    si es que usas parametros

    me parecio raro que connection lo definieras en una variable de nombre CANAL, pero sino es asi define un OleDbConection

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Ynos_86 martes, 5 de abril de 2011 7:20
    martes, 5 de abril de 2011 4:07
  • perdona,se me olvidó ponerlo, el while tiene una condición que es (nuevo_valor<cont) donde cont es una variable que se ha hallado antes, y CANAL está definida como OlebConnnection
    martes, 5 de abril de 2011 7:00