Oscarac, amigo no me entiendes, yo no llego a terminar el procemiento almacenado, ya que cuando lo voy a probar la sintaxis me da el error y no meja salvarlo de esta forma:
Código SQL
[-]CREATE PROCEDURE dbo.Factura1 @SHaving CHAR(256) AS SELECT dbo.OT.OT, SUM(dbo.OT.ImpCUC) AS ImpCUC, SUM(dbo.OT.ImpMN) AS ImpMN, dbo.OT.IdCentral, dbo.Entidades.Descripcion, dbo.Motores.Marca, dbo.Motores.Modelo, dbo.Horas.Horas, dbo.Centrales.Nombre, dbo.OTObservaciones.Observaciones, dbo.OT.Bateria, dbo.OT.Motor FROM dbo.OT LEFT OUTER JOIN dbo.Entidades ON dbo.OT.IdEntidad = dbo.Entidades.IdEntidad LEFT OUTER JOIN dbo.Motores ON dbo.OT.IdMotor = dbo.Motores.IdMotor LEFT OUTER JOIN dbo.Horas ON dbo.OT.IdHoras = dbo.Horas.IdHoras LEFT OUTER JOIN dbo.Centrales ON dbo.OT.IdCentral = dbo.Centrales.IdCentral LEFT OUTER JOIN dbo.OTObservaciones ON dbo.OT.OT = dbo.OTObservaciones.OT GROUP BY dbo.OT.OT, dbo.OT.IdCentral, dbo.Entidades.Descripcion, dbo.Motores.Marca, dbo.Motores.Modelo, dbo.Horas.Horas, dbo.Centrales.Nombre, dbo.OTObservaciones.Observaciones, dbo.OT.Bateria, dbo.OT.Motor HAVING (SHaving) GO
Que pasa, eso está programado para ser usado con base de datos en ACCESS y yo lo estoy pasando a SQL te pongo la sintaxis para que veas como está ahora,:
Código Delphi
[-] MDIPrincipal.UsoSQL('SELECT OT.OT, Sum(OT.ImpCUC) AS ImpCUC,'
+ ' Sum(OT.ImpMN) AS ImpMN, OT.IdCentral, Entidades.Descripcion,'
+ ' Motores.Marca, Motores.Modelo, Horas.Horas, Centrales.Nombre,'
+ ' OTObservaciones.Observaciones, OT.Bateria, OT.Motor'
+ ' FROM ((((OT LEFT JOIN Entidades ON OT.IdEntidad = Entidades.IdEntidad)'
+ ' LEFT JOIN Motores ON OT.IdMotor = Motores.IdMotor)'
+ ' LEFT JOIN Horas ON OT.IdHoras = Horas.IdHoras)'
+ ' LEFT JOIN Centrales ON OT.IdCentral = Centrales.IdCentral)'
+ ' LEFT JOIN OTObservaciones ON OT.OT = OTObservaciones.OT'
+ ' GROUP BY OT.OT, OT.IdCentral, Entidades.Descripcion, Motores.Marca,'
+ ' Motores.Modelo, Horas.Horas, Centrales.Nombre,'
+ ' OTObservaciones.Observaciones, OT.Bateria, OT.Motor'
+ ' HAVING ' + sHav, frmFacturas.ADOQTMP);
UsoSQL es una función:
Código Delphi
[-]procedure TMDIPrincipal.UsoSQL(SQL: String; QR: TObject);
begin
(QR As TADOQuery).Connection:= mdiprincipal.ACPrincipal;
(QR As TADOQuery).Active:=False;
(QR As TADOQuery).SQL.Clear;
(QR As TADOQuery).SQL.Add(SQL);
(QR As TADOQuery).Active:=True;
end;
Te repito donde me da el error es creando el procedimiento en el enterprise manager, yo me pregunto si no faltará
algo para concatenar la palabra
HAVING con el parámetro que se le pasa al procedimiento?
Gracias.