Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   filtrar por combobox (https://www.clubdelphi.com/foros/showthread.php?t=74604)

jose_am 28-06-2011 17:38:28

filtrar por combobox
 
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:
Código Delphi [-]
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:
Código Delphi [-]
  ShowMessage('casa');
Muestra: casa

En cambio:
Código Delphi [-]
  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
Código Delphi [-]
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:
Código Delphi [-]
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  DataSet.Filtered:= False;
  DataSet.Filter:= 'Condicion = '+ IntToStr(Integer(CheckBox1.Checked));
  DataSet.Filtered:= True;
end;

Saludos.


La franja horaria es GMT +2. Ahora son las 04:13:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi