FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
|||
|
|||
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 :. |
#3
|
||||
|
||||
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 |
#4
|
|||
|
|||
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. |
|
|
|