Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-02-2014
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 20
socger Va por buen camino
Thumbs up Error commandtext does not return result set

Las líneas que abajo pongo funcionan bién en sql server 2000, pero cuando les tiro con un adoquery me da el error commandtext does not return result set

Código SQL [-]
DECLARE @mi_tabla TABLE ( NumeroRegistro int, NumeroVehiculo nchar(5), NumeroMatricula varchar(15), RFID_Salida datetime, RFID_Entrada datetime, Serv_Ano_Creacion smallint, Serv_Codigo int, Serv_Linea int, Serv_Conductor char(5) )
INSERT INTO @mi_tabla
SELECT a.NumeroRegistro, a.NumeroVehiculo, a.NumeroMatricula,
 (
SELECT TOP 1 z.CUANDO
 FROM Murcia.dbo.tbl_RFID_Movimientos as z
 WHERE z.ANTENA LIKE '%Ant0%'
 AND z.id_Vehiculo = a.NumeroRegistro
 AND z.CUANDO >= '07/02/2014 0:00:00'
 AND z.CUANDO <= '07/02/2014 23:59:59'
 ORDER BY z.id_Vehiculo ASC, z.CUANDO DESC
 ) AS RFID_Salida, 
 (
SELECT TOP 1 z.CUANDO
 FROM Murcia.dbo.tbl_RFID_Movimientos as z
 WHERE z.ANTENA LIKE '%Ant1%'
 AND z.id_Vehiculo = a.NumeroRegistro
 AND z.CUANDO >= '07/02/2014 0:00:00'
 AND z.CUANDO <= '07/02/2014 23:59:59'
 ORDER BY z.id_Vehiculo ASC, z.CUANDO DESC
 ) AS RFID_Entrada, 
 (
SELECT TOP 1 Ano_Creacion FROM [Murcia].[dbo].[tbl_Servicios_Montaje]
 WHERE [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio] <= '07/02/2014 14:17:51' AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final] >= '07/02/2014 14:17:51'
 AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo] =  a.NumeroVehiculo
 AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Baja] IS NULL
 ORDER BY [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo],  [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio],  [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final]
 ) as Serv_Ano_Creacion, 
 (
SELECT TOP 1 Codigo FROM [Murcia].[dbo].[tbl_Servicios_Montaje]
 WHERE [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio] <= '07/02/2014 14:17:51' AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final] >= '07/02/2014 14:17:51'
 AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo] =  a.NumeroVehiculo
 AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Baja] IS NULL
 ORDER BY [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo],  [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio],  [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final]
 ) as Serv_Codigo, 
 (
SELECT TOP 1 Linea FROM [Murcia].[dbo].[tbl_Servicios_Montaje]
 WHERE [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio] <= '07/02/2014 14:17:51' AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final] >= '07/02/2014 14:17:51'
 AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo] =  a.NumeroVehiculo
 AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Baja] IS NULL
 ORDER BY [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo],  [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio],  [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final]
 ) as Serv_Linea, 
 (
SELECT TOP 1 Conductor FROM [Murcia].[dbo].[tbl_Servicios_Montaje]
 WHERE [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio] <= '07/02/2014 14:17:51' AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final] >= '07/02/2014 14:17:51'
 AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo] =  a.NumeroVehiculo
 AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Baja] IS NULL
 ORDER BY [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo],  [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio],  [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final]
 ) as Serv_Conductor 
 FROM [SocGer].[dbo].[tbl_Vehiculos] as a
 WHERE a.[Fecha_Baja] IS NULL
 AND a.[Empresa_Colaboradora] IS NULL
 ORDER BY a.NumeroVehiculo ASC
SELECT s.Descripcion, x.* FROM @mi_tabla as x LEFT JOIN [Murcia].[dbo].[tbl_Servicios] as s ON x.Serv_Ano_Creacion = s.Ano_Creacion AND x.Serv_Codigo = s.Codigo WHERE x.RFID_Entrada > x.RFID_Salida OR x.RFID_Entrada = x.RFID_Salida OR ( x.RFID_Entrada IS NULL AND x.RFID_Salida IS NULL )
 ORDER BY x.NumeroVehiculo ASC

El código en Delphi es sencillo

Código Delphi [-]
ado_Qry_Vehiculos_en_Base.Sql.Clear;
ado_Qry_Vehiculos_en_Base.Sql.Add( ... una copia exacta de las líneas de arriba sql server ...);

