Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Filtro (https://www.clubdelphi.com/foros/showthread.php?t=61657)

eaguila7 17-11-2008 00:34:01

Filtro
 
Hola!

quiero realizar un filtro de la tabla "busemple" cuando cambie el valor de un Edit1; el cual me regrese el valor de los campos: clave_empleado y nombre donde la clave_empleado contenga el valor del Edit1 y por ultimo muestre el resultado en un StringGrid.

Estoy realizando el siguiente codigo:

Código:


mod->busemple->Open();
 mod->busemple->Active = True;
 StringGrid1->Cells[0][0] = "CLAVE";
 StringGrid1->Cells[1][0] = "NOMBRE";
 mod->busemple->First();
 while(!(mod->busemple->Eof))
 {
  if(mod->busemple->FieldByName("CLAVE_EMPLEADO")->AsString == "%" + Edit1->Text + "%")
  {
  StringGrid1->Cells[0][x] = mod->busemple->FieldByName("CLAVE_EMPLEADO")->AsString;
  StringGrid1->Cells[1][x] = mod->busemple->FieldByName("NOMBRE")->AsString;
  x++;
  }
  mod->busemple->Next();
 }
 mod->busemple->Active = False;
 mod->busemple->Close();

pero no realiza lo que quiero :(

Espero y me puedan ayudar

Gracias

Caral 17-11-2008 00:44:39

Hola
Yo no se c++, bueno tampoco delphi, pero a ver que hago aqui.:D
Código:

mod->busemple->Active = True;
 StringGrid1->Cells[0][0] = "CLAVE";
 StringGrid1->Cells[1][0] = "NOMBRE";
 {
  if(mod->busemple->FieldByName("CLAVE_EMPLEADO")->AsString == "%" + Edit1->Text + "%")
  {
  StringGrid1->Cells[0][x] = mod->busemple->FieldByName("CLAVE_EMPLEADO")->AsString;
  StringGrid1->Cells[1][x] = mod->busemple->FieldByName("NOMBRE")->AsString;
  x++;
  }
 
 }

Los parentesis no se como iran
Saludos

coso 17-11-2008 20:13:34

Hola. Los caracteres '%' sirven para hacer un filtro, pero desde SQL. En el codigo que estas poniendo te esta comparando exactamente la cadena '%VALOR%'. Tendrias, o bien hacer una busqueda con el 'where' en una sentencia select

Código Delphi [-]
query1->Active = False;
query1->SQL->Text = "select * from tabla where campo like " + QuotedStr("%" + Edit1->Text + "%");
query1->Active = True;

o bien, segun tu codigo actual, en vez de comparar, usar el Pos(...), que te busca una cadena dentro de otra. Saludos.

Lepe 18-11-2008 09:56:18

Si quieres seguir haciéndolo como hasta ahora, solo cambia esto:
Código Delphi [-]
 if(mod->busemple->FieldByName("CLAVE_EMPLEADO")->AsString == "%" + Edit1->Text + "%")
  {
por... más o menos esto:
Código Delphi [-]
if pos(Edit1->Text->lowercase, mod->busemple->FieldByName("CLAVE_EMPLEADO")->AsString->lowercase) <> 0 then

Básicamente pasar a minúsuculas y usar la función Pos.

Saludos


La franja horaria es GMT +2. Ahora son las 17:16:04.

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