PDA

Ver la Versión Completa : problemas con consulta dinamica


oktubre
16-04-2011, 02:05:08
Estimados,
estoy programando un formulario donde tengo un dbgrid de delphi 6, un edit text
en el edit le puse el codigo que copio mas abajo para que cuando el usuario va escribiendo el codigo del producto valla filtrando lo que me muestra el dbgrid

procedure TForm3.EditcodigoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
clavecodigo : string;
Qintro : string ;
begin
clavecodigo := numerodfact ; // clavecodigo es el numero de ticket
editcodigo.SetFocus ;
Qintro := 'SELECT * FROM ARTICULOS WHERE Codigo LIKE "' +
editcodigo.Text +'%"';
if editcodigo.Text <> '' then // edit codigo es el numero de producto
begin
Qproducto.SQL.Clear;
Qproducto.SQL.Add(Qintro) ;
Qproducto.Open ;
// Qproducto.ExecSQL ;
// Qproducto.SQL.Clear;
// Qproducto.Close ;
end ;
end;


y lo que sucede es que va filtrando pero si preciono la tecla "1" no filtra hasta que preciono cualquier otra.
me explico? es como que necesita de un apretar mas para realizar esto y mi idea era que lo haga con cada tecla que voy apretando.
si a alguien se le ocurre en donde estoy metiendo la pata les voy a agradecer la ayuda.
saludos,
esteban oktubre

maeyanes
16-04-2011, 02:59:30
Hola...

Bienvenido a los foros de Club Delphi. Primero que nada, te recomiendo que leas la Guía de Estilo de los foros (enlace en mi firma).

Creo que tu problema se encuentra en que este código lo ejecutas en el evento OnKeyDown del TEdit.

Prueba usando el evento OnChange:


procedure TForm3.EditCodigoChange(Sender: TObject);
var
QIntro: string;

begin
if EditCodigo.Text <> '' then
begin
QIntro := Format('select * from ARTICULOS where CODIGO like ''%s%%''', [EditCodigo.Text]);
QProducto.SQL.Text := QIntro;
QProducto.Open
end
end;



Saludos...

oktubre
16-04-2011, 14:30:10
lo probe y funciona perfecto.
mil gracias,
oktubre

Gean
16-04-2011, 23:52:18
También puedes ponerlo en vez de en el OnKeyDown, en el OnKeyUp, así creo que te funcionaria