Ver Mensaje Individual
  #13  
Antiguo 11-10-2011
rubio rubio is offline
Miembro
 
Registrado: mar 2009
Posts: 36
Reputación: 0
rubio Va por buen camino
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.
Responder Con Cita