Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-12-2010
userdelphi userdelphi is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 15
Poder: 0
userdelphi Va por buen camino
quiero filtrar una fecha en un dateTimePicker1

quiero filtrar una fecha en un dateTimePicker1
hola,he leido muchos foros aca adentro y no logro encontrar mi error, necesito ayuda, primero, uso BD access el campo "fecha" es de fecha/hora, utilizo AdoQuery en delphi, un dateTimePicker, un dbgrid y para indicar el filtro seria eligiendo desde el dateTimePicker y luego presionar un button.

intente cambiar formato, ya q en mi BD se almacena dd/mm/aaaa y en el dbgrid se ve mm/dd/aaaa, eso me funciono, ya que el valor lo hacia copiar en un edit, tamb intente crear una variable vfecha y darle el valor del dateTimePicker convirtiendolo, pero se me rompe en la condicion q le doy para el sql.
he leido de hacer parametros, eso nunca lo vi en clases, me explicarian como se asigna y si se debe declarar en la seccion VAR???

aca les mando una parte del codigo.... no se asusten ya que lo que he encontrado lo ponia ahi, y comentaba y descomentaba.

si alguien me ayuda a ordenar eso se lo agradezco,
de ser asi, aun denme el fragmento de codigo y si debo declarar algo en la seccion var o donde , gracias

esto es: (hoy un desorden jaja)

Código Delphi [-]
procedure TFormListadoVentas.ButtonfiltrofechaClick(Sender: TObject);
var
  vFecha:String;
begin
 //ShortDateFormat:= 'd/m/yyyy';
  vFecha:=FormatDateTime('dd/mm/yyyy',dateTimePicker1.DateTime);//Componente Month Calendar
//el formato lo puedes cambiar a dd/mm/yyyy o mm/dd/yyyy
editfiltrofecha.Text := vfecha;

formlistadoVentas.ADOQueryFiltro.Active := false;
// Utilizamos quotedString para ponerle comillas simple a la cadena (en el caso que sea de tipo string   )
  FormListadoVentas.AdoQueryFiltro.SQL.Text := 'SELECT * FROM tVentas WHERE Fecha ='+quotedstr(xfecha);
    ParamByName('xFecha').AsDate := DateTimePicker1.Date;


formlistadoVentas.ADOQueryFiltro.Active := true;

FormListadoVentas.dbgridVentas.DataSource := datasourceFiltro;
FormListadoVentas.DBNavigator1.DataSource := datasourceFiltro;
end;

se los agradezco, como veran saque mucho de aca, y aun los comentarios de quien posteo estan , help me, please

Millones de Gracias ,

Última edición por Casimiro Notevi fecha: 07-12-2010 a las 14:15:52. Razón: Poner etiquetas [delphi] ... [/delphi]
Responder Con Cita
  #2  
Antiguo 07-12-2010
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
Código Delphi [-]
procedure TFormListadoVentas.ButtonfiltrofechaClick(Sender: TObject);
begin
 
 with formlistadoVentas.ADOQueryFiltro do begin
  If Active then Close;
  SQL.Clear;
  SQL.Add('SELECT Fecha, ID, Nombre, etc'); //no es recomendable usar Select *... es preferible que escribas los campos que necesitas
  SQL.Add('FROM tVentas');
  SQL.Add('WHERE Fecha = :fecha');
  Parameters.ParamByName('Fecha').AsDate := DateTimePicker1.Date;
  Open;
 end; //with

 FormListadoVentas.dbgridVentas.DataSource := datasourceFiltro; // estos no se para que son
 FormListadoVentas.DBNavigator1.DataSource := datasourceFiltro; // ??
end;

eso debería funcionar...
__________________


Última edición por ContraVeneno fecha: 07-12-2010 a las 20:00:38.
Responder Con Cita
  #3  
Antiguo 07-12-2010
userdelphi userdelphi is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 15
Poder: 0
userdelphi Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
Código Delphi [-]procedure TFormListadoVentas.ButtonfiltrofechaClick(Sender: TObject); begin with formlistadoVentas.ADOQueryFiltro do begin If Active then Close; SQL.Clear; SQL.Add('SELECT Fecha, ID, Nombre, etc'); //no es recomendable usar Select *... es preferible que escribas los campos que necesitas SQL.Add('FROM tVentas'); SQL.Add('WHERE Fecha = :fecha'); Parameters.ParamByName('Fecha').AsDate := DateTimePicker1.Date; Open; end; //with FormListadoVentas.dbgridVentas.DataSource := datasourceFiltro; // estos no se para que son FormListadoVentas.DBNavigator1.DataSource := datasourceFiltro; // ?? end;


eso debería funcionar...

Amigo ContraVenenno. he copiado tal cual tu codigo y lo pegue en mi unidad en el procedimiento del buttonfiltro que tengo.

me da un error en lo q a parametros se refiere

Error: Undeclared identifier: 'As Date'
señalandome esta linea:
Parameters.ParamByName('Fecha').AsDate := DateTimePicker1.Date;

me ayudarias por favor, te comento, yo jamas vi esto de parameters, no se lo que es, y como se declaran. no se si debo declarar algo mas en la seccion interface, public, o var.

te repito, copie y pegue tu codigo no le agregue ni quite nada.

con respecto a :
FormListadoVentas.dbgridVentas.DataSource := datasourceFiltro; // estos no se para que son
FormListadoVentas.DBNavigator1.DataSource := datasourceFiltro; // ??

yo utilizo el adoqueryfiltro, un datasourcefiltro, y utilizo un dbgrid y dbnavigator, donde este filtro que queremos hacer lo muestre en ese dbgrid, habilitandome los botones del navigator, para navegarlo.


