Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2013
cd.rafael cd.rafael is offline
Miembro
 
Registrado: abr 2012
Posts: 59
Poder: 13
cd.rafael Va por buen camino
Thumbs down Error Catastrófico

Cordial Saludo,

Definitivamente no estoy de acuerdo con este tipo de mensajes que muestra Delphi, lo deja a uno .

El problema es rarísimo y no sé qué pueda ser:

Hice una aplicación que me permita abrir cualquier tabla para poder realizar cualquier acción (insertar, editar, eliminar). Utilizo dbExpress.

Vay a tratar de dar un ejemplo para poderme explicar:

1. Inicio la aplicación para la TablaX. Al iniciar la aplicación, la tabla se encuentra cerrada.
2. Abro una forma de búsqueda donde puedo realizar un query cualquiera y no genera ningún problema, ej.

Código:
select * from TablaX
3. Cierro la aplicación, la inicio nuevamente para la misma TablaX y abro la foma de búsqueda y genero el siguiente query
y hasta aquí, ningún problema:

Código:
select * from TablaX where Campo1 = 1
4. Cierro la aplicación, la inicio nuevamente para la TablaY y abro la foma de búsqueda y genero el siguiente query
y... ERROR CATASTROFICO:
Código:
select * from TablaY
5. Cierro la aplicación, la inicio nuevamente para la misma TablaY y abro la foma de búsqueda y genero el siguiente query
y... ningún problema:

Código:
select * from TablaY where Campo1 = 1
La verdad es que no sé qué podrá ser y cabe advertir que todas las consultas son perfectamente válidas.

Agradezco muchísimo de antemano toda la ayuda posible.
Responder Con Cita
  #2  
Antiguo 12-03-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Código fuente necesitamos.
Responder Con Cita
  #3  
Antiguo 12-03-2013
cd.rafael cd.rafael is offline
Miembro
 
Registrado: abr 2012
Posts: 59
Poder: 13
cd.rafael Va por buen camino
Cordial Saludo,

Código:
    Application.CreateForm(TfrmBusqueda, frmBusqueda);
    frmBusqueda.gStEsquema := pStEsquema;
    frmBusqueda.gStTabla := pStTabla;
    frmBusqueda.gScxConexion := pQry.SQLConnection;
    frmBusqueda.ShowModal;
    if (frmBusqueda.gBlCancela) then
    begin
        Exit;
    end;
    if (Length(frmBusqueda.gStSQLAdd) > 0) then
    begin
        pClientDataSet.Close;
        pQry.Close;
        if (Pos('where', frmBusqueda.gStSQLAdd) = 0) and (Pos('where', LowerCase(pStSQL)) = 0) then
        begin
            pQry.SQL.Text := pStSQL + ' where 1 = 1 ' + frmBusqueda.gStSQLAdd;
        end else begin
            pQry.SQL.Text := pStSQL + ' ' + frmBusqueda.gStSQLAdd;
        end;
        pQry.Open;
    end else begin
        pQry.SQL.Text := pStSQL;
        pQry.Open;
    end;
    try
        pQry.Refresh;
        pClientDataSet.Open; //Aquí Genera el Error Catastrófico!!!
        pClientDataSet.Refresh;
    finally;
    end;
Muchas Gracias.
Responder Con Cita
  #4  
Antiguo 12-03-2013
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Ningún error en computación es catastrófico .

Cuál es exactamente el mensaje que tira el error?
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #5  
Antiguo 12-03-2013
cd.rafael cd.rafael is offline
Miembro
 
Registrado: abr 2012
Posts: 59
Poder: 13
cd.rafael Va por buen camino
Cordial Saludo,

Adjunto imagen.

Gracias.
Imágenes Adjuntas
Tipo de Archivo: jpg 1.jpg (12,6 KB, 51 visitas)
Responder Con Cita
  #6  
Antiguo 12-03-2013
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Es casi obvio para mí que este error no tiene nada que ver con Delphi, sino con algo externo usado por dbExpress o incluso aún el sistema operativo. Que tipo de tablas / motor de DB estás usando?
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #7  
Antiguo 12-03-2013
cd.rafael cd.rafael is offline
Miembro
 
Registrado: abr 2012
Posts: 59
Poder: 13
cd.rafael Va por buen camino
Cordial saludo,

SO. Windows 7
BD. Oracle 10g

Tipos de columnas utilizadas en la Tabla:

campo1 number(2)
campo2 varchar2(50)
campo3 varchar2(1)

Número de Registros: 20

Gracias.
Responder Con Cita
  #8  
Antiguo 13-03-2013
cd.rafael cd.rafael is offline
Miembro
 
Registrado: abr 2012
Posts: 59
Poder: 13
cd.rafael Va por buen camino
Cordial Saludo,

