Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   ProgressBar abriendo Tablas grandes (https://www.clubdelphi.com/foros/showthread.php?t=42918)

pallyJD 25-04-2007 23:23:59

ProgressBar abriendo Tablas grandes
 
Hola Foro:

Quisiera saber como vinculo una ProgressBar en el momento en que activo una tabla de gran tamaño, digamos unos 50MB. Me pasa lo siguiente.

Tengo una aplicación que maneja tablas dentro de una Base de datos de SQL 2000 Server de gran tamaño, algo así como 50 - 60 MB. En el momento que digo
Table1Ejemplo.Active:=True; se comienza una espera a que la Tabla completa se active, quisiera saber como vinculo un progressbar a esa espera.


Ó

Si nada más puedo abrir un solo record, y trabajar en el (Editar) sin abrir la tabla completa.

Saludos.

AFilth 25-05-2007 13:55:12

Si sólo quieres editar un registro o un número determinado de ellos utiliza la propiedad filter de la tabla y pon ahí las condiciones que debe/n cumplir los registros. Por ejemplo: Clave = 5364. Con eso creo que te valdrá.
Un saludo.

Lepe 25-05-2007 15:24:54

El problema de la propiedad filter, es que trae todos los registros de la tabla y después, en el ordenador cliente, es donde aplica el filtro.

No sé qué componentes de acceso estas utilizando, pero desde luego un TTable no se debe usar.

El componente que se usa, encapsula 4 consultas SQL:

- SelectSql
Código SQL [-]
  select lo que sea from tabla where clavePrimaria = :Clave
"Clave" es un parámetro que en tiempo de ejecución le pasas el valor.

- InsertSQL
Código SQL [-]
 insert into tabla(campo1, campo2) values (:campo1, :campo2)

- DeleteSql
Código SQL [-]
 delete from table where ClavePrimria = :Clave

- UpdateSql
Código SQL [-]

  Update tabla1  set
       campo1 = :campo1,
       campo2 = :campo2)
  where ClavePrimaria = :old_Clave

Estos componentes suelen llamarse:
- TIBDataset (si usas los IBX)
- TMDODataset (si usas MDOLIB)
- etc.

(lo escribo de memoria y seguro que puede variar).

Como ves, en la cláusula where se indica la clave primaria, por tanto solo traerá un registro, y puesto que es clave primaria, estará indexado, y el acceso a él será inmediato.

De cualquier otra forma que ataques una base de datos de esas características, tendrás problemas de rendimiento.

Por supuesto sin contar que deben crearse claves primarias, índices por los campos de búsqueda muy común, Uso de Triggers / vistas / StoreProcedures / etc cuando sea necesario.

Saludos


La franja horaria es GMT +2. Ahora son las 14:34:06.

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