// Abro el adoConection ... que lo hace bien
ado_Con_Vehiculos_en_Base.Connected := True;

ado_Qry_Vehiculos_en_Base.ExecSQL;

// Cuando ejecuto esta sentencia siguiente me da el error que comento
ado_Qry_Vehiculos_en_Base.Active := True;

Al pasar hacer el open del adoQuery me genera el error commandtext does not return result set

Así que si alguien supiera decirme en que estoy fallando se lo agradecería eternamente.

Saludos
Responder Con Cita
  #2  
Antiguo 07-02-2014
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 16
TOPX Va camino a la fama
Llamando al método ExecSql, el DataSet ejecuta el INSERT en cuestión; así que, sin mayor información, le cuento que sobra el hecho de modificar posteriormente el valor de la propiedad Active.
-
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #3  
Antiguo 07-02-2014
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 20
socger Va por buen camino
NO está todavía ... te explico

Verás que lo que hago es crear una variable temporal de tipo table en la que hago un insert de una select bastante larga y luego al final vuelvo a hacer una select pero de la variable / table temporal

Por eso hago una ado_query.execsql y luego un ado_query.active := True
para traerme los registros de la tabla temporal recién creada en una variable de tipo table.

Pero justo al hacer el open de la tabla me da el error.

Por lo que agradecería que alguien me lo pudiera solucionar el problema.

Saludos.
Responder Con Cita
  #4  
Antiguo 07-02-2014
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 20
socger Va por buen camino
mejor aclaracion de la SQL

Perdón esto es lo que le faltaba al post anterior para ver la aclaración de la SQL

Código SQL [-]
***************************************************************************
** El bloque siguiente crea la variable/tabla temporal
***************************************************************************
DECLARE @mi_tabla TABLE ( NumeroRegistro int, NumeroVehiculo nchar(5), NumeroMatricula varchar(15), RFID_Salida datetime, RFID_Entrada datetime, Serv_Ano_Creacion smallint, Serv_Codigo int, Serv_Linea int, Serv_Conductor char(5) )

***************************************************************************
** Todo el bloque siguiente inserta registros usando la estructura insert + select
***************************************************************************
INSERT INTO @mi_tabla

SELECT  a.NumeroRegistro, a.NumeroVehiculo, a.NumeroMatricula,
    (SELECT TOP 1 z.CUANDO
      FROM Murcia.dbo.tbl_RFID_Movimientos as z
      WHERE z.ANTENA LIKE '%Ant0%'
      AND z.id_Vehiculo = a.NumeroRegistro
      AND z.CUANDO >= '07/02/2014 0:00:00'
      AND z.CUANDO <= '07/02/2014 23:59:59'
      ORDER BY z.id_Vehiculo ASC, z.CUANDO DESC
    ) AS RFID_Salida, 

    (SELECT TOP 1 z.CUANDO
      FROM Murcia.dbo.tbl_RFID_Movimientos as z
      WHERE z.ANTENA LIKE '%Ant1%'
      AND z.id_Vehiculo = a.NumeroRegistro
      AND z.CUANDO >= '07/02/2014 0:00:00'
      AND z.CUANDO <= '07/02/2014 23:59:59'
      ORDER BY z.id_Vehiculo ASC, z.CUANDO DESC
    ) AS RFID_Entrada, 

    (SELECT TOP 1 Ano_Creacion 
      FROM [Murcia].[dbo].[tbl_Servicios_Montaje]
      WHERE [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio] <= '07/02/2014 14:17:51' AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final] >= '07/02/2014 14:17:51'
      AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo] =  a.NumeroVehiculo
      AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Baja] IS NULL
      ORDER BY [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo],  [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio],  [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final]
    ) as Serv_Ano_Creacion, 

    (SELECT TOP 1 Codigo 
      FROM [Murcia].[dbo].[tbl_Servicios_Montaje]
      WHERE [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio] <= '07/02/2014 14:17:51' AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final] >= '07/02/2014 14:17:51'
      AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo] =  a.NumeroVehiculo
      AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Baja] IS NULL
      ORDER BY [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo],  [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio],  [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final]
    ) as Serv_Codigo, 

    (SELECT TOP 1 Linea 
      FROM [Murcia].[dbo].[tbl_Servicios_Montaje]
      WHERE [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio] <= '07/02/2014 14:17:51' AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final] >= '07/02/2014 14:17:51'
      AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo] =  a.NumeroVehiculo
      AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Baja] IS NULL
      ORDER BY [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo],  [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio],  [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final]
    ) as Serv_Linea, 

    (SELECT TOP 1 Conductor 
      FROM [Murcia].[dbo].[tbl_Servicios_Montaje]
      WHERE [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio] <= '07/02/2014 14:17:51' AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final] >= '07/02/2014 14:17:51'
      AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo] =  a.NumeroVehiculo
      AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Baja] IS NULL
      ORDER BY [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo],  [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio],  [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final]
    ) as Serv_Conductor 

 FROM [SocGer].[dbo].[tbl_Vehiculos] as a
 WHERE a.[Fecha_Baja] IS NULL
 AND a.[Empresa_Colaboradora] IS NULL
 ORDER BY a.NumeroVehiculo ASC

