Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-09-2004
aurafern aurafern is offline
Miembro
 
Registrado: dic 2003
Posts: 34
Poder: 0
aurafern Va por buen camino
Hola!

De nuevo yo.

Llevo dos dias tratando de que este procedimiento se ejecute correctamente. Y aunque ustedes no tienen la culpa de mi ignorancia en el tema , solicito urgente ayuda!!

Ya he mirado todos los foros que tienen que ver con el paso de parametros a procedimientos almacenados. Trabajo con delphi y Firebird 1.5 (que en la documentación ya dice que tiene solucionado el problema), sin embargo, compilo el siguiente procedimiento y no saca error, pero cuando lo llamo desde delphi pasándole los siguientes parámetros:

empresa= ' AND E.ID_EMPRESA =1 '
sucursal= ' AND E.ID_SUCURSAL=1 '
MODELO=4
NO_RANGO=4
PFECHA= 09/09/2004
PVENDEDOR=''
PZONA=''
pcuenta=''
PTERCERO=' AND E.ID_TERCERO=1 '

Arroja el error: General Sql error, Column unknown SEP

Código SQL [-]
create PROCEDURE CARTERA_PROVEEDORES_PROC
(
  EMPRESA VARCHAR(100),
  SUCURSAL VARCHAR(100),
  MODELO VARCHAR(15),
  NO_RANGOS INTEGER,
  PFECHA TIMESTAMP,
  PVENDEDOR VARCHAR(100),
  PZONA VARCHAR(100),
  PCUENTA VARCHAR(100),
  PTERCERO VARCHAR(100)
)
RETURNS
(
  ID_EMPRESA VARCHAR(2),
  ID_SUCURSAL VARCHAR(2),
  ID_TIPO VARCHAR(3),
  NUMERO INTEGER,
  CUOTA INTEGER,
  ID_TERCERO INTEGER,
  ID_SUCURSAL_TERCERO INTEGER,
  SALDO DOUBLE PRECISION,
  DESCRIP1 VARCHAR(30),
  DESCRIP2 VARCHAR(30),
  DESCRIP3 VARCHAR(30),
  RANGO1 DOUBLE PRECISION,
  RANGO2 DOUBLE PRECISION,
  RANGO3 DOUBLE PRECISION,
  FECHA_DOC TIMESTAMP,
  ID_AUXILIAR VARCHAR(12),
  VENCIMIENTO TIMESTAMP,
  DIAS DOUBLE PRECISION,
  RANGO4 DOUBLE PRECISION,
  DESCRIP4 VARCHAR(30),
  RANGO5 DOUBLE PRECISION,
  DESCRIP5 VARCHAR(30)
)
AS
DECLARE VARIABLE ID_MODELO varchar(15);
  DECLARE VARIABLE ID_RANGO integer;
  DECLARE VARIABLE ID_DESCRIPCION_RANGO varchar(10);
  DECLARE VARIABLE DESCRIPCION_RANGO varchar(50);
  DECLARE VARIABLE DESDE  integer;
  DECLARE VARIABLE HASTA  integer;
  DECLARE VARIABLE TIPO_RANGO varchar(10);
  DECLARE VARIABLE NUMERO_RANGOS integer;
  DECLARE VARIABLE TITULO  varchar(50);
  DECLARE VARIABLE Sql_INS VARCHAR(1024);
begin
FOR SELECT RANGO_REP_TERCERO_DET.ID_MODELO,
      RANGO_REP_TERCERO_DET.ID_RANGO,
      RANGO_REP_TERCERO_DET.ID_DESCRIPCION_RANGO,
      RANGO_REP_TERCERO_DET.DESCRIPCION_RANGO,
      RANGO_REP_TERCERO_DET.DESDE,
      RANGO_REP_TERCERO_DET.HASTA,
      RANGO_REP_TERCERO_DET.TIPO_RANGO,
      RANGO_REP_TERCERO.NUMERO_RANGOS,
      RANGO_REP_TERCERO.DESCRIPCION AS TITULO
