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 14-10-2015
ezerusso ezerusso is offline
Registrado
NULL
 
Registrado: oct 2015
Posts: 5
Poder: 0
ezerusso Va por buen camino
Guardar resultado de dos campos de una base de datos en un tercer campo

hola quisiera saber como puedo hacer para que los resultados de dos campos [INICIO] [FINAL] se guarden en la base de datos access en un tercer campo llamado [CONSUMO], utilize la query para realizar la resta y mostrarla en una dbgrid pero quisiera que esos resultados se guarden en la db. gracias!!
Responder Con Cita
  #2  
Antiguo 14-10-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ezerusso, bienvenido a los foros de Club Delphi

Y como a todos los que se inician te invitamos a que leas nuestra guía de estilo.

No has indicado ni el gestor de BD ni los componentes con que estas trabajando, pero la opción mas simple es dejar que la propia BD se encargue de la tarea.

Ejemplificando, en Firebird podrías hacer:
Código SQL [-]
CREATE TABLE TU_TABLA (
  ...
  INICIO DOUBLE PRECISION,
  FINAL DOUBLE PRECISION,
  CONSUMO DOUBLE PRECISION COMPUTED BY (INICIO + FINAL)
)

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 14-10-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No sé si access tendrá "computed by".
Tampoco sé si tiene triggers, me temo que tampoco.
A las malas, algo así:
Código SQL [-]
update tabla set consumo = inicio+final
Responder Con Cita
  #4  
Antiguo 14-10-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por ezerusso Ver Mensaje
...se guarden en la base de datos access en un tercer campo llamado [CONSUMO], utilize la query...
Cita:
Empezado por ecfisa Ver Mensaje
...No has indicado ni el gestor de BD...
Sin palabras...

Creo que lo que te ha dicho Casimiro es la opción indicada para Access. Usa un ADOQuery que ejecute, mediante el método ExecSQL, la sentencia que te puso en su mensaje.

Saludos y disculpas por la distracción
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 14-10-2015
ezerusso ezerusso is offline
Registrado
NULL
 
Registrado: oct 2015
Posts: 5
Poder: 0
ezerusso Va por buen camino
Smile

hola gracias por la respuesta no consigo solucionarlo, mira te explico mas de detalladamente lo que tengo,.. es algo sencillo lo que quiero hacer

-Por una parte realice una tabla en access de tres campos INICIO, FINAL , CONSUMO, los 3 tipo numéricos.

en delphi accedí a ADOconection, datasource y un ADOquery para realizar la consulta y mostrarla en una dbgrid, conecte todo y hasta ahí todo bien, puse este código en el ADOquery:

Código SQL [-]
 SELECT inicio , final (final- inicio) as consumo FROM tabla1

pero solo estoy mostrando el inicio, final y los resultados de la resta en el campo consumo del dbgrid y a lo que quiero llegar es que se guardan esos resultados en el campo consumo de la tabla de la base de datos.

gracias..
Responder Con Cita
  #6  
Antiguo 14-10-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ezerusso.

Es que no estas usando la sentencia SQL que te indicó Casimiro, deberías hacer algo como esto:
Código Delphi [-]
procedure TForm1.btnUpdateClick(Sender: TObject);
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'UPDATE TABLA1 SET CONSUMO = FINAL - INICIO';
  ADOQuery1.ExecSQL;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 14-10-2015
ezerusso ezerusso is offline
Registrado
NULL
 
Registrado: oct 2015
Posts: 5
Poder: 0
ezerusso Va por buen camino
gracias pude guardar los resultados insertando la sentencia en un btn.. pero ahora tengo el problema que la dbgrid se queda en blanco al oprimir el btn.. ya veré cual es el problema

muchas gracias!!
Responder Con Cita
  #8  
Antiguo 14-10-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ezerusso.

Si estas usando el mismo componente query para mostrar y para actualizar, podrías hacer:
Código Delphi [-]
var
  tmp: string;
begin
  tmp := ADOQuery1.SQL.Text;  // salvar cadena SQL previa

  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'UPDATE TABLA1 SET CONSUMO = FINAL - INICIO';
  ADOQuery1.ExecSQL;

 
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := tmp; // restaurar cadena SQL previa
  ADOQuery1.Open;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 15-10-2015
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Cita:
Empezado por ezerusso Ver Mensaje
hola gracias por la respuesta no consigo solucionarlo, mira te explico mas de detalladamente lo que tengo,.. es algo sencillo lo que quiero hacer

-Por una parte realice una tabla en access de tres campos INICIO, FINAL , CONSUMO, los 3 tipo numéricos.

en delphi accedí a ADOconection, datasource y un ADOquery para realizar la consulta y mostrarla en una dbgrid, conecte todo y hasta ahí todo bien, puse este código en el ADOquery:

Código SQL [-] SELECT inicio , final (final- inicio) as consumo FROM tabla1


pero solo estoy mostrando el inicio, final y los resultados de la resta en el campo consumo del dbgrid y a lo que quiero llegar es que se guardan esos resultados en el campo consumo de la tabla de la base de datos.

gracias..
Hola ezerusso,

Lo que no entiendo es por que quieres poner un campo mas en la tabla que ocupa sitio, cuando sólo es un dato que se saca de otros datos mediante una resta.

Si tienes que cambiar el inicio o el final, también tienes que cambiar el consumo, si por el contrario, es un campo calculado seria mejor, porque cuando cambias el inicio o final el campo consumo se actualiza sólo.

Respecto a la SQL que has puesto te falta una coma (,) después de: final, (final - inicio) as consumo

Código SQL [-]
SELECT inicio , final, (final- inicio) as consumo FROM tabla1
Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Guardar datos en Base de Datos MySQL knnibal Conexión con bases de datos 6 23-06-2011 15:36:42
Guardar contraseñas en base de datos vivamotos C++ Builder 2 17-11-2010 00:16:30
Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas adaypr C++ Builder 1 05-09-2006 11:56:33
Guardar QR en base de datos jose_c27 Impresión 1 06-11-2005 03:32:16
guardar un jpg en una base de datos ing_alsaac Gráficos 1 16-10-2003 01:15:16


La franja horaria es GMT +2. Ahora son las 22:02:37.


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