Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-02-2005
JoanKa JoanKa is offline
Miembro
 
Registrado: ene 2005
Posts: 92
Poder: 20
JoanKa Va por buen camino
Demora en ir al ultimo registro para hacer insert

Holas a todos.

Tengo una tabla articulos que tiene 59129 registro, pero cuando quiero insertar un nuevo registro me parece que se demora mucha para ir al ultimo registro, solo por probar he puesto 2 TDBedit y 2 TButton (Ingresar, Grabar).
Aca va este codigo:

procedure TForm1.IngresarClick(Sender: TObject);
begin
IBQuery1.Last;
IBQuery1.Insert;

txt_codigo.SetFocus;
end;

procedure TForm1.GrabarClick(Sender: TObject);
begin
IBQuery1.Post;
IBTransaction1.Commit;
end;

Lo que pasa cuando le presiono sobre Button1Click se demora un tiempo de mas o menos 30 seg. para que me ubique el foco en el txt_codigo, y luego ingreso el txt_direccion y cuando le presiono en el segundo boton (Grabar) lo registra muy bien los datos en la base de datos.

Que puede ser para que no se demore mucho
Uso:
IBDatabase1
IBTransaction1
IBQuery1
IBUpdateSQL1
DataSource1

Firebird 1.5

Gracias
Responder Con Cita
  #2  
Antiguo 14-02-2005
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Hola,

Quizás es un problema de índices, pero de todas formas los IBX siempre me demostraron ser lentos cuando se utilizan Locates u operaciones de navegación sobre los registros de una tabla grande. Podrías probar con otros componentes, comprobar las estructuras de las tablas o bien realizar una consulta más óptima, digamos trayendo únicamente el último registro sin utilizar un Last.

El problema es que la acción Last en si, al igual que Locate, recorren los registros como una suerte de Fetch All por lo que tarde o temprano la lentitud se va a hacer más notoria.

Saludos!
__________________
Suerte
.: Gydba :.
Responder Con Cita
  #3  
Antiguo 14-02-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Como dice Gydba, el problema es que una operación como Last es muy costosa ya que implica traer todos los registros al cliente. Y éste es un problema con cualquier servidor. Pero por otro lado, no es necesario ir al último registro para insertar uno. Simplemente omite la llamada a Last antes del Insert.

// Saludos
Responder Con Cita
  #4  
Antiguo 14-02-2005
JoanKa JoanKa is offline
Miembro
 
Registrado: ene 2005
Posts: 92
Poder: 20
JoanKa Va por buen camino
Ok, perfecto hice eso que me dijeron y me fue de maravilla.

Ya hice todo este pequeño mantenimiento de ingreso,consulta,modificacion y eliminacion, PERO AHORA QUISIERA PROBARLO EN RED, QUE DEBO HACER PARA QUE OTRO USUARIOS EN MI LAN PUEDAN ACCEDER A ESTE MANTENIMIENTO.
TODO ESTO LO TENGO EN MI PC LOCAL LA CUAL LA BASE LO TENGO LOCALIZADO EN C:/Proyecto/Base_Datos/mantenimiento.fdb el localhost cuando lo he creado la BD en Firebird fue de 127.0.0.1 con el usuario SYSDBA y clave masterkey.

Gracias.
Responder Con Cita
Respuesta



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 15:05:11.


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