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 17-07-2004
celades celades is offline
No confirmado
 
Registrado: may 2003
Ubicación: Torroella de Montgrí (Girona)
Posts: 42
Poder: 0
celades Va por buen camino
Thumbs up

Hola
Solo veo errores tontos de los dos puntos

Código SQL [-]
CREATE PROCEDURE lDetalleTM (Des varchar (30),Codigo char (2))
RETURNS (Numero integer,TipoM varCHAR(40))
as
begin
Numero=0;
if (es='Farmacia') then /* faltaba :  */
begin
   FOR select DETALLE FROM TIPO_MATERIAL 
   WHERE CODTIPOMATERIAL IN (select CODTIPOMATERIAL
   FROM TIPOMATERIAL_CUENTACONTABLE
   WHERE NROCUENTACON LIKE '125%' AND NROCUENTACON IN
   (SELECT NROCUENTACON FROM CUENTA_CONTABLE wHERE CODREG=:Codigo)) into :TipoM
   do
   begin
   numero = :numero + 1; /* faltaba : */
   suspend;
   end
end
else
begin
FOR select DETALLE FROM TIPO_MATERIAL
WHERE CODTIPOMATERIAL IN (select CODTIPOMATERIAL
FROM TIPOMATERIAL_CUENTACONTABLE
WHERE NROCUENTACON LIKE '121%' and NROCUENTACON LIKE '122%' AND NROCUENTACON IN
(SELECT NROCUENTACON FROM CUENTA_CONTABLE WHERE CODREG=:Codigo))
into :TipoM
do
begin
numero = :numero + 1;  /* faltaba : */
suspend;
end
end^


Lo demas lo veo todo bien
Si no tira bien, dinos de nuevo el error

Saludos
Responder Con Cita
  #2  
Antiguo 17-07-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.

En la condición si faltan los dos puntos, pero no en el incremento de la variable numero. (Es un poco molesto esta excepción en la que en las asignaciones directas no hay que poner los dos puntos).

Yo tampoco veo ningún otro error en el código.

NOTA: Choclito, si encierras tu código entre cláusulas [ code ] .... [ /code ], mantendrá la identación del código, por lo que es mucho más facil de leer.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 18-07-2004
Choclito Choclito is offline
Miembro
 
Registrado: jul 2004
Posts: 169
Poder: 20
Choclito Va por buen camino
Ayuda

Hola nuevamente muchas gracias por la sugerencia que me hicieron pero les comento que con la ultima sugerencia ahora me sale el siguiente error:

Dynamic SQL Error
SQL error code = -104
Unexpected end of command

al depurar el codigo me indica

Dynamic SQL Error
SQL error code = -104
Token unknown - line 12, char 66
?
a la cual veo y el error seria en el parentesis antes del into :TipoM y pues la verdad nose como arreglarlo
Nuevamente les pido su ayuda o pues nose talves puede haber otra forma de hacer la consulta que quiero
Para ser mas claro tengo las siguientes tablas
TipoMaterial (CodT, Detalle)
TipoM_Cuenta (CodT,CodC)
Cuenta (CodC,Nombre,CodRegional) (hice una relacion de * a *)
Regional (CodiRegional, Nombre) (la Relacion de Cuenta y Regional es de 1 a *)

Ahora bien hay determinadas cuentas las cuales pertenecen a la seccion de farmacia,almacenes y otras, pero los tipos de materiales varian de acuerdo a la regional en la que se encuentre.
Es por eso que quiero colocar parametros de entrada como el codigo de la regional y la seccion de la cual se quiere mostrar los tipos de materiales.
Es por eso que hice de esa forma el procedimiento almacenado pero si tuvieran otra forma estare muy agradecido por las sugerencias gracias
Responder Con Cita
  #4  
Antiguo 18-07-2004
celades celades is offline
No confirmado
 
Registrado: may 2003
Ubicación: Torroella de Montgrí (Girona)
Posts: 42
Poder: 0
celades Va por buen camino
Hola no le veia errores pero al fin vi que te falta un end final

Código SQL [-]
CREATE PROCEDURE lDetalleTM (Des varchar (30),Codigo char (2))
RETURNS (Numero integer,TipoM varCHAR(40))
as
begin
Numero=0;
if (es='Farmacia') then 
begin
   FOR select DETALLE FROM TIPO_MATERIAL 
   WHERE CODTIPOMATERIAL IN (select CODTIPOMATERIAL
   FROM TIPOMATERIAL_CUENTACONTABLE
   WHERE NROCUENTACON LIKE '125%' AND NROCUENTACON IN
   (SELECT NROCUENTACON FROM CUENTA_CONTABLE wHERE CODREG=:Codigo)) into :TipoM
   do
   begin
   numero = numero + 1; 
   suspend;
   end
end
else
begin
               FOR select DETALLE FROM TIPO_MATERIAL
             WHERE CODTIPOMATERIAL IN (select CODTIPOMATERIAL
              FROM TIPOMATERIAL_CUENTACONTABLE
              WHERE NROCUENTACON LIKE '121%' and NROCUENTACON             LIKE '122%' AND NROCUENTACON IN
(SELECT NROCUENTACON FROM CUENTA_CONTABLE WHERE CODREG=:Codigo))
into :TipoM
    do
    begin
     numero = numero + 1;
    suspend;
    end
  end /*Faltaba este end*/
end^

los parentesis estan bien

si te funciona la unica sugerencia es cambiar los in que son lentos por exists

Espero que funcione
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 10:57:27.


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