Jump to content


Photo

filtro de tabla


  • Please log in to reply
5 replies to this topic

#1 marthamelo

marthamelo

    Advanced Member

  • Miembros
  • PipPipPip
  • 106 posts
  • LocationA Coruña

Posted 30 August 2011 - 10:41 AM

Hola, tengo una tabla sql  la cual contiene un campo datetime. Deseo filtrar esa tabla atreves de ese campo bien cuando veo mi tabla con sql management  los datos de dicho campo tienen el siguiente aspecto  (fecha y hora) ej: (2011/08/30 00:00:00.000). bien cuando filtro la tabla le introduzco el valor mediante un( jvdateedit) y al filtrar me da el siguiente error.

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

Y este es el código que utilizo para filtrar


delphi
  1. if jvdateedit2.Text<>'' then
  2.         begin
  3.           datamodule3.ADOQcomb.SQL.Clear;
  4.           datamodule3.ADOQcomb.SQL.Text:='select * from TABLA where FECHA ='+(char($27)+jvdateedit1.Text+(char($27)));
  5.           datamodule3.ADOQcomb.Active:=true;
  6.         end



Por favor una vez más gracias
  • 0

#2 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 30 August 2011 - 10:55 AM

Es preferible que para eso uses parametros




delphi
  1. if jvdateedit2.Text<>'' then
  2.         begin
  3.           datamodule3.ADOQcomb.SQL.Clear;
  4.           datamodule3.ADOQcomb.SQL.Text:='select * from TABLA where FECHA = :fecha';
  5.           datamodule3.ADOQcomb.parambyname('fecha').asdate := DateEdit1.Date;
  6.           datamodule3.ADOQcomb.Active:=true;
  7.         end


  • 0

#3 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 30 August 2011 - 11:04 AM

Hola
O asi:


delphi
  1. if jvdateedit2.Text<>'' then
  2.         begin
  3.           datamodule3.ADOQcomb.SQL.Clear;
  4.           datamodule3.ADOQcomb.SQL.Text:='select * from TABLA where FECHA = :fecha';
  5.           datamodule3.ADOQcomb.parambyname('fecha').Value := StrToDate(jvdateedit1.Text);
  6.           datamodule3.ADOQcomb.Active:=true;
  7.         end


Saludos
  • 0

#4 marthamelo

marthamelo

    Advanced Member

  • Miembros
  • PipPipPip
  • 106 posts
  • LocationA Coruña

Posted 30 August 2011 - 11:22 AM

hola caral y edurco.l Gracias por la rapidez  he probado las variantes y en las dos me da el error  que el parambyname no está declarado  que hago?
  • 0

#5 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 30 August 2011 - 11:37 AM

Hola
Eso es por que tu componente no lo acepta.
Prueba asi:


delphi
  1. if jvdateedit2.Text<>'' then
  2.         begin
  3.           datamodule3.ADOQcomb.SQL.Clear;
  4.           datamodule3.ADOQcomb.SQL.Text:='select * from TABLA where FECHA = :fecha';
  5.           datamodule3.ADOQcomb.Parameters[0].Value := StrToDate(jvdateedit1.Text);
  6.           datamodule3.ADOQcomb.Active:=true;
  7.         end


Saludos
  • 0

#6 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6301 posts
  • LocationArgentina

Posted 31 August 2011 - 10:04 PM

Hola,


Caral en realidad no es que el componente no acepte. Si puede trabajar con parámetros... el asunto es que lo hace de forma diferente. la tecnología ADO está basada en la clase TParameter mientras que el RESTO de las suites de componentes de acceso a base de datos (DBE, DBX, IBX, etc) de Delphi están basadas en TParams.
A como está definido el DataSet para ADO carece de la propiedad ParamByName(), y debe hacerse por medio de .Parameters[]. Todo esto debido a la estructura de la tecnología ADO/ODBC que definió Microsoft.


Saludos,
  • 0




IP.Board spam blocked by CleanTalk.