Ver Mensaje Individual
  #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
Reputación: 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