El error sale cuando intento abrir el ClientDataSet, pero lo raro es que solo falla en ciertas consultas, como expliqué, son dos consultas:

Código:
select * from TablaX --Funciona
select * from TablaY --No Funciona
select * from TablaY where Campo1 = 1 --Funciona
Hice la siguiente prueba: Modifiqué la siguiente propiedad:

Código:
ClientDataSet.PacketRecords := 1;
Y ahora si abre, pero no muestra todos los registros y cuando intento ir al último registro, me sale el dichoso "Error Catastrófico".

Cabe advertir que la tabla ahora tiene 32 registros y no creo que ese sea el problema.

Por ahí leí que podría ser error del Midas.dll, pero tampoco.

Alguien de casualidad tiene idea de qué se trata y de cómo resolver este problema?

Gracias.
Responder Con Cita
  #9  
Antiguo 13-03-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Estará estropeada la base de datos?
Responder Con Cita
  #10  
Antiguo 13-03-2013
cd.rafael cd.rafael is offline
Miembro
 
Registrado: abr 2012
Posts: 59
Poder: 13
cd.rafael Va por buen camino
Cordial Saludo,

La Base de Datos está perfecta, puedo consultar dicha tabla desde el SQL Developer sin problemas.
Responder Con Cita
  #11  
Antiguo 13-03-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues "divide y vencerás". Empieza por hacer un proyecto nuevo e ir probando paso a paso hasta que encuentres el fallo. No se me ocurre otra cosa, no tenemos información, no tenemos el programa, no tenemos básicamente nada para poder ayudarte, incluso esos selects que has puesto, seguramente tampoco es un copia->pega de tu código, así que no sé cómo ayudar.
Responder Con Cita
  #12  
Antiguo 14-03-2013
Avatar de ozsWizzard
ozsWizzard ozsWizzard is offline
Miembro
 
Registrado: may 2004
Ubicación: Murcia
Posts: 190
Poder: 21
ozsWizzard Va por buen camino
No tendrá nada que ver pero siempre leo que dbExpress es mejor que BDE, por ejemplo, pues estoy hasta los mismísimos del dbExpress.

El BDE nunca me dio problemas y el dbExpres me da fallos por todas partes. Para empezar, a veces me obliga a lanzar esta instrucción "Conexion.CloseDataSets" cuando no tengo ni un DataSet abierto, pero si no lo hago no me deja iniciar la transacción y tampoco puedo usarlo en dll porque falla. Esos y algún que otro error raro que no he conseguido sacar (entre ellos el error catastrófico)

Pero bueno, ahora ya tengo toda la aplicacción en dbExpress y ya es tarde para echarse atrás.

Por otra parte, tiene toda la pinta de que sea la transformación de un dato de un registro concreto de TablaY. Yo intentaría identificar que registro es.

Saludos.
__________________
La Madurez se llama...
~~~Gaia~~~
Responder Con Cita
  #13  
Antiguo 14-03-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Lo poco que he usado dbexpress me ha funcionado muy bien. Tan sólo tuve problema a la hora de la instalación... por no haber leido antes
Una vez instalado no tuve ni un problema de ningún tipo, iba como la seda, me sorprendió de lo bien que funciona y rápido.
No puedes compararlo con BDE, que es algo obsoleto y está "dado de baja" desde hace muchos años.
Responder Con Cita
  #14  
Antiguo 14-03-2013
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Si es al utilizar el ClientDataSet, puede que sea el archivo midas.dll, prueba a añadirlo en tu proyecto a ver que pasa.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #15  
Antiguo 14-03-2013
cd.rafael cd.rafael is offline
Miembro
 
Registrado: abr 2012
Posts: 59
Poder: 13
cd.rafael Va por buen camino
Cordial Saludo,

Perdón por la pregunta, pero... cómo agrego la librería la proyecto?

Gracias.
Responder Con Cita
  #16  
Antiguo 14-03-2013
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
En las uses del proyecto tienes que poner MidasLib.

Código Delphi [-]

program Presupuestos;


uses
  MidasLib,
  Forms,
  Controls,
  Unit1 in 'Unit1.pas' {FrmMenuPres},
  Unit2 in 'Unit2.pas' {FrmAcceso},  

{$R *.res}
var
  frmacceso:tfrmacceso;
begin
  Application.Initialize;
  frmacceso:=tfrmacceso.create(nil);
  if frmacceso.Showmodal=mrOK then
    begin
      frmacceso.Free;
      //Application.CreateForm(TFrmAcceso, FrmAcceso);
      Application.CreateForm(TFrmMenuPres, FrmMenuPres);
      Application.Run;
    end
  else
    begin
      frmacceso.Free;
    end;
end.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #17  
Antiguo 14-03-2013
Avatar de ozsWizzard
ozsWizzard ozsWizzard is offline
Miembro
 
