Delphi - Ayuda busqueda de radiogroup con codigo sql

 
Vista:

Ayuda busqueda de radiogroup con codigo sql

Publicado por sofia (33 intervenciones) el 07/10/2016 23:48:09
Hola buenas tardes. Realize una aplicacion con mysql -5 y delphi 2010, con componentes query de zeos". Tengo un formulario que utilizo un listado en el cual busco los productos utilizando un tedit llamado "eProductos" y estos datos van visualizando se en el dbgrid.
esta busqueda la realizo de la siguiente forma en un query tengo escrita la siguiente consulta

select * from productos where nombrepr LIKE :razon

luego en el boton buscar tengo escrito el siguiente codigo

1
qProductos.ParamByName('razon').AsString:='%'+eProductos.text+'%'

hasta aqui me funciona perfecto la busqueda ahora lo que necesito es filtrar esa busqueda dependiendo si el producto esta activo o no (para ello uso el campo estado de mi tabla producto)
creo un radiogroup con 3 opciones:

0:Activos
1:Bajas

para este punto hice lo siguiente borre la consulta del query e intente hacer lo siguiente en el evento onclick del boton buscar use el siguiente codigo

1
2
3
4
5
6
7
8
9
begin
qProductos.close;
qProductos.SQL.clear;
qProductos.SQL.Text:='Select * from producto';
qProductos.Open;
case radiog.ItemIndex of
0: qProductos.SQL.ADD('where estado=1')
1: qProductos.SQL.ADD('where estado=0')
end;


al intentar esto me sale el siguiente error
project drugstore.exe raised exception class EDatabaseError with message 'qProductos:Cannot perform this operation on a closed dataset

tambien lo que habia intentado antes era escribir la siguiente consulta pero me daba error de escritura
1
2
3
0: begin
qProductos.SQL.ADD('where estado=1');
qProductos.SQL.ADD('where nombreproducto LIKE='+quotedstr(eProductos.text));
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

Ayuda busqueda de radiogroup con codigo sql

Publicado por E.T. (1244 intervenciones) el 08/10/2016 20:21:24
Tu procedimiento está casi todo bien:
1
2
3
4
5
6
7
8
9
10
11
begin
qProductos.close;
qProductos.SQL.clear;
qProductos.SQL.ADD('Select * from producto');
case radiog.ItemIndex of
0: qProductos.SQL.ADD('where estado=1')
1: qProductos.SQL.ADD('where estado=0')
end;
//adicionalmente puedes poner la descripcion
qProductos.SQL.ADD('and nombreproducto LIKE ' + quotedstr('%' + eProductos.text + '%'));
qProductos.Open;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de fran
Val: 18
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

Ayuda busqueda de radiogroup con codigo sql

Publicado por fran (10 intervenciones) el 12/10/2016 22:29:45
Separa las cadenas, ahora no tiene porque haber problemas al abrir el dataset.
1
2
3
4
5
6
7
8
9
10
11
begin
qProductos.close;
qProductos.SQL.clear;
qProductos.SQL.ADD('Select * from producto');
case radiog.ItemIndex of
0: qProductos.SQL.ADD(' where estado=1')
1: qProductos.SQL.ADD(' where estado=0')
end;
//adicionalmente puedes poner la descripcion
qProductos.SQL.ADD(' and nombreproducto LIKE ' + quotedstr('%' + eProductos.text + '%'));
qProductos.Open;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar