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 06-06-2010
yossi yossi is offline
Miembro
 
Registrado: abr 2010
Posts: 59
Poder: 15
yossi Va por buen camino
select max

hola, tengo 1 query con esta sentencia

Código SQL [-]
select max(fecha)
from personas
where personas_id=:id;

lo que quiero hacer en tomar el campo fecha del ultimo registro de ese id, y asignarselo a un datetimepicker, pero si en la tabla personas no hay ningun registro que me tome la fecha actual.

Código Delphi [-]
if query1.isempty then
datetimepicker.date:=now;
else
datetimepicker.date:=query1.fields[0].value;

el problema es que me dice que la funcion max no puede retornar null y no se como hacer la consulta y como hacerla asignacion
Responder Con Cita
  #2  
Antiguo 06-06-2010
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
Creo que lo mejor sería ejecutar primero:

Código SQL [-]
select Count(fecha)
from personas
where personas_id=:id;


if query1.Fields[0].AsInteger = 0 then
datetimepicker.date:=now;
else
datetimepicker.date:=query1.fields[0].value;

Si te devuelve 0 registros sabes que resultaría "null" y sino prosigues.

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
  #3  
Antiguo 07-06-2010
yossi yossi is offline
Miembro
 
Registrado: abr 2010
Posts: 59
Poder: 15
yossi Va por buen camino
hola marcos, eso me ayudo pero no resuelve mi problema a lo mejor no me explique bien, voy de nuevo

necesito seleccionar la fecha mas actual de una tabla que concuerde con un id, es decir en la tabla tengo estos registros que concuendan con el id

id=1

2008-03-04
2008-06-03
2009-12-04

yo necesito que la consulta me devuelva el valor 2009-12-04 y lo coloque en un datetimepicker y en caso que digamos no existan registros asociados al id=1 coloque la fecha actual en el datetimepicker
Responder Con Cita
  #4  
Antiguo 07-06-2010
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
Al ejecutar la primera sentencia que te puse, sabes si hay alguna fecha o no, sino hay fechas das mensaje diciendo que no hay registros que cumplan con la consulta, es decir que si sigues en este caso obtendrías "null" y te daría error si te resulta que hay registros, entonces ejecutas la consulta con Max.

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 07-06-2010
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
Mira si esto te sirve:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  if ADOConnection1.Connected then
    ADOConnection1.Close;

  with ADOQuery1 do
  begin
    SQL.Clear;

    SQL.Add('SELECT');
    SQL.Add('    MAX(FECHA) AS ULTIMAFECHA
    SQL.Add('  FROM Personas
    SQL.Add('  WHERE PERSONAS_ID = 1');

    Open;
  end;

  with ADOQuery1.DataSource.DataSet do
    if FieldByName('ULTIMAFECHA').IsNull then
      DateTimePicker1.Date := now
    else
      DateTimePicker1.Date := FieldByName('ULTIMAFECHA').AsDateTime;
end;
Un Saludo
Responder Con Cita
  #6  
Antiguo 07-06-2010
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
Perdón, faltan las comillas del final de la sql:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  if ADOConnection1.Connected then
    ADOConnection1.Close;

  with ADOQuery1 do
  begin
    SQL.Clear;

    SQL.Add('SELECT');
    SQL.Add('    MAX(FECHA) AS ULTIMAFECHA');
    SQL.Add('  FROM Personas');
    SQL.Add('  WHERE PERSONAS_ID = 1');

    Open;
  end;

  with ADOQuery1.DataSource.DataSet do
    if FieldByName('ULTIMAFECHA').IsNull then
      DateTimePicker1.Date := now
    else
      DateTimePicker1.Date := FieldByName('ULTIMAFECHA').AsDateTime;
end;
Un saludo
Responder Con Cita
  #7  
Antiguo 08-06-2010
yossi yossi is offline
Miembro
 
Registrado: abr 2010
Posts: 59
Poder: 15
yossi Va por buen camino
muchas gracias a ambos me sirvio de mucho su respuesta
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
From Select kverna Firebird e Interbase 4 26-11-2007 14:55:56
Problema conuna consulta select...not in (select ...) VRO Firebird e Interbase 2 11-08-2005 08:56:35
5 select de 5 tablas diferentes en un select solo sakuragi SQL 6 15-06-2005 18:57:06
Select anidado: Select from (select....) Malon SQL 2 14-10-2004 14:01:24
Select anidado ( Select from select ) Malon Firebird e Interbase 1 05-10-2004 04:14:38


La franja horaria es GMT +2. Ahora son las 03:22:16.


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