from RANGO_REP_TERCERO_DET,RANGO_REP_TERCERO
where RANGO_REP_TERCERO_DET.ID_MODELO=RANGO_REP_TERCERO.ID_MODELO AND RANGO_REP_TERCERO.ID_MODELO=:modelo
INTO   :ID_MODELO,
      :Id_rango,
      :ID_DESCRIPCION_RANGO,
      ESCRIPCION_RANGO,
      ESDE,
      :HASTA,
      :TIPO_RANGO,
      :NUMERO_RANGOS,
      :TITULO
DO
BEGIN
FOR EXECUTE STATEMENT
'SELECT SUM(e.DEBITO-e.CREDITO) AS SALDO, e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE, e.numero_cruce, E.CUOTA_CRUCE,
d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO 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 ' ||:EMPRESA ||:SUCURSAL||
'and (' ||fecha || ' - d.vencimiento)>=' ||:desde ||' '|| 'and (' ||fecha|| ' - d.vencimiento)<='
||:hasta||' '||tercero ||
'GROUP BY e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE,
e.numero_cruce, E.CUOTA_CRUCE , d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO
having SUM(e.DEBITO-e.CREDITO)<>0'
into :saldo,:id_auxiliar,:id_empresa,:id_sucursal,:id_tipo,:numero,:cuota,:fecha_DOC,:vencimiento,:id_ter  cero,:id_sucursal_tercero
DO
   BEGIN
   dias = fecha - :vencimiento;
  suspend;
   END

 end
end


por favor ayudenme ya no se que hacer!

de antemano gracias

Última edición por aurafern fecha: 14-09-2004 a las 20:55:29.
Responder Con Cita
  #2  
Antiguo 14-09-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Para finalizar el código SQL tienes que hacerlo con una cláusula [/sql] y no [\SQL].

Respecto al error que te está dando, está claro que el error lo tienes en la sentencia SQL que has construido dinamicamente. Revísala puesto que tiene que ser incorrecta.

NOTA: Para empezar, lo primero que veo es que en la cadena de la sentencia, las fechas no quedan delimitadas por comillas, y deberian estarlo.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 14-09-2004
aurafern aurafern is offline
Miembro
 
Registrado: dic 2003
Posts: 34
Poder: 0
aurafern Va por buen camino
ya he probado con las comillas en la fecha

Código SQL [-]
and ("' ||fecha || '" - d.vencimiento)>=' ||:desde ||' '|| 'and ("' ||fecha|| '" - d.vencimiento)<='

le estoy pasando la fecha que tiene el dataset desde Delphi

y produce el siguiente error

General sql error, column unknown '09-sep-2004'
Responder Con Cita
  #4  
Antiguo 14-09-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Las fechas, si las pasas como cadena tienen que estar con el formato mm/dd/yyyy

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 14-09-2004
aurafern aurafern is offline
Miembro
 
Registrado: dic 2003
Posts: 34
Poder: 0
aurafern Va por buen camino
Disculpame la ignorancia pero yo escribo en Delphi:

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').Asstring:=Formatdatetime('mm/dd/yyyy',mdFECHA.AsDateTime);
query2.ParamByName('PVENDEDOR').AsString:='';
query2.ParamByName('PZONA').AsString:='';
query2.ParamByName('PCUENTA').AsString:='';
query2.ParamByName('PTERCERO').AsString:=' AND E.ID_TERCERO=1 ';
query2.Open;

pfecha en el procedimiento timestamp
pfecha entre comillas

en delphi:
el parametro del query en delphi es date
y arroja:

column unknown 14-sep-2004

si

parametro pfecha en procedimiento varchar(20)
y el parametro pfecha en delphi date

column unknown 09/14/2004


y asi sucesivamente pruebo varias combinaciones y todas devuelven uno de estos dos mensajes

Disculpen la molestia!!
Responder Con Cita
  #6  
Antiguo 14-09-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Prueba :

query2.ParamByName('PFECHA').Asstring := QuotedStr(Formatdatetime('mm/dd/yyyy',mdFECHA.AsDateTime));

Siendo el parámetro en el procedimiento varchar(20) y en Delphi string.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #7  
Antiguo 15-09-2004
aurafern aurafern is offline
Miembro
 
Registrado: dic 2003
Posts: 34
Poder: 0
aurafern Va por buen camino
Hola!!

Persiste el error
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


La franja horaria es GMT +2. Ahora son las 09:02:45.


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