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 01-10-2004
aig aig is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 56
Poder: 22
aig Va por buen camino
Cool 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
Responder Con Cita
  #2  
Antiguo 01-10-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 01-10-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
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 :.
Responder Con Cita
  #4  
Antiguo 01-10-2004
rafita rafita is offline
Miembro
 
Registrado: ago 2003
Ubicación: Cuenca- España.
Posts: 309
Poder: 22
rafita Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 01-10-2004
aig aig is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 56
Poder: 22
aig Va por buen camino
Cool

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:
porqué no pruebas a meterlo todo en una linia?
Esto ya lo habiamos hecho el mensaje de error seguía apareciendo.
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:
por lo cual un CLEAR (creo que era ese) no vendría nada mal
Si que hacemos un clear al inicio del código.

Rafita:
Cita:
Haz un procedimiento almacenado
Gracias pero la cuestión es averiguar donde está el fallo (puede que sea nuestro)
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


La franja horaria es GMT +2. Ahora son las 01:59:45.


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