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.
** 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. |
Hola. un alcance.
Cuando digo: Si en el codigo escribo: "ParamByName", me refiero a esta linea: SQLDataSet1.ParamByName('Cantidad' ).AsFloat := SQLDataSet1.ParamByName('Cantidad' ).AsFloat + iCantidad; y cuando digo: Si en el codigo escribo: "FieldByName", me refiero a esta linea: SQLDataSet1.ParamByName('Cantidad' ).AsFloat := SQLDataSet1.FieldByName('Cantidad' ).AsFloat + iCantidad; Espero, quede mas claro. Gracias de antemano. |
La actualización del campo CANTIDAD la tienes que hacer en el update de la base de datos, no en el parámetro, es decir:
No tiene sentido hacerlo en el parámetro, porque el parámetro no sabe cual es el valor que tiene actualmente el campo CANTIDAD en la base de datos. El parámetro ICANTIDAD es donde pondrías en la consulta. Tampoco creo que tenga mucho sentido actualizar la mesa y el salón, si forman parte del mismo WHERE de la consulta que vas a actualizar. |
Hola Whilenoteof. agradezco tu ayuda.
Hice lo que me sugeriste. Cambié la asignación del parametro cantidad a: Set Cantidad = Cantidad + iCantidad
pero me da un error: SQLDataSet1 Field 'cantidad' not found; tambien lo probe quitando la linea: SQLDataSet1.ParamByName('Cantidad' ).AsFloat := iCantidad;.. y nada. ..y luego quite esta: SQLDataSet1.ExecSQL(False);.. y nada. hice todas las conbinaciones que se me ocurrieron y no produce nada, o en el peor de los casos me da error. Alguna nueva idea? Gracias por la ayuda. muy agradecido |
Cita:
da error, porque no hay ningún parámetro que se llame Cantidad, tal como yo te lo he puesto sería iCantidad, es decir: , asegúrate también que la query tiene definido ese parámetro (dependiendo de los componentes que utilices, se creará automáticamente a partir de la notación :iCantidad). |
Hola
Si el parametro se llama icantidad debes usar ese nombre y no 'cantidad'.
Saludos |
Gracias WhileNoteof.
Tenias razon. Cambie el campo Cantidad, por el parametro iCantidad y funciono perfectamente.
Muy agradecido. Tambien mis agradecimientos a Caminante. |
La franja horaria es GMT +2. Ahora son las 00:02:48. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi