Ver la Versión Completa : filtrar por combobox
jose_am
28-06-2011, 17:38:28
hola amigos, tengo un problema..estoy trabajando en una base de datos en access donde tengo cargado una serie de alumnos con sus respectivos sexos M (masculino) F (femenino) lo qui quiero hacer yo es que a traves de un combo box, donde voy a tener masculino y femenino me filtre (segun lo que yo presione) por masculino o femenino.
ecfisa
28-06-2011, 18:29:12
Hola jose_am.
Suponiendo el ComboBox tiene los Items:
Masculino
Femenino
Sería:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
DataSet.Filtered:= False;
DataSet.Filter:= 'SEXO = '+QuotedStr(ComboBox1.Text[1]);
DataSet.Filtered:= True;
end;
Donde 'SEXO' sería el nombre del campo que utilices para almacenar 'F' o 'M'.
Saludos.
jose_am
28-06-2011, 18:37:27
Funciono perfecto!,muchas gracias!, ahora sacame esta duda..que hiciste o que sinifica esta paso? QuotedStr(ComboBox1.Text[1])
ecfisa
28-06-2011, 19:00:20
Hola.
La función QuotedStr devuelve la cadena de caracteres enviada en el argumento, encerrada entre comillas simples.
Por ejemplo:
ShowMessage('casa');
Muestra: casa
En cambio:
ShowMessage(QuotedStr('casa'));
Muestra: 'casa'
En cuanto a ComboBox1.Text[1], hago referencia al primer caracter del item seleccionado, que en este caso será: Femenino o Masculino
Saludos.
jose_am
28-06-2011, 19:03:48
perfectoo!, muchas gracias y saludos!
jose_am
28-06-2011, 20:38:00
se me complico con otra cosa..tengo que hacer lo mismo pero con un campo booleano..osea tengo la regularidad del alumno por true o false..hago lo mismo que me dijoste pero me da un error que no lo puedo hacer porque es un campo booleano.. se ve que no debe ser igual.
ecfisa
28-06-2011, 21:59:51
Hola jose.
Te pongo dos ejemplos de como podrías hacerlo.
Con un ComboBox, cuyos items sean:
Irregular
Regular
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
DataSet.Filtered:= False;
DataSet.Filter:= 'Condicion = '+ IntToStr(ComboBox1.ItemIndex);
DataSet.Filtered:= True;
end;
Aquí es importante que el alumno no-regular esté en primera posición. Ya que la posición del ítem, mediante la propiedad ItemIndex, es la que dictamina el valor Verdadero/Falso (0=Falso / 1= Verdadero)
Con un CheckBox cuyo caption sea Regular, donde chequeado = regular, en blanco = irregular:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
DataSet.Filtered:= False;
DataSet.Filter:= 'Condicion = '+ IntToStr(Integer(CheckBox1.Checked));
DataSet.Filtered:= True;
end;
Saludos.
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.