Ver Mensaje Individual
  #1  
Antiguo 23-12-2017
viverosjosem viverosjosem is offline
Baneado
 
Registrado: dic 2017
Posts: 64
Reputación: 0
viverosjosem Va por buen camino
Unhappy Tratando de incrementar un valor con UPDATE

Hola Amigos.
soy nuevo en Firebird. e revisado muchas paginas de internet, pero no e encontrado nada para dar solucion a mi problema.

Siempre e trabajado con delphi y paradox. Ahora estoy tratando de pasar mi codigo a SQL. Estoy experimentando con Firebird 2.5.
El problema que tengo es el siguiente:
Tengo una base de datos con una tabla llamada comanda, la cual almacena los pedidos de una mesa. Entonces lo que quiero, es, actualizar la cantidad de un producto modificando el contenido del campo cantidad.

El punto es que no logro actualizar el campo cantidad, sumandole a su valor original, un nuevo valor. Algo como: Campo_Cantidad = Campo_Cantidad + variable.
Código Delphi [-]
 SQLDataSet1.Close;
  SQLDataSet1.CommandText :=  'UPDATE ' + ' Comanda ' +
                                     'SET ' +
                                         'Salon      =:Salon, ' +
                                         'Mesa       =:Mesa, '  +
           'Cantidad   =:Cantidad, ' +
                                         'Loaded     =:Loaded ' +
                                      'WHERE ' +
                                          'Salon  = ' + QuotedStr(sSalon)  + ' AND ' +
                                          'Mesa   = ' + QuotedStr(sNumero) + ' AND ' +
                                          'Codigo = ' + QuotedStr(sCodigo) + ' AND ' +
                                          'Loaded = ' + QuotedStr('2') + ';';


         SQLDataSet1.ParamByName('Salon' ).AsString   := sSalon;
         SQLDataSet1.ParamByName('Mesa' ).AsString    := sMesa;
         SQLDataSet1.ParamByName('Loaded' ).AsString  := '1';
         SQLDataSet1.ParamByName('Cantidad' ).AsFloat := SQLDataSet1.ParamByName('Cantidad' ).AsFloat + iCantidad;
         SQLDataSet1.ExecSQL(False);

** Si en el codigo escribo: "ParamByName", solo graba el valor de "iCantidad", ignorando el valor original que ya estaba grabado.

** Si en el codigo escribo: "FieldByName", Me da un error que dice: SQLDataSet1 Field 'cantidad' not found.


Alguna idea de como poder hacerlo.
De antemano, muy agradecido.
Responder Con Cita