Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-02-2005
tiagor64 tiagor64 is offline
Miembro
 
Registrado: ene 2005
Posts: 48
Poder: 0
tiagor64 Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 16-02-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
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!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 16-02-2005
tiagor64 tiagor64 is offline
Miembro
 
Registrado: ene 2005
Posts: 48
Poder: 0
tiagor64 Va por buen camino
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??
Responder Con Cita
  #4  
Antiguo 16-02-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código SQL [-]
Select Sum(Cast(numero as float)) as total
 from Prueba

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 16-02-2005
tiagor64 tiagor64 is offline
Miembro
 
Registrado: ene 2005
Posts: 48
Poder: 0
tiagor64 Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 16-02-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Yo de por si quitaría los "VAL"
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 16-02-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Como dice Federico sobran los VAL, para esto estamos utilizando el moldeado con CAST.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #8  
Antiguo 16-02-2005
tiagor64 tiagor64 is offline
Miembro
 
Registrado: ene 2005
Posts: 48
Poder: 0
tiagor64 Va por buen camino
Unhappy

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;
Responder Con Cita
  #9  
Antiguo 16-02-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
¿Que versión de Access es?... por lo menos en el 97 no existe el CAST, podrías utilizar CCur, CDbl...
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #10  
Antiguo 16-02-2005
tiagor64 tiagor64 is offline
Miembro
 
Registrado: ene 2005
Posts: 48
Poder: 0
tiagor64 Va por buen camino
Estoy usando el access 2000
Responder Con Cita
  #11  
Antiguo 17-02-2005
tiagor64 tiagor64 is offline
Miembro
 
Registrado: ene 2005
Posts: 48
Poder: 0
tiagor64 Va por buen camino
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
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

Última edición por tiagor64 fecha: 17-02-2005 a las 16:24:20.
Responder Con Cita
  #12  
Antiguo 17-02-2005
tiagor64 tiagor64 is offline
Miembro
 
Registrado: ene 2005
Posts: 48
Poder: 0
tiagor64 Va por buen camino
Smile 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??
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:06:39.


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
Copyright 1996-2007 Club Delphi