FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
superADO en busca del Espacio insuficiente para completar la operación
Hola a todos.
Tengo un problema al realizar una select desde un componente tAdoQuery contra una b.d. Sql Server, utilizando Delphi 6. La select principal tiene varios inner join. Una columna se obtiene a partir de otra select anidada. Y por último en el WHERE uno de los valores de una condición se obtiene a partir de una select en otra tabla. Es decir una select normalita..... Esta instrucción funciona correctamente desde el Administrador Corporativo de SqlServer. Tambien funciona si se añade directamente a la propiedad SQL del componente tAdoQuery. Pero el problema aparece si se añade por código a la propiedad SQL del componente ....sql.add('.... . Al ejecutar la aplicación aparece el error: Espacio insuficiente para completar la operación. Mas información: si la aplicación se ejecuta fuera de delphi el mensaje de error es un Acces Violation... en el módulo ntdll.dll (a partir de esta linea el mensaje es irrelevante....solo tiene la función de desahogo personal e intransferible...) No sé si el problema está en el componente, en el equipo local, en el servidor, en el sql server, en los diez mandamientos o el protocolo de Kioto......por tanto no sé donde buscar la solución: en la cara oculta.. , en la biblia (de delphi por supuesto), o en el libro de todas las respuestas que apareció en cronicas ... Última edición por aig fecha: 01-10-2004 a las 13:36:43. Razón: mas información |
#2
|
||||
|
||||
Wop!
El hecho que el error salte en castellano, me hace pensar que sea un error del servidor, pero no estoy seguro. En cualquier caso, te propongo una tontería como un piano, pero igual cuela. Cuando haces strings.add, obviamente, generas una nueva linia. Cada cambio de línea son dos caracteres más, ergo... porqué no pruebas a meterlo todo en una linia? Si esto no te funciona, otra opción es substituir alguna de las subselects por vistas, eso te ahorrará mucho espacio.
__________________
E pur si muove |
#3
|
|||
|
|||
Hola,
No utilizo ADO, pero probaría lo que dice el amigo Marto. Además, y puede ser otra tontería, antes de hacer el ADD deberías comprobar que no te esté agregando eso a otra sentencia anterior, por lo cual un CLEAR (creo que era ese) no vendría nada mal. Si vos decís que en el Administrador Corporativo te funciona bien entonces en algo le estás errando desde Delphi, o por lo menos eso creo.
__________________
Suerte .: Gydba :. |
#4
|
|||
|
|||
Hola,
Yo he utilizado ADO muy poco, lo que unido a mis pocos conocimientos de Delphi y SQL Server me hacen poco apropiado para resolver tu problema, pero quería aportar una idea: Haz un procedimiento almacenado. Un saludo.
__________________
Rafita. |
#5
|
|||
|
|||
Bueno, muchas gracias por las respuestas..
La solución o el porqué de este problema es algo que se convierte en un reto personal. La select es para obtener un informe determinado y ya le hemos dado la vuelta para conseguirlo de otra forma. El tema está ahora en averiguar si estamos metiendo la pata en alguna parte del código o simplemente es un fallo del componente, del Sistema Operativo o de ??? Marto: Cita:
Cuando dices mensaje del servidor te refieres al Sql Server?. Lo digo porque normalmente suelen ser en ingles y al ser en español yo pienso mas que puede tratarse de un error en el S.O. local. Gydba : Cita:
Rafita: Cita:
|
|
|
|