PDA

Ver la Versión Completa : Filtrarrr


einarcito
10-10-2008, 04:24:51
hola gente una vez mas aqui haciendo mis preguntas... no puedo filtrar los datos de la DB, alguien puede decir q esta mal??

procedure TForm3.Edit11Change(Sender: TObject);
begin
with dm.abmclientes do begin
Active := false;
SQL.Clear;
SQL.text:='SELECT * FROM clientes WHERE dni LIKE '+ quotedstr('%'+edit11.Text+'%');
Active := true;

end;

no me filtraaa.... algun aporte????? GRAX ADIOSS

marcoszorrilla
10-10-2008, 05:53:10
¿Has comprobado que el DNI que introduces existe en la tabla?

Un Saludo.

Neftali [Germán.Estévez]
10-10-2008, 08:48:05
If (BaseDatos = 'Access') then begin
ReplaceAllOcurrences('%', '*')
end;


Si no es access, visualiza la sentencia antes de lanzarla:


SQL.text:='SELECT * FROM clientes WHERE dni LIKE '+ quotedstr('%'+edit11.Text+'%');

MessageDlg('SQL:' + SQL.Text, mtInformation, [mbOK], 0);


Y ponla aquí.

coso
10-10-2008, 10:06:14
se supone que DNI es campo de texto...

einarcito
10-10-2008, 15:05:43
gracias por la ayuda, eh tratato de filtrar por nombre o apellido tmb y no me filtra, podria decirles q se ejecuta la con consulta a medida q escribo pero no filtra.... otro aporteeeeee???? GRRAX ADIOS

Neftali [Germán.Estévez]
10-10-2008, 15:24:38
¿Has comprobado que el DNI que introduces existe en la tabla?

if (BaseDatos = 'Access') then begin

visualiza la sentencia antes de lanzarla y ponla aquí.

se supone que DNI es campo de texto...

.... otro aporteeeeee??

Qué tal si contestas a algo de lo que te hemos pedido/preguntado.

einarcito
10-10-2008, 15:28:24
DNI si existe, no uso acces estoy con mysq server 5, tendria q modifiar alguna propiede del Ttable como ser el filterOption??? en si te podria decir q se ejcuta la consulta peor no filtra...

coso
10-10-2008, 15:47:34
del Ttable o del Tquery? si tienes un dbgrid asociado a un datasource asociado a una tabla y filtras una query... no veras nada...nos puedes explicar algo mejor tu problema? la sentencia que pusiste no tiene ningun error, por lo tanto, esta por otro lado.

einarcito
10-10-2008, 16:28:33
gracias por sus aportes.. A ver tengo como deices tu tengo un ttable un datasourse asociado al ttable y el query al datasourse y el grid al datasourse como deices tu... y en el evento onchange de ledit escribi esa sentencia para q me filtreee el grid entonces q estoy haciendo mal???

cmm07
10-10-2008, 16:31:47
no filtra porque estas utilizando el like

procedure TForm3.Edit11Change(Sender: TObject);
begin
with dm.abmclientes do begin
Active := false;
SQL.Clear;
SQL.text:='SELECT * FROM clientes WHERE dni LIKE '+ quotedstr('%'+edit11.Text+'%');
Active := true;

end

debería ser así o algo asi (este codigo lo hice sin probarlo)

procedure TForm3.Edit11Change(Sender: TObject);
begin
with dm.abmclientes do begin
Active := false;
SQL.Clear;
SQL.text:='SELECT * FROM clientes WHERE dni ='+ quotedstr(edit11.Text);
Active := true;

end

coso
10-10-2008, 16:39:45
tal como dice cmm07...si dni es numerico, el like no se usa, se usa el igual...el like solo es para campos tipo texto. Entonces ¿DNI es texto o numerico?

einarcito
10-10-2008, 17:01:24
gracias chicos... muy buenos aportes voy a probar, no la tenia a esa del like pensaba q era para todos tipo de datos Graxxx Adios

coso
10-10-2008, 17:04:08
vamos...q dni era numerico :(...la proxima vez, tal como tambien te dice neftali, si vas contestando, mejor que mejor. Venga, saludos ;)

Neftali [Germán.Estévez]
10-10-2008, 17:34:37
si dni es numerico, el like no se usa

Bueno en el caso de SQL Server puedes utilizar algo como esto:


Select * from Tabla1 where CampoNumerico like '20%'


Para campos numéricos, el servidor se encarga de hacer las correspondientes conversiones. ;););) (detallitos que tiene).

AÑADO: Acabo de releer que la BD es (parece) MySQL, por lo tanto... => "No aplicable es este caso" :o:o:o