![]() |
sumar campos string
Hola foro:
Tengo un problema al sumar campos de una tabla, ya que tengo todos los campos declarados como string pero ahora resulta que tengo q realizar una actualizacion de datos de un monton de campos con un update, pero resulta que al intentar sumar campos me los encadena. Estoy usando Delphi7 con acces 2000. Supongo q el problema estara resuelto en algun foro pq parece un error comun, pero juro q lo he buscado y no lo he encontrado. Agradeceria cualquier ayuda porque si he de cambiar los tipos de los campos he de rehacer medio programa. Muchas gracias por vuestra ayuda. |
Los strings no aceptan operaciones aritméticas, si lo que tienes son campos strings con valores numéricos, te recomiendo replantear el diseño de tu base de datos, si no puedes hacer esto, lo que tienes que hacer es un CAST de tu campo al tipo de dato deseado.
Saludos! |
gracias, casi me sirve, pero poniendo val(campo1) me coge el valor entero del numero, pero me deja los decimales.
No existira ninguna opcion para que coja los decimales?? |
Un Saludo. |
no se q pasa, pero no me funciona, me dice q falta operador, pongo el codigo aqui, a ver si ves algo:
Código:
form2.bonus.sql.text := 'update segchasis set importebruto =cast ( val(bonusfiat) as float) + cast ( val(bonusmotriz) as float)'; |
Yo de por si quitaría los "VAL"
|
Como dice Federico sobran los VAL, para esto estamos utilizando el moldeado con CAST.
Un Saludo. |
ahora me da otro error diferente
'bonus: Missing SQL property' y el codigo me cada asi Código:
form2.bonus.sql.text := 'update segchasis set importebruto = cast(bonusfiat as float) + cast(bonusmotriz as float)'; |
¿Que versión de Access es?... por lo menos en el 97 no existe el CAST, podrías utilizar CCur, CDbl...
|
Estoy usando el access 2000
|
Hola foro:
ya he corregido el error del bonus, no se muy bien q pasaba, pero le he cambiado el nombre al query y vuelve a darmeel error de falta operador. el codigo me cada asi: Código:
form2.bonus.sql.text := 'update segchasis set importebruto = cast(bonusfiat as float) + cast(bonusmotriz as float)'; tampoco conozco la funcion cast o sea q no se si tengo q usarla asi. Agradeceria de nuevo vuestra ayuda porque como comente anteriormente si no tengo forma de sumar el valor de estos campos tengo que rehacer medio programa. Los campos los tengo declarados en access 2000 como strings y en este codigo segchasis es la tabla access, y importebruto, bonusfiat y bonusmotriz son los campos q tengo como string, pero contienen numeros decimales estoy usando delphi7 y para acceder a los datos uso ADO |
Lo consegui
Al final lo consegui!!!
Se me ocurrio una tonteria pero ha funcionado, aqui os muestro al final como lo he conseguido: Código:
form2.bonofiat.sql.text := 'update segchasis set importetotal = (importe*1)+(bonusfiat*1)+(bonusvolantederecha*1)+(bonusmotriz*1)'; Gracias a todos. Algun comentario sobre la solucion?? |
La franja horaria es GMT +2. Ahora son las 00:01:55. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi