sizne
16-04-2010, 00:20:42
Holas a todos, espero que puedan ayudarme con la siguiente consulta que la puse en DELPHI, solo que la busqueda como verán es muy lenta....demora muucho en encontrala...hasta tan solo escribir un nro se me demora en aparecer el el TEdit.
A continuacion les muestro el codigo que hice...
if E.Text <> '' then
with Q2 do
begin
Close;
SQL.Text:= 'SELECT i.IdM,i.CiE,i.NomE,i.ApePE,i.ApeME,i.SexoE,i.FinscripcionE, ' +
'i.CarreraE,i.DeptoE,i.CalleE,sum(TotalRecibido) as Monto ' +
'FROM BDinscripcion i ' +
'INNER JOIN BDbeca b ON i.IdE=b.IdE ' +
'AND ' + Buscar + ' LIKE '+ #39 + E.Text +'%'+#39+
' GROUP BY IdM, CiE, NomE, ApePE, ApeME, SexoE, FinscripcionE, CarreraE, DeptoE, CalleE';
Open;
end;
Este codigo se encuentra en...
procedure TFdevolucion.EChange(Sender: TObject);
var campo,Buscar:string;
begin
campo := S.Text;
if campo = 'Carnet Identidad' then Buscar:='CiE'
else
begin
if campo = 'Nombre' then Buscar:='NomE'
else
begin
if campo = 'Apellido Paterno' then Buscar:='ApePE'
else
begin
if campo = 'Apellido Materno' then Buscar:='ApeME'
else
if campo = 'Departamento' then Buscar:='DeptoE';
end;//fin paterno
end;//fin nombre
end;// fin primer else
if E.Text <> '' then
with Q2 do
begin
Close;
SQL.Text:= 'SELECT i.IdM,i.CiE,i.NomE,i.ApePE,i.ApeME,i.SexoE,i.FinscripcionE, ' +
'i.CarreraE,i.DeptoE,i.CalleE,sum(TotalRecibido) as Monto ' +
'FROM BDinscripcion i ' +
'INNER JOIN BDbeca b ON i.IdE=b.IdE ' +
'AND ' + Buscar + ' LIKE '+ #39 + E.Text +'%'+#39+
' GROUP BY IdM, CiE, NomE, ApePE, ApeME, SexoE, FinscripcionE, CarreraE, DeptoE, CalleE';
Open;
end;
if not Q2.IsEmpty = false then
begin
MessageDlg('No existe el registro',mtInformation,[mbOk],0);
E.SetFocus;
end;
end
Como verán es un busqueda que realiza a medida que se escribe en un TEdit. Selecciono varios campos que necesito de una TablaInscripcion y realiza una suma de los montos recibido de otra tablaBeca, cuando sus IDE sean iguales. De toda esta informacion estoy realizando una busqueda de todos aquellos que cumplan la condicion INNER JOIN.
Ahhhh!!! sino cologo el Group BY pues varios nombres se repetiran...cuantas veces hayan recibido el TOTALRECIBIDO.
Solo que se me hace lenta...
Alguna sugerencia....
gracias
A continuacion les muestro el codigo que hice...
if E.Text <> '' then
with Q2 do
begin
Close;
SQL.Text:= 'SELECT i.IdM,i.CiE,i.NomE,i.ApePE,i.ApeME,i.SexoE,i.FinscripcionE, ' +
'i.CarreraE,i.DeptoE,i.CalleE,sum(TotalRecibido) as Monto ' +
'FROM BDinscripcion i ' +
'INNER JOIN BDbeca b ON i.IdE=b.IdE ' +
'AND ' + Buscar + ' LIKE '+ #39 + E.Text +'%'+#39+
' GROUP BY IdM, CiE, NomE, ApePE, ApeME, SexoE, FinscripcionE, CarreraE, DeptoE, CalleE';
Open;
end;
Este codigo se encuentra en...
procedure TFdevolucion.EChange(Sender: TObject);
var campo,Buscar:string;
begin
campo := S.Text;
if campo = 'Carnet Identidad' then Buscar:='CiE'
else
begin
if campo = 'Nombre' then Buscar:='NomE'
else
begin
if campo = 'Apellido Paterno' then Buscar:='ApePE'
else
begin
if campo = 'Apellido Materno' then Buscar:='ApeME'
else
if campo = 'Departamento' then Buscar:='DeptoE';
end;//fin paterno
end;//fin nombre
end;// fin primer else
if E.Text <> '' then
with Q2 do
begin
Close;
SQL.Text:= 'SELECT i.IdM,i.CiE,i.NomE,i.ApePE,i.ApeME,i.SexoE,i.FinscripcionE, ' +
'i.CarreraE,i.DeptoE,i.CalleE,sum(TotalRecibido) as Monto ' +
'FROM BDinscripcion i ' +
'INNER JOIN BDbeca b ON i.IdE=b.IdE ' +
'AND ' + Buscar + ' LIKE '+ #39 + E.Text +'%'+#39+
' GROUP BY IdM, CiE, NomE, ApePE, ApeME, SexoE, FinscripcionE, CarreraE, DeptoE, CalleE';
Open;
end;
if not Q2.IsEmpty = false then
begin
MessageDlg('No existe el registro',mtInformation,[mbOk],0);
E.SetFocus;
end;
end
Como verán es un busqueda que realiza a medida que se escribe en un TEdit. Selecciono varios campos que necesito de una TablaInscripcion y realiza una suma de los montos recibido de otra tablaBeca, cuando sus IDE sean iguales. De toda esta informacion estoy realizando una busqueda de todos aquellos que cumplan la condicion INNER JOIN.
Ahhhh!!! sino cologo el Group BY pues varios nombres se repetiran...cuantas veces hayan recibido el TOTALRECIBIDO.
Solo que se me hace lenta...
Alguna sugerencia....
gracias