Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   sumar campos string (https://www.clubdelphi.com/foros/showthread.php?t=18563)

tiagor64 16-02-2005 12:43:39

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.

delphi.com.ar 16-02-2005 13:16:24

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.
Código SQL [-]
SELECT VAL(CAMPO1)+VAL(CAMPO2) FROM TABLA

Saludos!

tiagor64 16-02-2005 15:14:08

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??

marcoszorrilla 16-02-2005 15:19:13

Código SQL [-]
Select Sum(Cast(numero as float)) as total
 from Prueba

Un Saludo.

tiagor64 16-02-2005 15:53:17

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)';
          form2.bonus.ExecSQL;

de todas formas muchas gracias de nuevo

delphi.com.ar 16-02-2005 15:59:17

Yo de por si quitaría los "VAL"

marcoszorrilla 16-02-2005 16:02:20

Como dice Federico sobran los VAL, para esto estamos utilizando el moldeado con CAST.

Un Saludo.

tiagor64 16-02-2005 16:11:17

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)';
        form2.bonus.ExecSQL;


delphi.com.ar 16-02-2005 16:33:53

¿Que versión de Access es?... por lo menos en el 97 no existe el CAST, podrías utilizar CCur, CDbl...

tiagor64 16-02-2005 16:48:21

Estoy usando el access 2000

tiagor64 17-02-2005 16:19:58

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)';
        form2.bonus.ExecSQL;

no se que operador me puede faltar:confused:
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

tiagor64 17-02-2005 18:03:53

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)';
        form2.bonofiat.ExecSQL;

asi al multiplicar los campos por un numero ya me los reconoce como un valor, algo raro no?? pero funciona.

Gracias a todos. Algun comentario sobre la solucion??


La franja horaria es GMT +2. Ahora son las 03:04:59.

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