Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Consultar Campo Fecha por Parametro utilizando ADOConexion (https://www.clubdelphi.com/foros/showthread.php?t=81442)

novato_erick 15-11-2012 01:02:43

Consultar Campo Fecha por Parametro utilizando ADOConexion
 
Hola a Todos:

Pasar de componente DBExpress a ADO es un paso que crei que seria sencillo.

Sucede que tengo una pequeña base de Dato en SQL Server 2005 en el que tengo que realizar una consulta por fecha seleccionada:

Tengo mi ADOQuery el cual en su propiedad String escribí lo siguiente:

Código SQL [-]
select userid, checktime from checkinout where checktime =:fecha

ahora en mi botón buscar practicamente hice esto:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
buscafecha : TDateTime;
begin
 buscafecha := DateTimePicker1.DateTime;
 ClientDataSet2.Close;
 with ADOQuery2 do
 begin
   Close;
   sql.Clear;
   sql.Add('select userid, checktime from checkinout where checktime =:fecha');// aquí no se si es lo correcto
   Parameters.ParamByName('fecha').Value := buscafecha;
   open;
 end;
 ClientDataSet2.Open;
end;

Pero al final solamente me activa mi ClientDataSet...


Alguna sugerencia

Saludos

novato_erick

Caral 15-11-2012 01:44:13

Hola
A que tienes conectado el adoquery?
Saludos

Caral 15-11-2012 01:50:09

Hola
No uso clientdataset, pero:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
 ClientDataSet2.Close;
 with ADOQuery2 do
 begin
   Close;
   sql.Text:= 'select userid, checktime from checkinout where checktime = :fecha'
   Parameters[0].Value := DateTimePicker1.DateTime;
   open;
   ClientDataSet2.Open;
 end;
 
end;
Saludos

novato_erick 15-11-2012 15:53:02

Hola Caral Gracias por responder:

Lo tengo conectado al componente ADOConnection1 y a que te refieres con:

Cita:

Caral dice:
Hola
No uso clientdataset, pero:
Saludos

novato_erick

novato_erick 15-11-2012 16:06:23

en mi Base de datos en SQL 2005 tengo en la Tabla CHECKINOUT CAMPO CHECKTIME guardado lo siguiente: 08/01/2012 09:20:11 a.m.

he notado que tal vez me hace falta la hora para traer la consulta idéntica pero es algo que no es posible ya que necesito que me muestre los datos específicamente en esa fecha independientemente la hora ya que son marcas de empleados realizados en un relog biometrico.


Saludos

novato_erick 15-11-2012 16:26:50

Bueno ya entendí cuando quisiste decir que no usas el ClientDataSet

bueno lo hice ahora de esta manera siguiendo las sugerencia en este linck: http://www.clubdelphi.com/foros/show...34&postcount=7

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
with ADOQuery3 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select userid, checktime from checkinout where checktime =:fecha');
    Parameters.ParamByName('fecha').Value:= FormatDateTime('dd/mm/yyyy',DateTimePicker2.Date);
    Open;
  end;
end;
Pero el resultado es el mismo... nada me trae jejejeje...


Saludos

novato_erick

jsc 20-11-2012 21:42:20

Cita:

Empezado por novato_erick (Mensaje 449594)
Bueno ya entendí cuando quisiste decir que no usas el ClientDataSet

bueno lo hice ahora de esta manera siguiendo las sugerencia en este linck: http://www.clubdelphi.com/foros/show...34&postcount=7

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
with ADOQuery3 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select userid, checktime from checkinout where checktime =:fecha');
    Parameters.ParamByName('fecha').Value:= FormatDateTime('dd/mm/yyyy',DateTimePicker2.Date);
    Open;
  end;
end;
Pero el resultado es el mismo... nada me trae jejejeje...


Saludos

novato_erick

hola
yo hice pruebas con este codigo y no me dio ningun tipo de problemas
Código:

procedure TForm1.Button5Click(Sender: TObject);
begin
  with ADOQuery1 do
  begin
      close ; sql.clear; parameters.clear ;
      sql.Add('SELECT * FROM TABLA1 WHERE FECHA = :fecha');
      parameters.ParamByName('fecha').value := formatdatetime('dd/mm/yyyy',datetimepicker1.Date);
      open;
  end;
end;

en ejemplos mas arriba tienes codigo
Código:

with ADOQuery2 do...
en este ultimo post el codigo es diferente
Código:

with ADOQuery3 do...
no se si esto se debe a pruebas que has hecho o te puede venir el problema de ahi si luego los grid apuntan a uno u otro Query
por otra parte se me ocurre que pruebes a hacer como en el ejemplo que te pongo
Código:

parameters.clear
quiza de otra consulta tengas algun parametro con el mismo nombre o algo y no ejecute bien o coja bien los valores
saludos,

novato_erick 20-11-2012 22:40:23

Hola Agradeciendo tu atención:

Realize tu ejemplo de igual manera solo activa el AdoQuery sin recibir nada.

Pero en SQL Server el campo checktime también posee hora.

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
  with ADOQuery3 do
    begin
     Close;
     SQL.Clear;
     Parameters.Clear;
     SQL.Add('select userid, checktime from checkinout where checktime =:fecha');
     Parameters.ParamByName('fecha').Value:= FormatDateTime('dd/mm/yyyy',DateTimePicker2.Date);
    Open;
   end;
end;

Saludos

novato_erick

jsc 21-11-2012 07:55:23

ese puede ser el problema entonces
buscamos una fecha sobre un campo que realmente almacena algo mas
me explico:
si buscamos en el campo algo que contenga formato 'dd/mm/yyyy' con
Código:

where fecha=:fecha
y al valor de
Código:

:fecha
le asignamos por ejemplo 21/11/2012 no devolvera nada si en realidad en la base de datos el dato almacenado es por ejemplo:
Código:

21/11/2012 07:38:00
para este caso se me ocurre que pruebes a sustituir el codigo por el siguiente que te pongo
Código:

procedure TForm1.Button5Click(Sender: TObject);
begin
  with ADOQuery1 do
  begin
      close ; sql.clear; parameters.clear ;
      sql.Add('SELECT * FROM TABLA1 WHERE FECHA LIKE :fecha');
      parameters.ParamByName('fecha').value := formatdatetime('dd/mm/yyyy',datetimepicker1.Date)+'%' ;
      open;
  end;
end;

la clave esta en que utilices
Código:

WHERE FECHA LIKE...
y que acomodes los comodines
Código:

%
segun el formato en que se guarda el dato en la base de datos para que te devuelva el resultado
en el ejemplo te devolvera cualquier cosa que coincida con la fecha del datetimepicker + cualquier cosa detras

espero haberte ayudado
saludos,


La franja horaria es GMT +2. Ahora son las 10:40:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi