PDA

Ver la Versión Completa : Problema con navegación de registros


andressanchez
04-06-2008, 16:16:55
Muy buenos dias foristas

Tengo una aplicación desarrollada en delphi 7, uso firebird 1.5, windows 2000. Me conecto a la base de datos con BDE. La aplicación esta instalada en varias sucursales, usamos una coneccion frame relay, para mantener las sucursales conectadas.

El problema consiste en que una de las sucursales al entrar a la aplicación y trata de navegar al último registro el programa se queda frizado, al igual cuando ejecuto un locate o cancel de un objeto ttable. Me resulta extraño de que solo sea una sola sucursal que tenga este tipo de problemas porque con otras no me pasa, inclusive esta es una sucursal con pocos registros. Estuve buscando a ver si era que me falta algun indice o si fuera algun problema de data pero lo veo todo bien.

La aplicacion es master-detail, cuando esta carga hago un filtro por el codigo de la sucursal en la tabla master.

esta es la estructura de las tablas.

CREATE TABLE RELACIONCORRESPONDENCIA (
REGISTRONO INTEGER,
IDUSUARIO INTEGER,
IDSUCURSAL SMALLINT,
FECHA TIMESTAMP,
FECHARECEPCION TIMESTAMP,
DESTINATARIO VARCHAR(50),
REMITENTE VARCHAR(50),
TIPOCORRESPONDENCIA VARCHAR(1),
DIRECCIONARCHIVO VARCHAR(100),
RECIBIDOPOR VARCHAR(50),
DESPACHADOPOR VARCHAR(50),
ESTATUS VARCHAR(1),
IDDEPARTAMENTO SMALLINT,
NUMEROCERTIFICADO VARCHAR(15),
SUCURSAL SMALLINT
);
CREATE TABLE RELACIONCORRESPONDENCIADET (
REGISTRONO INTEGER,
CLASEDOCUMENTO VARCHAR(20),
NUMERO VARCHAR(10),
DESCRIPCION VARCHAR(100),
LINEANO SMALLINT,
RECIBIDO VARCHAR(1),
NUMEROCERTIFICADO VARCHAR(15)
);

/******************************************************************************/
/*** Indices ***/
/******************************************************************************/
CREATE INDEX FECHA_IDX3 ON RELACIONCORRESPONDENCIA (FECHA);
CREATE INDEX FECHA_RECEPCION ON RELACIONCORRESPONDENCIA (FECHARECEPCION);
CREATE INDEX IDSUCURSAL_IDX3 ON RELACIONCORRESPONDENCIA (IDSUCURSAL);
CREATE INDEX IDUSUARIO_IDX3 ON RELACIONCORRESPONDENCIA (IDUSUARIO);
CREATE INDEX NUMEROCERTIFICADO_IDX1 ON RELACIONCORRESPONDENCIA (NUMEROCERTIFICADO);
CREATE INDEX REGISTRONO_IDX3 ON RELACIONCORRESPONDENCIA (REGISTRONO);
CREATE INDEX LINEANO_IDX2 ON RELACIONCORRESPONDENCIADET (LINEANO);
CREATE INDEX NUMEROCERTIFICADO_IDX2 ON RELACIONCORRESPONDENCIADET (NUMEROCERTIFICADO);
CREATE INDEX REGISTRONO_IDX4 ON RELACIONCORRESPONDENCIADET (REGISTRONO, LINEANO);


Espero sus respuesta.

Mil gracias de antemano.

andressanchez
09-06-2008, 18:58:30
Distinguidos foristas

Al parecer el problema que les presento es un tanto complejo.

Que me recomendarian en tal sentido?

andressanchez
11-06-2008, 15:50:17
Distinguidos Colegas voy a tener que recurrir al metodo de borrado de registros a ver si con esto puedo solucionar el problema. Hasta el momento es lo único que se me ocurre, ya que aparentemente es un problema de data.

Luego les cuento como me fue.

andressanchez
17-06-2008, 17:04:34
Buenos dias foristas

He tratado de solucionar este problema de diferentes maneras:

1) hice un backup-restore de la base de datos.
2)instale el sistema en otra maquina de la misma sucursal.
3)Borre registros.

Aun asi sigo teniendo problemas, realmente no se me ocurre nada mas que hacer.

¿Qué me recomiendan?

eduarcol
17-06-2008, 17:24:52
podrias hacer esa misma consulta desde una interfaz para firebird, podria ser el IB-Expert, asi descartariamos el BDE

andressanchez
17-06-2008, 18:53:10
Gracias por responder eduarcol

Acabo de hacer el query en ibexpert y corre sin problemas.

El query que hice fue el siguiente:

select *
from relacioncorrespondencia a, relacioncorrespondenciadet b
where a.registrono = b.registrono
and a.sucursal = 24

Lo que mas me extraña de todo esto, es que solamente ocurre esto en esa sucursal, las demas estan trabajando sin problemas.

eduarcol
17-06-2008, 22:27:13
has leido el articulo Paradox en red de Valentin Sanchez?, quizas tengas algun problema de configuración, porq no reinstalas el BDE, o mejor aun por q no cambias la conexion a IBX

andressanchez
16-09-2008, 20:53:15
Distinguidos foristas

Al utilizar el componente ttable este aunque hiciera el filtro por la sucursal me cargaba todos los registros que estan en la tabla. Me di cuenta porque le di un ttable.recordcount para saber cuantos registros habian despues del filtro y los compare con un select count(*) de dicha tabla filtrada por la sucursal en cuestion y la cantidad de registros del ttable eran mas que los del select count(*).

Para corregir el problema tuve que cambiar el ttable (master) y colocar un tquery y activarle a dicho componente la propieda requestlive = true.

Muchas gracias eduarcol por la ayuda.

Espero que este hilo les sirva para futuras referencias.