***************************************************************************
** El bloque ANTERIOR creaba los registros de la variable/tabla temporal
** Las líneas siguientes lo que hacen es traerme esos registros de esa 
** variable/tabla temporal pero trayendo también registros de otra tabla
** mediante el uso de LEFT JOIN
***************************************************************************
SELECT   s.Descripcion, 
    x.* 
  FROM @mi_tabla as x 
  LEFT JOIN [Murcia].[dbo].[tbl_Servicios] as s 
         ON x.Serv_Ano_Creacion = s.Ano_Creacion 
        AND x.Serv_Codigo = s.Codigo 
  WHERE x.RFID_Entrada > x.RFID_Salida 
     OR x.RFID_Entrada = x.RFID_Salida 
     OR ( x.RFID_Entrada IS NULL AND x.RFID_Salida IS NULL )
 ORDER BY x.NumeroVehiculo ASC
Responder Con Cita
  #5  
Antiguo 07-02-2014
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Hola,
supongo que te sobra el execsql.

yo hago esto en un caso exactamente igaul y funciona de maravilla. En definitiva, creo una variable tipo tabla, hago un insert, recorro la tabla on un cursor y hago varios cálculos, ...

La llamada al botón de ejecutar es así.

Código Delphi [-]
procedure TForm1.EjecutarConsulta;
begin
ADOQuery1.Close;
ADOConnection1.Connected:= False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:= DBMemo1.Text;
DataSource1.DataSet:=ADOQuery1;
ADOConnection1.Connected:= True;
ADOQuery1.Open;
end;

El texto de la consulta lo tengo en un campo de una tabla (DBMemo1).

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #6  
Antiguo 07-02-2014
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Hola SocGer,

Como dicen los compañeros, quita el ExecSQL.

No hace falta que abras el AdoConnection, ya se encarga el AdoQuery de hacerlo y, cuando cierres el AdoQuery, solo cierra el AdoConnection el cual cierra automáticamente el AdoQuery.

Código Delphi [-]
...
begin
  with ado_Qry_Vehiculos_en_Base do
  begin
    SQL.Clear;
    SQL.Add( ... una copia exacta de las líneas de arriba sql server ...);
    Open;
  end;
  // Hacer lo que sea con los datos que te devuelve.
  ...
  ...
  ...
  // Cerrar el AdoConnection
  ado_Con_Vehiculos_en_Base.Close;
end;
Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #7  
Antiguo 08-02-2014
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 20
socger Va por buen camino
El problema persiste

A ver, esto ya lo probé por investigar en internet y ver en que fallaba.

Incluso con el .open y sin el execsql sigue persistiendo el problema.

A ver si fuera esto... Tengo SQL Server 2000 y Delphi 5 .... Esto es por si acaso alguien sabe de un tema de incompatibilidad.

Por cierto gracias a todos, chicos. Y muchas gracias por estar atentos... sobre todo a salv

Si encontráis el fallo me lo comentáis, de momento voy a crear una función que me devuelva lo que me interesa, que es otro aporte que he encontrado en internet como sugerencia.

Saludos
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
Firebird, DBX, CommandText pablonill Conexión con bases de datos 2 17-12-2012 16:01:05
Remote Error CommandText changes are not allowed Jere_84 Providers 1 04-01-2012 20:44:21
CommandText: Duda Paulao Varios 4 12-08-2008 20:31:21
PROCEDURE xxx.yyy can't return a result set in the given context. erian96 MySQL 2 15-07-2006 21:13:49
'Return no-apply' Roy Varios 9 10-06-2003 22:37:38


La franja horaria es GMT +2. Ahora son las 19:13:19.


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