Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-02-2015
Avatar de jeremiselxi
jeremiselxi jeremiselxi is offline
Miembro
 
Registrado: ago 2008
Posts: 199
Poder: 16
jeremiselxi Va por buen camino
Smile Ejecucion de consulta de fechas con problemas

Buenas tardes.

Esperando se encuentren bien, expreso mi siguiente situación.

Estoy trabajando con D7 y SQLServer 2012.

Tengo una tabla llamada fechas y tiene la siguiente estructura:

Fecha date
Descripcion nvarchar(50)
No int

con la siguiente información:

Código:
Fecha	        Descripción    No
2015-01-01	Enero	    1
2015-02-01	Febrero	    2
2015-03-01	Marzo	    3
2015-04-01	Abril	            4
2015-05-01	Mayo	            5
2015-06-01	Junio	            6
2015-07-01	Julio	            7
2015-08-01	Agosto	    8
2015-09-01	Septiembre   9
2015-10-01	Octubre	   10
2015-11-01	Noviembre	   11
2015-12-01	Diciembre	   12

Además tengo una tabla llamada procedimientos y en la misma hay varios tipos de nóminas (Empleados fijos, vacaciones y licencias entre otras).

Adjunto la estructura:

No int
Descripcion_del_Procedimiento nvarchar(255)
Fecha date
Cantidad_de_registros int
Monto float


y algunos registros de ejemplo

Código:
Descripcion del¨Procedimiento	                Monto	        Cantidad_de_registros	Fecha
Generación de Nómina Bono Vacacional	562502.15	        38	                               23/01/2015
Generación de Nómina Empleados Fijos	52981362.56	2057	                               23/01/2015
Generación de Nómina Empleados Fijos	53163587.86	2060	                               23/12/2014
Generación de Nómina Bono Vacacional	0	                0	                               04/12/2014

El problema es este código que me esta dando dolor de cabeza:

Código Delphi [-]

procedure TForm1.Button1Click(Sender: TObject);
var
STRSQL: string;
begin


STRSQL := 'SET LANGUAGE Spanish; ' +
' select fechas.No,  datename(month, fechas.fecha) Fecha,'+

//Campo con la fecha escrita manual (2014-12-01)   y   (2015-01-31)
'   (select  sum(empcant.Cantidad_de_registros) from  Procedimientos empcant  where (datename(month, fechas.fecha) = datename(month, empcant.fecha)) and empcant.Descripcion_del_Procedimiento like ''%Nómina Empleados Fijos%'''+
' and (empcant.Fecha >= ''2014-12-01'' and empcant.Fecha <=   ''2015-01-31'' )) CantidadEmpleado, '+

//Campo con la fecha elegida con dos datetimepicker llamado fechadesde y fechahasta.

'   (select  sum(emp.monto) from  Procedimientos emp  where (datename(month, fechas.fecha) = datename(month, emp.fecha)) and emp.Descripcion_del_Procedimiento like ''%Nómina Empleados Fijos%'''+
' and (emp.Fecha >= :fechadesde and emp.Fecha <= :fechahasta)) MontoEmpleado '+



' from fechas fechas '+
' group by datename(month, fechas.fecha), fechas.No order by fechas.No asc ';




query_procedimientos.Close;
query_procedimientos.SQL.Clear;
query_procedimientos.SQL.Text := STRSQL;
query_procedimientos.Parameters.ParamByName('fechadesde').Value :=   FormatDateTime('yyyy-mm-dd', Fechadesde.date);
query_procedimientos.Parameters.ParamByName('fechahasta').Value :=   FormatDateTime('yyyy-mm-dd', fechahasta.date);
query_procedimientos.Open;
//' and Upper('+ComboBox1.Text+') LIKE Upper(' + QuotedStr('%' + txtBuscar.Text + '%') + ')' +



end;

Si ejecuto el sql anterior funciona a la perfección.

Cual es el problema?

Si pueden observar en el código SQL está esto:

Código SQL [-]
'   (select  sum(empcant.Cantidad_de_registros) from  Procedimientos empcant  where (datename(month, fechas.fecha) = datename(month, empcant.fecha)) and empcant.Descripcion_del_Procedimiento like ''%Nómina Empleados Fijos%'''+
' and (empcant.Fecha >= ''2014-12-01'' and empcant.Fecha <=   ''2015-01-31'' )) CantidadEmpleado, '+
en la cual las fechas están digitadas de forma manual y en el siguiente código están elegidos con los datetimepicker

Código SQL [-]
'   (select  sum(emp.monto) from  Procedimientos emp  where (datename(month, fechas.fecha) = datename(month, emp.fecha)) and emp.Descripcion_del_Procedimiento like ''%Nómina Empleados Fijos%'''+
' and (emp.Fecha >= :fechadesde and emp.Fecha <= :fechahasta)) MontoEmpleado '+


pero si cambio donde están las fechas digitadas manual por :fechadesde y :fechahasta me sale el siguiente error:


"Objeto Parameter mal definido. Se proporcionó información incompleta o incoherente."

Podrían ayudarme a solucionarlo?

Gracias de antemano por su ayuda.

Saludos.
__________________
Cristo te ama, ven a d él, ya k te espera con los brazos abiertos. Dios te bendiga mucho
Responder Con Cita
 



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
Problemas: consulta por fechas con parametros radiohead Conexión con bases de datos 0 06-08-2007 13:07:37
Problemas con una consulta de fechas tiagor64 SQL 6 08-02-2005 20:52:04
Consulta por fechas omy SQL 2 16-12-2003 19:40:14
Consulta de fechas YolandaM SQL 6 26-07-2003 21:10:34
Consulta con Fechas cmgenny SQL 8 20-06-2003 21:48:25


La franja horaria es GMT +2. Ahora son las 10:08:32.


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