Ver Mensaje Individual
  #29  
Antiguo 21-09-2004
aurafern aurafern is offline
Miembro
 
Registrado: dic 2003
Posts: 34
Reputación: 0
aurafern Va por buen camino
Hice todo lo que me dijiste, pero nada que funciona lo de la fecha:

Si le quito el filtro de la fecha funciona el SP.

La cadena se construyó así:

Código SQL [-]
SELECT CAST(SUM(e.DEBITO-e.CREDITO) AS DOUBLE PRECISION) AS SALDO,
e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE,
e.numero_cruce, d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO, E.ID_VENDEDOR
FROM CUENTAS_POR_TERCERO e , cuentas_por_tercero d where e.ID_EMPRESA_CRUCE=d.ID_EMPRESA
and e.ID_SUCURSAL_CRUCE=d.ID_SUCURSAL AND E.CUOTA_CRUCE=D.CUOTA and e.ID_TIPO_DOC_CRUCE=
 d.id_tipo_doc and e.numero_cruce=d.numero AND ('21-SEP-2004' - D.VENCIMIENTO) >= -9999 AND
  ('21-SEP-2004' - D.VENCIMIENTO) <= 9999 GROUP BY e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE,
  e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE, e.numero_cruce, d.fecha, d.vencimiento,e.id_tercero,
  e.ID_SUCURSAL_TERCERO, E.ID_VENDEDOR having SUM(e.DEBITO-e.CREDITO)<>0

y funciona la sql_ins construida. Pero en el procedimiento sigue sin funcionar,


Ahora, En el IBConsole:

Noté, que si tomo la consulta y copio de allí la parte que tiene que ver con pfecha.....

Código SQL [-]

 AND ('21-SEP-2004' - D.VENCIMIENTO) >= -9999 AND
  ('21-SEP-2004' - D.VENCIMIENTO) <= 9999


y la pego en le procedimiento en el lugar correspondiente aparece así

Código SQL [-]

 AND ('21-SEP-2004' - D.VENCIMIENTO) >= -9999 AND
  ('21-SEP-2004' - D.VENCIMIENTO) <= 9999

Lo que creo es que no arma bien la fecha, por eso me sale column unknown SEP, pero, la he cambiado de n modos para corregir este error y casi que de todos los modos que pruebo me arroja "General SQL error, expression evaluation not supported."

Creo que de pronto sigo pasando mal los parametros aunque ya he probado todas las combinaciones que he podido:

desde delphi vienen asi:
Código Delphi [-]
query2.close;
query2.ParamByName('empresa').AsString:=' AND E.ID_EMPRESA=1 ';
query2.ParamByName('sucursal').AsString:=' AND E.ID_SUCURSAL=1 ';
Query2.ParamByName('modelo').AsiNTEGER:=4;
Query2.ParamByName('no_rango').AsInteger:=4;
query2.ParamByName('PFECHA').AsDateTIME:= int(mdFECHA.AsDateTime);
query2.open;

y en el procedimiento aparecen asi:

Código SQL [-]
 EMPRESA VARCHAR(100),
  SUCURSAL VARCHAR(100),
  MODELO INTEGER,
  NO_RANGOS INTEGER,
  PFECHA TIMESTAMP

la consulta problema es:

Código SQL [-]
P_DATA_D = ' AND (''' || cast(:PFECHA as varchar(20)) || ''' - D.VENCIMIENTO) >= ' ||ESDE;
 P_DATA_H = ' AND (''' || cast(:PFECHA as varchar(20)) || ''' - D.VENCIMIENTO) >= ' ||:HASTA;

SQL_INS= 'SELECT CAST(SUM(e.DEBITO-e.CREDITO) AS DOUBLE PRECISION) AS SALDO, e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE, e.numero_cruce, ';
SQL_INS=SQL_INS ||' d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO, E.ID_VENDEDOR FROM CUENTAS_POR_TERCERO e , cuentas_por_tercero d ';
SQL_INS=SQL_INS ||' where e.ID_EMPRESA_CRUCE=d.ID_EMPRESA and e.ID_SUCURSAL_CRUCE=d.ID_SUCURSAL AND E.CUOTA_CRUCE=D.CUOTA ';
SQL_INS=SQL_INS ||' and e.ID_TIPO_DOC_CRUCE= d.id_tipo_doc and e.numero_cruce=d.numero ' ||:EMPRESA ||:SUCURSAL;
SQL_INS=SQL_INS ||_DATA_D ||:P_DATA_H;
SQL_INS=SQL_INS ||' GROUP BY e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE, ';
SQL_INS=SQL_INS ||' e.numero_cruce, d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO, E.ID_VENDEDOR ';
SQL_INS=SQL_INS ||' having SUM(e.DEBITO-e.CREDITO)<>0 ';
FOR EXECUTE STATEMENT SQL_INS
into :saldo,:id_auxiliar,:id_empresa,:id_sucursal,:id_tipo,:numero,:fecha_DOC,:vencimiento,:id_tercero,:i  d_sucursal_tercero, :ID_VENDEDOR

Saludos!!

Última edición por aurafern fecha: 21-09-2004 a las 17:53:30.
Responder Con Cita