Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-04-2006
maravert maravert is offline
Miembro
 
Registrado: jul 2004
Ubicación: Xalapa, México
Posts: 158
Poder: 20
maravert Va por buen camino
Filtrar una tabla con 2 rangos

Hola a todos ustedes, espero puedan ayudarme:

Estoy haciendo un programa para filtrar una tabla (Ventas.db) donde tiene entre otros campos: fecha_doc, importetotal, etc.

El usuario va a poner de que fecha a que fecha quiere el reporte, para lo cual utilizo un control edit1.tex para la fechainicial y un edit2.text para la fechafinal.

La idea es al dar los 2 rangos filtre y se imprima la informaciòn con un QuickReport .

El programa de la Unidad 1 es la siguiente:


Código Delphi [-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
fecha1, fecha2 : string;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
fecha1 := edit1.text;
fecha2 := edit2.text;
Form2.show;
end;

end.








Cuando el usuario da click en el boton se carga la unidad 2 y me dice que no encuentra la variable fecha1 que es la fechainicial, lo que sè es que para que se pasen las variables de una unidad a otra se tiene que declarar la unidad en


Código Delphi [-]
implementation
uses Unit2;l





El codigo de la unidad 2 es el siguiente




Código Delphi [-]
unit Unit2;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
StdCtrls, ExtCtrls, Forms, QuickRpt, QRCtrls, DB, DBTables,Unit1;
type
TForm2 = class(TForm)
QuickRep1: TQuickRep;
PageFooterBand1: TQRBand;
QRExpr1: TQRExpr;
ColumnHeaderBand1: TQRBand;
DetailBand1: TQRBand;
QRLabel1: TQRLabel;
QRExpr2: TQRExpr;
QRLabel2: TQRLabel;
QRExpr3: TQRExpr;
QRLabel3: TQRLabel;
QRExpr4: TQRExpr;
QRLabel4: TQRLabel;
QRExpr5: TQRExpr;
QRLabel5: TQRLabel;
QRExpr6: TQRExpr;
QRLabel6: TQRLabel;
QRExpr7: TQRExpr;
QRLabel7: TQRLabel;
QRExpr8: TQRExpr;
Table1: TTable;
procedure FormActivate(Sender: TObject);
private
end;
var
Form2: TForm2;
implementation
{$R *.DFM}
procedure TForm2.FormActivate(Sender: TObject);
var
str : string;

begin
str := 'fecha_doc >= fecha1' and 'fecha_doc <= fecha2';
table1.Filter := str;
table1.Filtered := True;
quickrep1.Preview;
end;










Siempre me dice que no encuentra la variable fecha1, espero que alguien me pueda ayudar a resolver este problema o decirme otra manera de hacerlo.

Gracias por su apoyo.

Alejandro Maravert
Responder Con Cita
  #2  
Antiguo 30-04-2006
pfsoft pfsoft is offline
Miembro
 
Registrado: ene 2004
Ubicación: Cádiz - España
Posts: 24
Poder: 0
pfsoft Va por buen camino
Vayamos por partes:


"Cuando el usuario da click en el boton se carga la unidad 2 y me dice que no encuentra la variable fecha1 que es la fechainicial, lo que sè es que para que se pasen las variables de una unidad a otra se tiene que declarar la unidad en


Código Delphi [-]
implementation
uses Unit2;l"

Esto no es para que una variables de Unit1 se pueda utilizar en Unit2. Es para poder acceder a Unit2 desde Unit1, esto es, poder llamar al formulario de Unit2, poder llamar a alguna función o procedimiento de Unit2 desde Unit2.

Por otra parte el error que te da de fecha1 variable no encontrada es debido a que cuando pones ' ..... >= fecha1' la sentencia SQL interpreta está comparando la parte izquierda con una supuesta variables fecha1, cuando lo que tendrías que poner sería '.....>='+fecha1

Y para pasar el valor de fecha1 y fecha2 a Unit2, una opción es declarar fecha1 y fecha2 en el public de la interface seccion del type del Form en Unit2, NO en Unit1.

P.E.

En Unit1 pondrías

Application.CreateForm(frmForm2, TForm2);
with frmForm2 do
try
fecha1 := edFecha1.text;
fecha2 := edFecha2.text;
ShowModal;
finally;
Free;
end;

No se si me he explicado con claridad. Dame un toque si te puedo ayudar.

Atte.

Pedro J.Fdez.
pedrofdez@ono.com
pfsoftware@ono.com
Responder Con Cita
  #3  
Antiguo 30-04-2006
maravert maravert is offline
Miembro
 
Registrado: jul 2004
Ubicación: Xalapa, México
Posts: 158
Poder: 20
maravert Va por buen camino
Gracias

Gracias por tu respuesta, ahorita mismo lo voy a probar
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 una tabla paradox lbidi Tablas planas 5 22-09-2004 18:24:07
Filtrar Tabla jovehe Tablas planas 6 15-09-2004 22:06:32
como filtrar una tabla andre navarrete Varios 5 11-08-2004 06:17:19
Filtrar Datos De Una Tabla apolo18 Conexión con bases de datos 1 27-01-2004 21:24:08
Filtrar una tabla Tangela Conexión con bases de datos 1 29-05-2003 00:56:37


La franja horaria es GMT +2. Ahora son las 16:59:11.


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