Los foros del Guille

elGuille.hosting: Ofertas de alojamiento
posiblemente los mejores precios
¡¡¡ Ahora con el doble de casi todo !!!

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 
Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu interés (algunos de los avisos publicados)

10/sep/2005
- Se puede indicar las fechas a mostrar en los mensajes de un foro, (el formato es mes/dia/año).
- Desde Personalizar puedes acceder a los zips posteados por los moderadores como respuestas a preguntas de los foros, también puedes seleccionar los foros favoritos para que te notifique.

  Foro: Office.Programación Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 50221 - Estatuto SQL demasiado largo, cuando se consultan datos via ADO 2
IDAsuntoFechaNick 
50221 Estatuto SQL demasiado largo, cuando se consultan datos via ADO 229/09/09 05:22Padawan_Falcon   
Estatuto SQL demasiado largo, cuando se consultan datos via ADO 2

Buenos dias, compañeros.

Mi situación es la siguiente, desde una macro me conecto a una db oracle, y extraigo los datos sin problemas usando un objeto ADO 2, siempre que el estatuto sql sea “relativamente corto”, por ejemplo:


gsSQL = "SELECT NUM_ID, NUM_IDENTIFICACION, NOM_NOMBRE, NOM_APELLIDO1, NOM_APELLIDO2 FROM FACT_OWNER.FACT_PERSONA WHERE (NOM_NOMBRE='MARIA') AND (NOM_APELLIDO2='CHAVES')"

Pero recientemente he tenido que escribir un estatuto SQL demasiado largo y cuando el programa pasa por la instrucción open, me dice que no encuentra el “FROM”, al revisar el contenido de la variable que tiene el estatuto SQL, veo que esta se corta antes de llegar al from:

SELECT FACT_PERFIL.COD_PERFIL, FACT_PERFIL.DSC_PERFIL, FACT_SRV_APLICACION.ARCHIVO, FACT_SRV_APLICACION.TIPO_SERVICIO,
FACT_OBJ_SRV.DSC_ELEMENTO, FACT_SRV_APLICACION.DSC_SERVICIO, FACT_OBJ_SRV.TIPO_ELEMENTO FROM FACT_OWNER.FACT_OBJ_SRV
FACT_OBJ_SRV, FACT_OWNER.FACT_PERFIL FACT_PERFIL, FACT_OWNER.FACT_SRV_APLICACION FACT_SRV_APLICACION,
FACT_OWNER.FACT_SRV_PERFIL FACT_SRV_PERFIL WHERE FACT_SRV_PERFIL.COD_PERFIL = FACT_PERFIL.COD_PERFIL AND
FACT_SRV_PERFIL.ID_SERVICIO = FACT_SRV_APLICACION.ID_SERVICIO AND FACT_OBJ_SRV.ID_SERVICIO = FACT_SRV_PERFIL.ID_SERVICIO AND
((FACT_PERFIL.FEC_BORRADO Is Null) AND (FACT_SRV_PERFIL.FEC_BORRADO Is Null) AND (FACT_SRV_APLICACION.FEC_BORRADO Is Null) AND
(FACT_PERFIL.COD_PERFIL Like 'AFIL%') AND (FACT_OBJ_SRV.FEC_BORRADO Is Null)) AND
FACT_PERFIL.COD_PERFIL||FACT_OBJ_SRV.ID_SERVICIO||FACT_OBJ_SRV.DSC_ELEMENTO||FACT_OBJ_SRV.TIPO_ELEMENTO NOT IN (SELECT
FACT_OBJ_SRV_PRF.COD_PERFIL||FACT_OBJ_SRV_PRF.ID_SERVICIO||FACT_OBJ_SRV_PRF.DSC_ELEMENTO||FACT_OBJ_SRV.TIPO_ELEMENTO FROM
FACT_OWNER.FACT_OBJ_SRV FACT_OBJ_SRV, FACT_OWNER.FACT_OBJ_SRV_PRF FACT_OBJ_SRV_PRF WHERE FACT_OBJ_SRV_PRF.DSC_ELEMENTO =
FACT_OBJ_SRV.DSC_ELEMENTO AND FACT_OBJ_SRV_PRF.ID_SERVICIO = FACT_OBJ_SRV.ID_SERVICIO AND ((FACT_OBJ_SRV_PRF.FEC_BORRADO Is
Null) AND (FACT_OBJ_SRV.FEC_BORRADO Is Null))) ORDER BY FACT_OBJ_SRV.DSC_ELEMENTO DESC

