PDA

Ver la Versión Completa : Consulta con el evento Edit1Change


maravert
07-05-2006, 19:21:32
Hola a todos, Estoy manejando delphi7 y tablas paradox. Intento hacer una aplicación donde el usuario va a capturar unos pedidos. lo primero que hace es dar la clave del cliente, pero si no se sabe, como normalmente es, deberá de introducir su nombre (del ciente) en un Tedit y de manera automatica iran apareciendo (En un DBgrid) solo los nombres de los cleintes cuyo nombre va coincidiendo con la cadena que se introduce. Si por ejemplo en el Tedit se teclea PER, pues en el DbGrid se mostraran los nombres que inicien con PER y de alli el usuario selecciona un cliente.

Tengo el proceso, pero no me hace nada de esto. Les doy el codigo y espero que alguien me pueda ayudar en esto.

Gracias de antemano.




Código Delphi [-] (http://clubdelphi.com/foros/#)unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, DBTables, StdCtrls, Unit1;
type
TForm3 = class(TForm)
Table1: TTable;
DataSource1: TDataSource;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label7: TLabel;
Button1: TButton;
Table2: TTable;
DBGrid2: TDBGrid;
DataSource2: TDataSource;
Query1: TQuery;
Table3: TTable;
DataSource3: TDataSource;
procedure Button2Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure Button1Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit4;
{$R *.dfm}

procedure TForm3.Button2Click(Sender: TObject);
begin
tABLE1.Filtered := FALSE;
end;


procedure TForm3.Edit1Change(Sender: TObject);
begin
Query1.sql.clear;
Query1.SQL.Text:= 'SELECT * FROM Clie01 WHERE UPPER(Nombre) LIKE (UPPER(:Nombre))';
Query1.ParamByName('Nombre').Value := 'Edit1.Text';
query1.Open;
table1.Refresh;
end;

procedure TForm3.DBGrid1CellClick(Column: TColumn);
VAR
mclave, mnombre : string;
begin
mclave := (Table1.fieldByname ('cclie').asString);
mnombre := (Table1.fieldByname ('nombre').asString);
Label1.caption := mclave;
Label2.caption := mnombre;
end;

procedure TForm3.Button1Click(Sender: TObject);
begin
Form4.showmodal;
end;

procedure TForm3.FormPaint(Sender: TObject);
begin
Label1.caption := mclave;
Label2.caption := mnombre;
end;

procedure TForm3.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_RETURN) then begin
if not Table1.FindKey([edit1.text]) then
Messagebox (Handle, 'no se encontro', 'Mensaje', MB_OK)
else
begin
mclave := (Table1.fieldByname ('cclie').asString);
mnombre := (Table1.fieldBYname ('nombre').asString);
Label1.caption := mclave;
Label2.caption := mnombre;
end
end;
end;
end.

Thales
07-05-2006, 19:58:59
Prueba a modificar el evento OnChange del Edit1 de esta manera:


procedure TForm1.Edit1Change(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Text:= 'SELECT * FROM Clie01 WHERE UPPER(Nombre) LIKE UPPER(:Nombre)';
Query1.ParamByName('Nombre').Value := Edit1.Text + '%';
query1.Open;
end;


Un saludo

maravert
08-05-2006, 18:39:05
Gracias portu respuesta, voy aprobar.

Estoy para servirte

Alejandro

vtdeleon
08-05-2006, 18:49:29
Saludos
maravert, trata de utilizar los TAG's para mostrar codigos. Te invito a que le des un repaso a Etiquetas vB (http://clubdelphi.com/foros/misc.php?do=bbcode):=Delphi-SQL