Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-05-2007
FelipeDiaz FelipeDiaz is offline
Miembro
 
Registrado: may 2007
Posts: 75
Poder: 18
FelipeDiaz Va por buen camino
Exclamation Problemas al correr Aplicacion

Hola a todos.

Tengo un problema con una aplicacion que desarrolle en Delphi.
Ella accesa a una base de datos de Paradox y viene funcionando desde hace dos años bien, sin mayor problema.

Hace una semana de un momento a otro cuando el usuario dio Click al icono para correrla, no aparecio el formulario principal ni ningun otro.

La estuve revisando bajo el entorno de Delphi desde mi PC, y sucede igual, la ejecuto y veo compilar normalmente, pero nunca aparece ningun objeto visible. Aparentemente la aplicacion esta siendo ejecutada pues el boton de ejecutar.. esta inecativo, me toca ssupender con Controil + F2.

Cuando intento abrir los formularios uno por uno.... se bloquea Delphi por completo.

Este problema desaparece cuando reemplazo la base de datos por una copia que realice varios dias atras. Lo raro es que Delphi nunca me indica que hay error en la BD.

No se que hacer. Se que una solucion practica es dejar la copia anterior y cargar toda al informacion nueva. Pero no estoys egurom que esto no vuelva a pasar.

De casi 50 tablas no se como hacer para revisarlas y encontrar el posible error.

Ademas no se si es que llegue a un maximo de registros de paradox (2 billones) no creo. El codigo esta bien pues ha funcionado por dos años sin problema. Aqui permitanme utilizar la conocida frase "Ohh y ahora Quien podra Ayudarme" .... Si no es el chapulin...por favor alguien que sepa.

Otra cosa: Siempre que ejecutan la aplicacion aparecen muchos arcivos consecutivos en el directorio dodne esta el ejecutable con nobres como _QSQ1.MB, _QSQ2.MB, _QSQ3.MB, _QSQ3.MB etc. en una ocasion estos archivos no se borraron y se generaba perdida de datos recien grabados. y en una ocasion llegaron a ser tantos que la sumatoria ocupaba 1,2GB, cosa que me parece absurda.

Agradezco alguien me pueda ilustrar ..sera que estoy dejando de hacer algo?, pues la aplicacion hasata ahora ha sido funcional. es decir el codigo tiene logica y funciona, pero no se si quedan archivos abiertos.


Bueno aquien pueda ayudarme espero que yo haya podido explicar bien.
Agradezco el interes tal ves si a algunso no les ha sucedido aun, les pueda servir la soluciuon que me den.

Saludos a todos, confio que alquien pueda ayudarme.

Felipe.
Responder Con Cita
  #2  
Antiguo 03-05-2007
Avatar de droguerman
droguerman droguerman is offline
Miembro
 
Registrado: abr 2005
Ubicación: tierra
Posts: 999
Poder: 20
droguerman Va por buen camino
que extraño, para descartar problema de la base de datos por que no recreas la estructura nuevamente y copias todos los datos de cada tabla
__________________
self.free;
Responder Con Cita
  #3  
Antiguo 03-05-2007
FelipeDiaz FelipeDiaz is offline
Miembro
 
Registrado: may 2007
Posts: 75
Poder: 18
FelipeDiaz Va por buen camino
La estructura de la Tabla

Muchas gracias por tu ayuda.
Luego de tu indicacion...El problema era revisar las 60 tablas que componen la base de datos. Las tabals abrian sin problema por la consola de DATABASE DESTOK.

No se si habia una o varais tablas, pero comence a reemplazar desde el explorador de windows, grupos de tablas y corria el programa, y asi hasta encontrar las tablas o tabla que lo bloqueaban.

Al final la encontre como en la numero 42 de 60. Reemplazando esta, pude rescatar el funcionamiento normnal de la aplicacion.

Lo curioso es que en anteriores ocasiones cuando habia problema de tablas, delphi em enviaba un mensaje.. algo asi como Corrupt File. o Key Violation. pero esta ves solo parecia que corria sin mostrar nada.

Al revisar la tabla que generaba el bloqueo, encontre estas caracteristicas:
1. Si recorria sus registros de arriba a abajo, buscando llegar al final.....nunca terminaba, al parecer los datos se repetian despues de un ciclo pero los indices autocrecientes si cambiaban.
2. Los indices autocrecientes (esos que aparecen en paradox al principio de cada tabla), debian comenzar desde 1, 2, 3, 4 y asi sucesivamente, aqui encontre que comenzaba desde -5, -4, -3, incluso habia uno que no tenia estaba en blanco.

Bueno por si a alguien le pasa.... puede ir a la fija... alguna tabla se daño.

Agradezco tu colaboracion. Ya estaba medio frustrado epnsando que al faya era algun limitante en el software. Pero veo que fue un daño.

Saludos,

Felipe
Responder Con Cita
  #4  
Antiguo 04-05-2007
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 21
sitrico Va por buen camino
Prueba compactar y reindexar todas las tablas (antes haz un respaldo )

te lo paso como me lo pasaron:

Código Delphi [-]
procedure PackPdoxTable(Table: TTable);
var
  TableDesc: CRTblDesc;
  WasActive: Boolean;
  hDatabase: hDbiDB;
begin
  WasActive := Table.Active;
  Screen.Cursor := crHourglass;
  try
    // open if it was closed
    // (to get the valid DBHandle)
    if not WasActive then
      Table.Open;
    // get the database handle and close the table
    hDatabase := Table.DBHandle;
    Table.Close;
    // fill the table descriptor
    FillChar (TableDesc, SizeOf (CRTblDesc), 0);
    with TableDesc do
    begin
      StrPCopy (szTblName, Table.TableName);
      StrPCopy (szTblType, szParadox);
      bPack := True;
    end;
    // restructure the table, packing it
    if hDatabase <> nil then
      Check (DBIDoRestructure (hDatabase, 1,
        @TableDesc, nil, nil, nil, False))
    else
      ShowMessage ('No se encontro el manejador de la BDD');
  finally
    Screen.Cursor := crDefault;
    // eventually reopen
    if WasActive then
      Table.Open;
  end;
end;

Si usas un campo de autoincremento también puedes hacer lo siguiente:

Modifica la estructura da la tabla y pon el campo autoinc como integer, luego compacta la tabla y al final lo vuelves a poner autoinc.
__________________
Sitrico

Última edición por sitrico fecha: 04-05-2007 a las 01:39:50.
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
Correr una aplicacion en una pc sin delphi Jheysson13 Varios 4 04-10-2006 21:14:21
Correr aplicación con firebird en K\: y S.O. en otro disco coyotaxo Conexión con bases de datos 0 12-10-2005 22:01:23
Aplicacion con problemas. gasal Lazarus, FreePascal, Kylix, etc. 4 21-02-2005 12:49:00
evitar correr mismo form en aplicacion MDI @-Soft OOP 5 01-07-2004 06:03:43
Problemas con aplicacion web marcelo Internet 1 09-09-2003 17:44:22


La franja horaria es GMT +2. Ahora son las 23:08:21.


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