Y este es el codigo que utilizo para consultar, que con un estatuto sql pequeño si funciona:
Sub PRUEBA2()
Dim Col As Long
Dim Row As Long
Dim sqltxt As String
Set gConexion = New ADODB.Connection
lsConexion = "Provider=MSDASQL.1;Persist Security Info=False;User ID=jvalveji;Password=Marte8080;Data Source=SFCV01.world"
gConexion.Open lsConexion

Set gRegistros = New ADODB.Recordset 'Inicializa la variable de los registros
gsSQL = "SELECT * FROM gnac.empleado where empleado = '900760864'"

gRegistros.Open gsSQL, gConexion, 2, 3
Row = 1
While Not gRegistros.EOF
For a = 0 To 4
Col = a + 1
If IsNumeric(gRegistros.Fields(a)) Then
Cells(Row, Col) = CStr(gRegistros.Fields(a))
Else
Cells(Row, Col) = gRegistros.Fields(a)
End If

Next a
Row = Row + 1
gRegistros.MoveNext
Wend
gRegistros.Close
gConexion.Close
Set gRegistros = Nothing
Set gConexion = Nothing
End Sub

Preguntas:
Hay alguna forma de expandir la longitude de la variable que guarda el estatuto SQL?
Sera que no estoy haciendo la consulta correctamente?
O es que tengo que usar otro objeto de conexión?

Saludos …
IDAsuntoFechaNick 
50479 Re: Estatuto SQL demasiado largo, cuando se consultan datos via ADO 2 (Resp: 50221)20/10/09 14:35May   
hola,

No se si habras ya solucionado el tema o no pero en todo caso pregunto:

-Desde donde estas ejecutando el codigo?? que programa o soft utilizas para la ejecucion de ese codigo ??
-has probado si funciona correctamente en Oracle esa consulta que intentas cargar en la variable?

Comentanos...!

Saludos
Monica


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
50487 Re: Estatuto SQL demasiado largo, cuando se consultan datos via ADO 2 (Resp: 50221)20/10/09 22:25Padawan_Falcon   
Buenas compañeros, si ya resolví el problema.

La consulta la estoy haciendo directamente desde una macro en Excel 2007 haciendo uso de VBA, a una bd oracle.

En oracle la consulta anterior se ejecuta correctamente, es mas si la ejecuto desde en MSQuery igual funciona.

El problema es la longitud de la consulta (longitud en cantidad de caracteres), es muy extensa; asi que lo que hice, fue ponerle alias muy cortos a las tablas, alias de una sola letra, y asi calificar los campos de las tablas, de esta forma pude reducir la longitud en caracteres de la consulta en varias lineas, luego de esto la consulta se ejecutó sin problema alguno.


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
50510 Re: Estatuto SQL demasiado largo, cuando se consultan datos via ADO 2 (Resp: 50487)22/10/09 09:31May   
Muchas gracias por el feed-back Padawan rie !!

Saludos
Monica


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.

 
(c) Guillermo 'guille' Som, 2005-2017  - foros.elGuille v1.0.5.3 (23/Mar/2009 14:50 GMT +1)  - (ASP.NET 2.0 v2.0.50727.8762)
 
Usuarios activos: 19 - App. iniciada: 18/11/2017 18:43:39 GMT - La hora GMT del servidor es: 18/11/2017 19:28:20 GMT