Millones de gracias.
Responder Con Cita
  #4  
Antiguo 07-12-2010
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
el error que te muestra es porque no reconoce "AsDate" y no lo reconoce por que no existe.

Aquí es done te tendría que decir que podrías presionar F1 para que consultaras la ayuda... o que buscaras en google... o en Delphi basics... pero tengo que admitir que es más sencillo que te diga:

en lugar de "asDate", ponle "AsDateTime"
y con eso se arregla.

En otras palabras, si realmente quieres entrar al mundo de la programación, te serviría de mucho que empezaras a conocer las formas en las que puedes encontrar la solución a estos problemitas sencillos por tu cuenta. Para todo lo demás, existe ClubDelphi.

Saludos cordiales.
__________________

Responder Con Cita
  #5  
Antiguo 07-12-2010
userdelphi userdelphi is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 15
Poder: 0
userdelphi Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
el error que te muestra es porque no reconoce "AsDate" y no lo reconoce por que no existe.

Aquí es done te tendría que decir que podrías presionar F1 para que consultaras la ayuda... o que buscaras en google... o en Delphi basics... pero tengo que admitir que es más sencillo que te diga:

en lugar de "asDate", ponle "AsDateTime"
y con eso se arregla.

En otras palabras, si realmente quieres entrar al mundo de la programación, te serviría de mucho que empezaras a conocer las formas en las que puedes encontrar la solución a estos problemitas sencillos por tu cuenta. Para todo lo demás, existe ClubDelphi.

Saludos cordiales.

----------------------


Muchas Gracias por tu preocupacion y tu ayuda,

te cuento que por razones de tiempo que tengo que presentar este trabajo mañana no he buscado info en goolge, y el F1 lamentablemente en wind 7 no me funciona. es por eso que busque la manera rapida de preguntar por aca antes de buscar y leer varios tutoriales.

te cuento que cambie a AsDateTime, y aun me arroja el mismo error solo que ahora con asdatetime.

de todas formas gracias por tu preocupacion de nuevo.
Luego cuando me libere de tiempo de las demas materias que tamb debo preparar, le meto pilas a leer un poco acerca de parameters, que ni idea tengo como funciona y que hace esta linea: Parameters.ParamByName('Fecha').AsDate := DateTimePicker1.Date;


Saludos. Muchas Gracias.
Responder Con Cita
  #6  
Antiguo 08-12-2010
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
No recordaba que con los componentes ADO no puedes usar "AsDateTime", "AsInteger", "AsFloat", etc para los parámetros...


En lugar de "AsDate", debe de ser "Value":

Parameters.ParamByName('Fecha').Value := DateTimePicker1.Date;
__________________

Responder Con Cita
  #7  
Antiguo 08-12-2010
userdelphi userdelphi is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 15
Poder: 0
userdelphi Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
No recordaba que con los componentes ADO no puedes usar "AsDateTime", "AsInteger", "AsFloat", etc para los parámetros...


En lugar de "AsDate", debe de ser "Value":

Parameters.ParamByName('Fecha').Value := DateTimePicker1.Date;


------------------

Gracias agregandole Value , ahora si me compila , pero en la ejecucion elijo una fecha en el datetimepicker (que se que existe en mi tabla venta de mi bd) y al darle clic en el boton para que ejecute el procedimiento se me rompe la aplicacion dandome este mensaje:

no se han especificado valores para algunos de los parametros requeridos

Por solo probar , converti el datetimepicker1 en string datetostr();

Parameters.ParamByName('Fecha').Value := DateTimePicker1.Date;

le agrege al principio del procedimiento:
ShortDateFormat:= 'dd/mm/yyyy';, pero en todos los caso me da el mismo error cuando se rompe.


Muchas Gracias nuevamente.
Responder Con Cita
  #8  
Antiguo 08-12-2010
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
si tienes definido el campo de la fecha, como fecha, no debería haber problemas...

si la fecha está como cadena, entonces el valor del parámetro lo tienes que enviar como cadena, con FormatDateTime por ejemplo...
__________________

Responder Con Cita
  #9  
Antiguo 08-12-2010
userdelphi userdelphi is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 15
Poder: 0
userdelphi Va por buen camino
Smile

Con respecto al error que mencione antes, ese lo corregi, tenia un error al indicar los campos de la tabla, ahora ya no me sale el error anterior, sino que se rompe el programa y me dice lo siguiente:

Proojet [miproyecto.exe] raised exception class EOleException whit message 'No coinciden los tipos de datos en la expresion de criterios'.

Yo me preguntaba quizas el codigo que me dieron ande bien pero mi error sea en como hice la base de datos Access,
por eso mire nuevamente, y en mi tabla 'tventas' el campo 'Fecha' es de tipo de datos: 'Fecha/Hora' y en las propiedades de formato esta como 'Fecha Corta' (dd/mm/aaaa) la verdad no se como continuar, y creo yo que debe ser tan sencillo.

gracias de nuevo,
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
Filtrar Ztable por fecha. forgiveness Conexión con bases de datos 4 03-02-2010 16:33:57
Filtrar por dos Fecha???? Zakio14 Firebird e Interbase 6 23-02-2008 03:00:04
como filtrar por fecha anubis Firebird e Interbase 5 14-02-2008 10:52:43
Solo quiero la hora de un campo Fecha/Hra en Qreport suseLinux Impresión 2 12-12-2006 02:37:39
Filtrar fecha al vuelo JorgeBec Varios 1 04-11-2003 19:33:29


La franja horaria es GMT +2. Ahora son las 18:06:17.


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