Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-07-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 22
Giniromero Va por buen camino
busqueda lenta

Hola a todos....

Tengo una aplicación en delphi6 y con interbase7.

En el módulo principal tiene que aparecerme toda la información respecto al cliente que esté seleccionado. Tengo un Tnavigator, para irme moviendo por los registros de los cliente, y con ello, ir cambiando de ficha. También tengo un botón, que me muestra una nueva ventana, donde, puedo seleccionar el nombre de un cliente en concreto, para que se valla a su ficha, sin tener que ir moviendome con el Tnavigator, ficha por ficha.

El caso es, que aunque ese form funciona, esto es, consigo que me muestre la ficha que le indico, tarda mucho desde que doy a aceptar, hasta que se posiciona en el registro de la tabla en cuestión.

Tengo esto mismo motantado para otras tablas más pequeñas en otros puntos de mi aplicación, y no va tan lento.

Estoy usando TIBQuery y TibTables para gestionar las tablas, por que no se como se usan los IBDataSet, aunque me han dicho que irían mejor.

El código que tengo para esto es:

DENTRO DE MAIN:

procedure TFrmFxMain.MnuSeleAluClick(Sender: TObject);
begin

screen.cursor := crHourGlass;
FrmSeleAlu := TFrmSeleAlu.Create(Self);
Screen.cursor := crDefault;
TRY
//mostramos el módulo FrmSeleAlu como modal
FrmSeleAlu.Showmodal;
//si salimos del módulo con OK
if FrmSeleAlu.ModalResult = mrOK then begin
//refrescamos los datos
Refrescadatos(sender);
end;

FINALLY
FrmSeleAlu.Free;
END;



DENTRO DEL FORM QUE SE ABRE:

private
{ Private declarations }
RCampo : String; // para seleccionar la columna en la que buscamos
public
{ Public declarations }
end;

var
FrmSeleAlu: TFrmSeleAlu;

implementation
uses FxMain;
{$R *.DFM}


//procedure que gestiona el campo por el que se va a buscar en la tabla
// según radio que seleccionemos así nos busca en un campo o en otro
// el texto que escribimos en EditBuscar
procedure TFrmSeleAlu.RadioGroup1Click(Sender: TObject);
begin
EditBuscar.Text := '';

Case RadioGroup1.ItemIndex of
0:RCampo := 'APENOM';
1:RCampo := 'NUMALU';
2:RCampo := 'NIFALU';
3:RCampo := 'NOMALU';
end;


EditBuscar.SetFocus;

end;


//al mostrarse el form ponemos el cursor en el EditBuscar y le damos el valor por defecto al radiogroup1
procedure TFrmSeleAlu.FormShow(Sender: TObject);
begin
EditBuscar.Setfocus;
RadioGroup1Click(self);
end;


//si cambiamos los datos del EditBuscar, busca en la tabla lo que este tiene
procedure TFrmSeleAlu.EditBuscarChange(Sender: TObject);

begin

TbAlumnos.Locate(Rcampo,(EditBuscar.Text), [lopartialKey]);

end;

//cuando hacemos dobleclick sobre el grid o damos a aceptar, buscamos el alumno
//que figure en nuestra tabla de alumnos, dentro de alumnos de FxMain, y salimos
//con modal OK
procedure TFrmSeleAlu.DBGrid1DblClick(Sender: TObject);
begin
FrmFxMain.TbAlumnos.Locate('NUMALU',(TbAlumnosNUMALU.AsVariant), []);
ModalResult := mrOK;
end;


CUESTIÓN:

1) Como hago para que no me vaya tan lenta la aplicación al situarme en la ficha concreta, (no va tan lento mientras vas escribiendo en el campo "EditBuscar", te lo va mostrando en el tdbGrid los cambios de registro, y una vez que llegas al que tu quieres, que es cuando haces doble click sobre el Grid o das a OK, tarda al rededor de 30 seg.)

2) Sabría explicarme alguien, como se usan los IBDataSet? Tengo entendido que permite especificar una accion SQL para cada acción IBDataSet, (esto es insert, modif...), pero con la documentación no me aclaro, y no se como se hace esto. ¿alguien podría pasarme un ejemplo, o decirme donde puedo enterarme de como usar esto?

Muchas Gracias por todo
Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)

Última edición por Giniromero fecha: 23-07-2003 a las 18:41:07.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 02:59:38.


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
Copyright 1996-2007 Club Delphi