Registrado: may 2004
Ubicación: Murcia
Posts: 190
Poder: 21
ozsWizzard Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Lo poco que he usado dbexpress me ha funcionado muy bien. Tan sólo tuve problema a la hora de la instalación... por no haber leido antes
Una vez instalado no tuve ni un problema de ningún tipo, iba como la seda, me sorprendió de lo bien que funciona y rápido.
No puedes compararlo con BDE, que es algo obsoleto y está "dado de baja" desde hace muchos años.
Sería justo decir que todos estos problemas no son solamente de dbExpress, siempre los he detectado (y encontrado por internet) con Sql Server (tampoco es santo de mi devoción esta BDD).

Ya sé que BDE está obsoleto pero a mí nunca me ha dado ningún problema sin embargo, si me pasa con las conexiones usando dbExpress.

Lo que he comentado de una dll tiene que haber un hilo por hay donde lo explico. Cambié a ADO y funciona perfectamente.

EL error del closedatasets lo leí por ahí también(hará ya unos 8 meses), es un error del cual eran conscientes en Embarcadero y microsoft, ambos pensarían que es culpa del otro...

Y aún me pasa alguna cosa rara más, como por ejemplo al cerrar las aplicaciones.

En una aplicación conecto el "TSqlConnection" en tiempo de ejecución (al crear el "DataModule"), al hacer Aplication.Terminate, si no desconecto después la conexión, me da un error infinito (hasta que la aplicación se cansa de sacar errores) y no es capaz de posicionar el error en ninguna parte.

Pero oye, que quien quiera que use dbExpress, si yo pudiera volvería atrás, al menos para usar Sql Server (aunque casi que cambiaba antes la BDD)

Ah, y siento desvirtuar el tema.




Por otra parte, insisto, ¿Has comprobado que no falle ningún registro?.

Piensa que si TablaX no falla y TablaY falla solamente si te traes todos los registros pero si solamente te traes algunos, no. Al ir al último también te falla (es decir, que pasa por el registro erróneo).

Siempre y cuando te refieras a que TablaX siempre es la misma e TablaY siempre es la misma, y no te refieras al orden de ejecutar las cosas.

Saludos
__________________
La Madurez se llama...
~~~Gaia~~~
Responder Con Cita
  #18  
Antiguo 18-03-2013
cd.rafael cd.rafael is offline
Miembro
 
Registrado: abr 2012
Posts: 59
Poder: 13
cd.rafael Va por buen camino
Cordial Saludo,

Hay cosas que nunca podré entender. Alguna vez, en mis épocas de Universidad, cuando algo no me funcionaba, lo que hacía era eliminar el objeto y volver a coloacrlo en el form, y... así es exactamente lo que hice. Saqué un pantallazo de las propiedades del ClientDataSet que tenía en mi DataModulo, lo borré y coloqué un nuevo ClientDataSet y le asigné las mismas propiedades del anterior, y adivinen qué?... FUNCIONA. Pero no tengo ni idea de qué pudo ser.

AHora me enfrento con otro Expediente X, pero me toca en otro hilo.

Muchas gracias a todos.
Responder Con Cita
  #19  
Antiguo 18-03-2014
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
Prueba sacar con el select menos registros de ...

los que te permite el Paquete del ClientDataSet. Yo he tenido ese problema y lo he solucionado así. Pero lo he hecho por intuición. No me ha vuelto a salir. Y me pasaba cuando llegaba al final del conjunto expuesto en el DBGrid por el select. Si este conjunto superaba el paquete del ClientDataSet entonces saltaba ese error ya que no se habían cargado todos los registros del select por ser mayor su número de los que el paquete ClientDataSet tenía establecidos. Mira los registros que produce el select y adapta la prop. PacketRecord, en consecuencia.
Si te pasa al cambiar de tabla deberías cerrar el ClientDataSet anterior antes de volver a cargarlo.
Prueba a ver qué pasa.
Suerte.
bulc

Última edición por bulc fecha: 18-03-2014 a las 10:46:44.
Responder Con Cita
  #20  
Antiguo 18-03-2014
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
18-03-2013
En lo dicho ...
__________________
Ya tengo Firma!
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 catastrófico con XMLTransformProvider y ClientDataset victortera Providers 3 18-03-2014 16:52:25
Error Catastrofico en DbExpress asirvent Conexión con bases de datos 9 07-09-2010 11:54:56
Error catastrofico, MySQL y ADO Juandedian Conexión con bases de datos 2 28-01-2008 19:27:23
Error catastrofico en BDS 2006 JF Sebastian Varios 0 22-01-2007 18:58:45
Mensaje de Error Catastrofico ElDioni Varios 7 07-04-2006 18:24:43


La franja horaria es GMT +2. Ahora son las 17:38:09.


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