Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   capturar y mostrar registro dado entre 2 fechas (https://www.clubdelphi.com/foros/showthread.php?t=86249)

maxi915 06-07-2014 05:28:51

capturar y mostrar registro dado entre 2 fechas
 
hola, una vez mas consultando por aca..
Necesito dado 2 fechas (desde y hasta) enviadas por parametro de tipo string, completar una stringgrid, este es el proceso que realize, pero no obtengo resultados, me trae la grilla vacia...

cuando fechaPago este entre esas fechas, obtener nombre apellido y telefono de ese cliente...alguna ayudita?gracias!!!

Código Delphi [-]
procedure buscarPagos(queryCliente:TADOQuery; desde,hasta:string; grilla:TStringGrid);
var
  i:Integer;
begin
with queryCliente do
    begin
      SQL.Clear;
      SQL.Add('Select * From Clientes Where FechaPago Between '+Desde+' and '+Hasta);
      Open;
          i:=1;
          grilla.RowCount:=RecordCount+1;
          while not Eof do
            begin
              grilla.Cells[0,i]:=fieldByName('nombre').AsString;
              grilla.Cells[1,i]:=fieldByName('apellido').AsString;
              grilla.Cells[2,i]:=fieldByName('telefono').AsString;
              i:=i+1;
              Next;
            end;
      ExecSQL
    end;
end;

ecfisa 06-07-2014 06:06:20

Hola maxi915.

Intenta de este modo:
Código Delphi [-]
procedure buscarPagos(queryCliente: TADOQuery; const desde, hasta: string; grilla: TStringGrid);
var
  i: Integer;
begin
  with queryCliente do
  begin
    SQL.Clear;
    SQL.Add('SELECT * FROM CLIENTES');
    SQL.Add('WHERE FECHAPAGO BETWEEN :DESDE AND :HASTA');
    Parameters.ParamByName('DESDE').Value:= desde;
    Parameters.ParamByName('HASTA').Value:= hasta;
    Open;
    grilla.RowCount:=RecordCount+1;
    i:=1;
    while not Eof do
    begin
      grilla.Cells[0,i]:=fieldByName('NOMBRE').AsString;
      grilla.Cells[1,i]:=fieldByName('APELLIDO').AsString;
      grilla.Cells[2,i]:=fieldByName('TELEFONO').AsString;
      Inc(i);
      Next;
    end;
    Close;
   // ExcecSQL;  (*) Error
  end;
end;
(* ) El método ExecSQL sólo se usa en consultas que no devuelven un cursor de datos (por ej.: INSERT, DELETE, etc.)

Saludos :)

maxi915 06-07-2014 06:10:31

graciias amigo, veo que la tenes muy clara con delphi y access, ya estoy probando y te comento.

No quiero abusar de su ayuda pero es lo unico que me queda como solucion

ecfisa 06-07-2014 06:22:06

Hola maxi915.

En realidad no conozco mucho de Access :o, en general consulto previamente los pormenores esa bd.

Pero en lo que concierne al método ExcecSQL es así para todos los componentes que conozco y la mayoría de los motores de base de datos, en líneas generales, se apegan a la sintáxis estándar SQL.

Casimiro te sugirió la lectura de La cara oculta de Delphi 4 aquí. Y es un excelente consejo, todas estas dudas las vas a evacuar con su lectura. ;)

Saludos :)

maxi915 06-07-2014 06:32:17

Me alegro entonces que todos los motores de busqueda se apegen a algo por el estilo, en cuanto tenga un ratito le voy a dar una buena leida a la cara oculta, ya pruebo eso y te comento, porque estaba con otro modulo que por suerte salio muy bien con unos with añidados por asi decirlo

maxi915 06-07-2014 06:40:08

Como de costumbre funciono a la perfeccion!

un millon de gracias!!!^\||/^\||/^\||/:D:D:D

maxi915 06-07-2014 07:00:26

ese mismo proceso pero que no este en ese rango de fechas se podra hacer? estoy leyendo un poco para ver si veo como hacerlo

Casimiro Notevi 06-07-2014 10:18:22

Imagina a un cirujano que está operando pacientes y constantemente está haciendo preguntas en los foros sobre lo que tiene entre manos. Los compañeros médicos le aconsejan que antes de seguir operando personas que lea los libros como "La cara oculta de la cirugía" y que estudie medicina... y el cirujano, mientras tiene abierto en canal a un paciente y con su corazón en la mano, dice:
Cita:

Empezado por maxi915 (Mensaje 478757)
en cuanto tenga un ratito le voy a dar una buena leida a la cara oculta

Eso estás haciendo tú. repites y repites y vuelves a repetir la misma pregunta, donde solamente cambia un campo por otro o una variable por otra, todas las preguntas son iguales, en todas se te ha aconsejado lo mismo, pero vuelves a hacer otra nueva pregunta que es exactamente igual que las preguntas anteriores.
Eso demuestra solamente una cosa, que copias y pegas el código que te dan, lo ajustas y listo, no aprendes, pero no haces por aprender.
Si te vas a dedicar a la panadería, abogado, cría de patos, construcción de puentes, etc. entonces está bien, pero si te vas a dedicar a la programación... lo llevas crudo ;)

maxi915 06-07-2014 19:27:11

intento aprender capo!

Casimiro Notevi 06-07-2014 20:19:11

Cita:

Empezado por maxi915 (Mensaje 478764)
intento aprender capo!

Dice el refrán: "Para saber, viajar y leer"
En este caso sobra "viajar", solamente queda: leer :)

Después de leer ese libro, tus ideas cambiarán totalmente y verás las cosas de otra manera, te lo aseguro.


La franja horaria es GMT +2. Ahora son las 00:28:23.

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