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 20-09-2010
DamianG DamianG is offline
Miembro
 
Registrado: mar 2008
Posts: 95
Poder: 17
DamianG Va por buen camino
Error index unexpectedly deleted

Hola a todos, mi consulta es la siguiente:

desarrole un sistema de registro de facturas de compras donde las tablas definidas son:

FACCPA - Encabezado de facturas
DETFCC - Detalle de factura impositivo
DETFCA - Detalle de productos comprados

las 3 con los siguientes campos en común.

TIPCOM - Tipo de comprobante
LETCOM - Letra
PTOCOM - Punto de venta
NROCOM - Número
CODPRC - Id Proveedor

Entonces tengo como clave primary de FACCPA:

tipcom,letcom,ptocom,nrocom,codprc

En un formulario muestro las 3 tablas de la siguiente manera:
Código Delphi [-]
   
  with datafb.query_faccpa do
  begin
    close;
    SQL.Clear;
    SQL.add('select f.codprc,f.tipcom,f.letcom,f.ptocom,f.nrocom,f.feccom,f.fecvto,f.feccon,f.aynpro,f.ivapro,f.cuipro,f  .cvtcom,f.remito,f.libro,f.parcial,f.estado,f.descri,f.desadi,f.stock,f.totcom,f.remito,f.ordcom,');
    sql.add('sum(d.tmpng) as zng, sum(d.tmpta) as zta, sum(d.tmpac) as zac, sum(d.tmpno) as zno, sum(d.tmpex) as zex, sum(d.tmprt) as zrt, sum(d.tmpto) as xto from faccpa f');
    sql.add('inner join detfcc d on f.codprc = d.codprc and f.tipcom = d.tipcom and f.letcom = d.letcom and f.ptocom = d.ptocom and f.nrocom = d.nrocom');
    SQL.add('where f.feccon >= ''' + xf1 + '''' + ' and f.feccon <= ''' + xf2 + '''');
    sql.add('group by f.codprc,f.tipcom,f.letcom,f.ptocom,f.nrocom,f.feccom,f.fecvto,f.feccon,f.aynpro,f.ivapro,f.cuipro,f  .cvtcom,f.remito,f.libro,f.parcial,f.estado,f.descri,f.desadi,f.stock,f.totcom,f.ordcom');
   
    SQL.add('order by f.feccon,f.letcom,f.ptocom,f.nrocom');
    open;
  end;
   
  with datafb.query_detfcc do
    begin
      DataSource := datafb.dsfaccpa;
      SQL.text := 'select tipcom,letcom,ptocom,nrocom,feccom,fecvis,codprc,cvtcom,codtmp,tmpng,tmpct,tmpta,tmpac,tmpno,tmpex,t  mprt,tiprt,tmpto,tmpim,tmpde,descri from detfcc';
      SQL.Add('where codprc = :codprc');
      SQL.add('and tipcom = :tipcom');
      SQL.add('and letcom = :letcom');
      SQL.add('and ptocom = tocom');
      SQL.add('and nrocom = :nrocom');
      open;
   
   
  with datafb.query_detfca do
    begin
      DataSource := datafb.dsfaccpa;
      SQL.text := 'select * from detfca';
      SQL.Add('where codprc = :codprc');
      SQL.add('and tipcom = :tipcom');
      SQL.add('and letcom = :letcom');
      SQL.add('and ptocom = tocom');
      SQL.add('and nrocom = :nrocom');
      open;
    end;

bueno y aquí el problema, después de hacer una modificacion a la una factura, cada tanto sale el error, INDEX UNEXPEDTEDLY DELETED, no es siempre y según pude detectar con un control de errores es cuando hago

Código Delphi [-]
   
  Query_accpa.active := false;
  Query_accpa.active := trae;

Para refrescar los datos en la grilla. (dbgrid)

Otra cosita.
Se me ocurrio en algún momento agregar indices a DETFCC Y DETFCA con los mismos campos de la PK para ver si mejoraba el rendimiento, esto me ayudara a que sea mas veloz la consulta?

MUCHAS GRACIAS!
Responder Con Cita
  #2  
Antiguo 20-09-2010
DamianG DamianG is offline
Miembro
 
Registrado: mar 2008
Posts: 95
Poder: 17
DamianG Va por buen camino
Aclaración

Perdón pero no encontre como modificar el msj

las ultimas instrucciones donde sale el error son:

datafb.query_faccpa.active := false;
datafb.query_faccpa.active := true;
Responder Con Cita
  #3  
Antiguo 21-09-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Que error más raro. Nunca lo había visto.

Te sugiero que hagas un Backup y un posterior Restore de tu base de datos (para reconstruir la base de datos y de esta forma descartar que no sea un problema de corrupción del archivo de la base de datos).
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 21-09-2010
DamianG DamianG is offline
Miembro
 
Registrado: mar 2008
Posts: 95
Poder: 17
DamianG Va por buen camino
Gracias por tu respuesa. Por el momento borre los indices a detfcc y detfca como explique en la ultima parte y no esta saliendo el error.

Espero se solucione con eso.

Estarian de mas esos indices?????

gracias
Responder Con Cita
  #5  
Antiguo 23-09-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Cita:
Empezado por DamianG Ver Mensaje
Gracias por tu respuesa. Por el momento borre los indices a detfcc y detfca como explique en la ultima parte y no esta saliendo el error.

Espero se solucione con eso.

Estarian de mas esos indices?????

gracias
Yo más bien imagino que estarían corruptos ya que no se ver ningún funcionamiento normal de la base de datos que te pueda provocar ese error.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #6  
Antiguo 23-09-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Por cierto, esos índices realmente están de más, puesto que al definir una clave primaria ya se crea automáticamente un índice para ella, por lo que cualquier índice posterior sobre el mismo campo es redundante.

Pero vamos, aunque no sean necesarios ni vayan a mejorar tu rendimiento, tampoco no tienen que provocarte errores (hasta donde yo sé).
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #7  
Antiguo 23-09-2010
DamianG DamianG is offline
Miembro
 
Registrado: mar 2008
Posts: 95
Poder: 17
DamianG Va por buen camino
Debo tener algun concepto mal interpretado,

tengo la tabla FACCPA con los campos TIPCOM,LETCOM,PTOCOM,NROCOM como clave primaria.

despues tengo como tablas que dependen de FACCPA una que es de un detalle impositivo llamada DETFCC y otra con detalle de articulos de compra que es DETFCA, las 2 con los mismos campos que FACCPA en común para establecer la referencia. El tema es, en DETFCC Y DETFCA no tengo definidas claves primarias y habia creado indices para que las consultas supuestamente sean mas rapidas, ahi es la duda si son necesarias o no.

EJ de consulta.

tabla FACCPA

select * from faccpa
(la muestro en un dbgrid principal)

tabla DETFCC

datasource = dsfaccpa
select * from detfcc where tipcom=:tipcom and letcom=:letcom and ptocom=tocom and nrocom=:nrocom
(en otro dbgrid me va mostrando los detalles)

espero se entienda

saludos y gracias!
Responder Con Cita
  #8  
Antiguo 23-09-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Si, por lo que lei en tu mensaje, pensé que eran indices sobre las claves primarias.

En el caso que dices, sí que tienes que crear los índices para agilizar las consultas para estas claves foráneas.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ERROR index out of bounds (15) MikyVato Conexión con bases de datos 10 18-08-2010 15:35:28
Error (List Index of bounds)? DM2005 Varios 2 08-07-2006 12:53:29
Error List index out of bounds (14) AMINOA2R Firebird e Interbase 3 30-09-2005 00:32:57
error: Record/Key Deleted al importar datos a Access Capo Conexión con bases de datos 0 08-03-2005 22:59:21
Error Record/key deleted tbolzan Conexión con bases de datos 1 22-10-2004 15:44:07


La franja horaria es GMT +2. Ahora son las 17:28:25.


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