![]() |
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 |
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 |
Gracias
Gracias por tu respuesta, ahorita mismo lo voy a probar
|
La franja horaria es GMT +2. Ahora son las 02:53:19. |
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