Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Quiebre por fecha en reporte (https://www.clubdelphi.com/foros/showthread.php?t=73810)

oscarac 18-05-2011 04:41:59

Quiebre por fecha en reporte
 
buenas noches....

estoy haciendo un reporte en cual debe quebrar por fecha, el problema que tengo es que las fechas me las captura asi

Cita:

11/05/2011 14:24:00
11/05/2011 14:24:00
11/05/2011 14:24:00
11/05/2011 14:26:00
11/05/2011 14:26:00
11/05/2011 14:26:00
11/05/2011 14:28:00
Entonces en el reporte coloque una banda qrGroup en la cual puse la expresion qryConsumo.fechaDoc

el asunto es que me muestra en 3 grupos (cuando deberia ser 1), me esta considerando la hora tambien...

como puedo hacer para que en la consulta me salga solo la fecha y no la hora?

en la tabla (MS SQL SERVER 2000) tengo el campo en smalldatetime

alguna sugerencia?

gracias

Caral 18-05-2011 04:55:04

Hola
Probaste Display format?
Saludos

oscarac 18-05-2011 04:56:47

si, ya probe con DisplayFormat

este es el query que hago

Código Delphi [-]
 
Select C.Tdc, C.Doc, C.f_Doc, C.Hora, C.Aux, T.Descl As Trabajador, C.TOT, A.Descl As Producto 
from (((tblConsumoC C 
Left Join tblConsumoD D on (C.TDC = D.TDC and C.DOC = D.DOC)) 
Left Join tblTrabajador T on C.Aux = T.KOD) 
Left Join TblArticulo A on D.KOD = A.KOD) 
Where C.f_doc >= '01/05/2011' and C.f_doc <= '17/05/2011'
Order by C.AUX, C.f_DOC

quiza en el query deba truncar algo?

Caral 18-05-2011 04:59:51

Hola
No veo nada raro en el select, me parece que el asunto esta en como se guarda la fecha y como se muestra.
Como usaste el display format?, en donde ?.
Saludos

oscarac 18-05-2011 05:02:34

el select no tiene nada de malo, es mas me muestra la informacion pero como mencione antes, me la muestra con hora, me gustaria que solo me muestre la fecha

el displayformat lo use en el campo del query

Caral 18-05-2011 05:04:45

Hola
Intenta algo como esto en el evento beforeopen del query:
Código Delphi [-]
procedure TRFactura.ADOQuery1BeforeOpen(DataSet: TDataSet);
begin
   AdoQuery1Fecha.DisplayFormat := 'dd        mm           yyyy';     
end;
A ver que pasa.
Saludos

oscarac 18-05-2011 05:10:40

mmmm
no no funciona...

osea basicamente quiero que el "quiebre" (qrGroup -> expresion = qryConsumoTrabajador.f_Doc)

solo me coja la fecha y no la hora

Caral 18-05-2011 05:13:45

Hola
Trataste con ShortDateFormat antes del query ?.
Código Delphi [-]
ShortDateFormat := 'yyyy/mm/dd';
Saludos

oscarac 18-05-2011 05:18:53

si ya probe y nada...

que raro

Caral 18-05-2011 05:25:31

Hola
Se menciona que la fecha en sql server se guarda en formato fecha hora.
Tambien se dice que se puede separar al ser mostrado como float.
El asunto es mostrar el dato por medio de un parametro con el uso de INT()
Segun entiendo.
Saludos

oscarac 18-05-2011 05:30:54

buscando en el internet encontre una solucion...
la coloco aqui quiza a alguien le pueda ayudar

Código Delphi [-]
 
Select C.Tdc, C.Doc, dbo.SoloFecha(C.f_Doc) As f_DOC, C.Hora, C.Aux, T.Descl As Trabajador, C.TOT, A.Descl As Producto 
from (((tblConsumoC C 
Left Join tblConsumoD D on (C.TDC = D.TDC and C.DOC = D.DOC)) 
Left Join tblTrabajador T on C.Aux = T.KOD) 
Left Join TblArticulo A on D.KOD = A.KOD) 
Where C.f_doc >= '01/05/2011' and C.f_doc <= '17/05/2011' 
order by C.Aux, c.f_doc

y la funcion soloFecha es como sigue

Código SQL [-]
SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO
ALTER  FUNCTION dbo.SoloFecha(@Fecha datetime)
RETURNS datetime AS  
BEGIN 
    declare @FechaAux datetime
    
    set @FechaAux = @Fecha
    set @FechaAux = dateAdd(hh, -datePart(hh, @Fecha), @FechaAux)
    set @FechaAux = dateAdd(mi, -datePart(mi, @Fecha), @FechaAux)
    set @FechaAux = dateAdd(ss, -datePart(ss, @Fecha), @FechaAux)
    set @FechaAux = dateAdd(ms, -datePart(ms, @Fecha), @FechaAux)
    return @FechaAux
END
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO


eso me jala solo las fechas.....:p:p:p:p

Caral 18-05-2011 05:33:21

Hola
Me alegro que lo solucionaras.
Esta podria ser otra solucion:
Código Delphi [-]
var Fecha1, Fecha2: TDateTime;
begin
Fecha1:= 01/05/2011;
Fecha2:= 17/05/2011;
TuQuery.Sql.Text:='
Select C.Tdc, C.Doc, C.f_Doc, C.Hora, C.Aux, T.Descl As Trabajador, C.TOT, A.Descl As Producto 
from (((tblConsumoC C 
Left Join tblConsumoD D on (C.TDC = D.TDC and C.DOC = D.DOC)) 
Left Join tblTrabajador T on C.Aux = T.KOD) 
Left Join TblArticulo A on D.KOD = A.KOD) 
Where C.f_doc >= :f1 and C.f_doc <= :f2
Order by C.AUX, C.f_DOC'
TuQuery.Parameters[0].AsDateTime := INT(Fecha1.Date);
TuQuery.Parameters[1].AsDateTime := INT(Fecha2.Date);
end;
Saludos


La franja horaria es GMT +2. Ahora son las 04:41:55.

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