FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 y hasta aquí, ningún problema: Código:
select * from TablaX where Campo1 = 1 y... ERROR CATASTROFICO: Código:
select * from TablaY y... ningún problema: Código:
select * from TablaY where Campo1 = 1 Agradezco muchísimo de antemano toda la ayuda posible. |
#2
|
||||
|
||||
Código fuente necesitamos.
|
#3
|
|||
|
|||
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; |
#4
|
||||
|
||||
Ningún error en computación es catastrófico .
Cuál es exactamente el mensaje que tira el error? |
#5
|
|||
|
|||
Cordial Saludo,
Adjunto imagen. Gracias. |
#6
|
||||
|
||||
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?
|
#7
|
|||
|
|||
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. |
#8
|
|||
|
|||
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 Código:
ClientDataSet.PacketRecords := 1; 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. |
#9
|
||||
|
||||
¿Estará estropeada la base de datos?
|
#10
|
|||
|
|||
Cordial Saludo,
La Base de Datos está perfecta, puedo consultar dicha tabla desde el SQL Developer sin problemas. |
#11
|
||||
|
||||
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.
|
#12
|
||||
|
||||
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~~~ |
#13
|
||||
|
||||
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. |
#14
|
||||
|
||||
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. |
#15
|
|||
|
|||
Cordial Saludo,
Perdón por la pregunta, pero... cómo agrego la librería la proyecto? Gracias. |
#16
|
||||
|
||||
En las uses del proyecto tienes que poner MidasLib.
__________________
Confórmate con lo que tienes pero anhela lo que te falta. |
#17
|
||||
|
||||
Cita:
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~~~ |
#18
|
|||
|
|||
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. |
#19
|
||||
|
||||
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. |
#20
|
||||
|
||||
18-03-2013
En lo dicho ...
__________________
Ya tengo Firma! |
|
|
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 |
|