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 27-06-2008
Avatar de Emilio_82
Emilio_82 Emilio_82 is offline
Miembro
 
Registrado: may 2008
Ubicación: Concepcion del Uruguay - Entre Rios - Argentina
Posts: 16
Poder: 0
Emilio_82 Va por buen camino
Problemas con las Fechas en SQL

Hola, tengo el siguiente problema no se si les ha pasado:

primero les pongo la siguiente situacion

Tengo una tabla Pedidos.DB que tiene los campos Fecha_Alta y Fecha_Cancel del tipo DATE y son PARADOX 7.

Tengo la tabla y una Query en un Datamodule.

La Query no carga ninguna SQL sino que lo hago x codigo con el add
y lo tengo en un procedure.

Código:
procedure EjecutaSQL(var NroProv, Estd, FAltaA, FAltaB, FCancelA, FCancelB: String);
Begin
  with ModuloDB.Q_Pedidos do begin
  Close;

    with SQL do
    Begin
       clear;
       add('SELECT *  FROM Pedidos A');
       add('LEFT JOIN Proveedores B ON A.Nro_Proveed=B.Nro_Proveed');
       add('WHERE A.Nro_Pedido > 0');

       if (FAltaA<>'') AND (FAltaB<>'') then
       add('AND Fecha_Alta BETWEEN '+QuotedStr(FAltaA)+' AND '+QuotedStr(FAltaB));

       if (FCancelA<>'') AND (FCancelB<>'') then
       add('AND Fecha_Cancel BETWEEN '+QuotedStr(FCancelA)+' AND '+QuotedStr(FCancelB));
    end;

  RequestLive:= true;
  Open;
  end;
End;
Ahora bien desde otro procedure propio del form con un DateTimePicker le permito elegir las FAltaA y FAltaB por ejemplo:

Código:
procedure TForm_Buscar_Pedidos.Btn_BuscarClick(Sender: TObject);
var
NroProv, Estd, FAltaA, FAltaB, FCancelA, FCancelB: String;
begin
FAltaA:='';
FAltaB:='';
FCancelA:='';
FCancelB:='';
NroProv:='';
Estd:='';

//Comienza a comprobar los tipos de busqueda mediante los CheckBox
  if CBox_FAlta.Checked = true then
  begin
    FAltaA:=DateToStr(DTP_Fecha_AltaA.Date);
    FAltaB:=DateToStr(DTP_Fecha_AltaB.Date);
  end;

  if CBox_FCancel.Checked = true then
  begin
    FCancelA:=DateToStr(DTP_Fecha_CancelA.Date);
    FCancelB:=DateToStr(DTP_Fecha_CancelA.Date);
  end;

EjecutaSQL(NroProv, Estd, FAltaA, FAltaB, FCancelA, FCancelB);

end;
Ni se fijen en Estd ni en NroProv xq esos andan solo puse el codigo que genera el problema.

EL PROBLEMA ES EL SIGUIENTE esto me tira un error que me dice algo asi:
Cita:
Project xxxxxx.exe raised exception class EDBEngineError with message 'Type Mismatch in expression.'. Process Stoped. Use Step or Run to Continue.
El caso es que antes de llamar a EjecutaSQL las Fechas del DateTimePicker
estan convertidas a String con el DateToStr.

Asi que no entiendo xq no anda.

Si alguien sabe que puede pasar y como solucionarlo me avisa.

Desde Ya. Muchas Gracias.
Responder Con Cita
  #2  
Antiguo 27-06-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
puede que el problema esté en el formato de las fechas. Lo mejor sería utilizar parámetros, con eso te evitas el preocuparte por el formato.

Yo cambiaría las siguientes líneas:

Código Delphi [-]
procedure EjecutaSQL(var NroProv, Estd: String; FAltaA, FAltaB, FCancelA, FCancelB: DateTime);
...
       add('AND Fecha_Cancel BETWEEN :FechaA AND :FechaB');
...
 ParamByName('FechaA').AsDateTime := FechaA;
 ParamByName('FechaA').AsDateTime := FechaB;
 // o si usas ADO
 Parameters.ParamByname('FechaA').Value := FechaA;
..
end;...


.....
procedure TForm_Buscar_Pedidos.Btn_BuscarClick(Sender: TObject);
var
NroProv, Estd: String;
FAltaA, FAltaB, FCancelA, FCancelB: DateTime;
.....
    FAltaA:=DTP_Fecha_AltaA.Date;
    FAltaB:=DTP_Fecha_AltaB.Date;
.....

Lo mismo para las "cancel"....
__________________

Responder Con Cita
  #3  
Antiguo 01-07-2008
Avatar de Emilio_82
Emilio_82 Emilio_82 is offline
Miembro
 
Registrado: may 2008
Ubicación: Concepcion del Uruguay - Entre Rios - Argentina
Posts: 16
Poder: 0
Emilio_82 Va por buen camino
Gracias

Gracias funciona barbaro.
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
Problemas con fechas CFPA86 Varios 2 22-12-2006 05:54:55
problemas con fechas alfil123 Varios 6 04-12-2006 18:31:45
problemas con las fechas majosf Varios 4 15-09-2005 02:42:37
problemas Fechas (now) jmlifi Varios 6 07-04-2005 18:57:18
Problemas con las fechas NuncaMas Varios 2 15-02-2005 17:33:03


La franja horaria es GMT +2. Ahora son las 16:15:29.


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