Cristal report y los IF en un stored.

16/11/2005 - 18:16 por Daniel G. Samborski | Informe spam
Hola, tengo el siguiente problema.

En un store procedure tengo varios if y cuando lo quiero utilizar en cristal
report no me muestra los campos.
Y sacando los IF muestra los campos.

Por ej.

procedure (@Tipo char(1)) as

if @Tipo='a'
select nombre from cliente where estado='a'
if @Tipo='i'
select nombre from cliente where estado='i'


Porque sucede esto y como se puede solucionar.


Daniel.

Preguntas similare

Leer las respuestas

#1 Maxi
16/11/2005 - 18:31 | Informe spam
Hola, pues no se como lo maneja CR, quizas sea un problema del reporte. De
todas maneras en lugar de hacer IF porque no armas un Sp's por cada
condicion?


Salu2
Maxi [MVP SQL SERVER]


"Daniel G. Samborski" escribió en
el mensaje news:
Hola, tengo el siguiente problema.

En un store procedure tengo varios if y cuando lo quiero utilizar en
cristal
report no me muestra los campos.
Y sacando los IF muestra los campos.

Por ej.

procedure (@Tipo char(1)) as

if @Tipo='a'
select nombre from cliente where estado='a'
if @Tipo='i'
select nombre from cliente where estado='i'


Porque sucede esto y como se puede solucionar.


Daniel.


Respuesta Responder a este mensaje
#2 Daniel G. Samborski
16/11/2005 - 18:56 | Informe spam
Es que son varios IF anidados.
Es una consulta algo compleja y manejarla en varios SP creo que seria muy
incomodo.

El ejemplo que di es algo sencillo, solo como ejemplo.

Daniel.

"Maxi" escribió en el mensaje
news:
Hola, pues no se como lo maneja CR, quizas sea un problema del reporte. De
todas maneras en lugar de hacer IF porque no armas un Sp's por cada
condicion?


Salu2
Maxi [MVP SQL SERVER]


"Daniel G. Samborski" escribió en
el mensaje news:
Hola, tengo el siguiente problema.

En un store procedure tengo varios if y cuando lo quiero utilizar en
cristal
report no me muestra los campos.
Y sacando los IF muestra los campos.

Por ej.

procedure (@Tipo char(1)) as

if @Tipo='a'
select nombre from cliente where estado='a'
if @Tipo='i'
select nombre from cliente where estado='i'


Porque sucede esto y como se puede solucionar.


Daniel.






Respuesta Responder a este mensaje
#3 Eleazar Nuñez
16/11/2005 - 19:14 | Informe spam
Hola
seguramente no le estas pasando los valores
-cerciorate que valor es el que se esta pasando en el parametro cuando
invocas el stored procedure
-puedes simplificar el codigo quitando los if (esto no te resuelve el
problema que mencinas)
select nombre from cliente where estado= @Tipo

"Daniel G. Samborski" escribió en
el mensaje news:
Hola, tengo el siguiente problema.

En un store procedure tengo varios if y cuando lo quiero utilizar en


cristal
report no me muestra los campos.
Y sacando los IF muestra los campos.

Por ej.

procedure (@Tipo char(1)) as

if @Tipo='a'
select nombre from cliente where estado='a'
if @Tipo='i'
select nombre from cliente where estado='i'


Porque sucede esto y como se puede solucionar.


Daniel.


Respuesta Responder a este mensaje
#4 Maxi
16/11/2005 - 19:33 | Informe spam
No se entonces, eso deberias verlo con CR porque no es un error de SQL sino
de como CR interpreta las cosas.


Salu2
Maxi [MVP SQL SERVER]


"Daniel G. Samborski" escribió en
el mensaje news:O$
Es que son varios IF anidados.
Es una consulta algo compleja y manejarla en varios SP creo que seria muy
incomodo.

El ejemplo que di es algo sencillo, solo como ejemplo.

Daniel.

"Maxi" escribió en el mensaje
news:
Hola, pues no se como lo maneja CR, quizas sea un problema del reporte.
De todas maneras en lugar de hacer IF porque no armas un Sp's por cada
condicion?


Salu2
Maxi [MVP SQL SERVER]


"Daniel G. Samborski" escribió
en el mensaje news:
Hola, tengo el siguiente problema.

En un store procedure tengo varios if y cuando lo quiero utilizar en
cristal
report no me muestra los campos.
Y sacando los IF muestra los campos.

Por ej.

procedure (@Tipo char(1)) as

if @Tipo='a'
select nombre from cliente where estado='a'
if @Tipo='i'
select nombre from cliente where estado='i'


Porque sucede esto y como se puede solucionar.


Daniel.










Respuesta Responder a este mensaje
#5 Daniel G. Samborski
16/11/2005 - 19:38 | Informe spam
Aqui pongo dos codigos.
El primero, codigo de barra funcióna bien ya que no tiene IF´s


ALTER procedure ImprimirCodigoDeBarra(@CodCompra int) as
select ('*' + compraproducto.codprod + '*'),compraproducto.codprod, convert
(varchar, productos.precioefectivo),convert (varchar,
productos.precioefectivo) from compraproducto inner join productos on
compraproducto.codcompra=@CodCompra and compraproducto.codprod =
productos.codprod and len(productos.codprod) <= 8

En el cristal me aparece:
Campos de bases de datos
ImprimirCodigoDeBarra;1
Expr1000
codprod
Expr1002
Expr1003

Campos de parametros
CodCompra

Pero si utilizo este store procedure:


ALTER Procedure InformeVentasprueba(@tipo char (1),@fechadesde datetime,
@fechahasta datetime, @codentfin int) as


if @tipo ='*'
begin
if @codentfin = 0
begin
select ventas.codven,
ventas.fecven,
nomentfinanciera.descripcion,isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago <> 'Ef' and Ventas.Tipopago <>
'Ch' join extensionclientes on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta
union
select ventas.codven,
ventas.fecven,
'Efectivo',isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago = 'Ef' join extensionclientes
on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta
union
select ventas.codven,
ventas.fecven,
'Cheque',isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago = 'Ch' join extensionclientes
on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta
end
if @codentfin <> 0
begin
select ventas.codven,
ventas.fecven,
nomentfinanciera.descripcion,isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago <> 'Ef' and Ventas.Tipopago <>
'Ch' join extensionclientes on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta and ventas.codentfin = @codentfin
union
select ventas.codven,
ventas.fecven,
'Efectivo',isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago = 'Ef' join extensionclientes
on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta and ventas.codentfin = @codentfin
union
select ventas.codven,
ventas.fecven,
'Cheque',isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago = 'Ch' join extensionclientes
on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta and ventas.codentfin = @codentfin
end
end
if @tipo ='-'
begin
if @codentfin = 0
begin
select ventas.codven,
ventas.fecven,
nomentfinanciera.descripcion,isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago <> 'Ef' and Ventas.Tipopago <>
'Ch' join extensionclientes on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta
and ventas.tipo = 'j'
union
select ventas.codven,
ventas.fecven,
'Efectivo',isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago = 'Ef' join extensionclientes
on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta
and ventas.tipo = 'j'
union
select ventas.codven,
ventas.fecven,
'Cheque',isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago = 'Ch' join extensionclientes
on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta
and ventas.tipo = 'j'
end
if @codentfin <> 0
begin
select ventas.codven,
ventas.fecven,
nomentfinanciera.descripcion,isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago <> 'Ef' and Ventas.Tipopago <>
'Ch' join extensionclientes on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta and ventas.codentfin = @codentfin
and ventas.tipo = 'j'
union
select ventas.codven,
ventas.fecven,
'Efectivo',isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago = 'Ef' join extensionclientes
on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta and ventas.codentfin = @codentfin
and ventas.tipo = 'j'
union
select ventas.codven,
ventas.fecven,
'Cheque',isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago = 'Ch' join extensionclientes
on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta and ventas.codentfin = @codentfin
and ventas.tipo = 'j'
end
end
if @tipo ='b'
begin
if @codentfin = 0
begin
select ventas.codven,
ventas.fecven,
nomentfinanciera.descripcion,isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago <> 'Ef' and Ventas.Tipopago <>
'Ch' join extensionclientes on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta
and ventas.tipo = 'b'
union
select ventas.codven,
ventas.fecven,
'Efectivo',isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago = 'Ef' join extensionclientes
on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta
and ventas.tipo = 'b'
union
select ventas.codven,
ventas.fecven,
'Cheque',isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago = 'Ch' join extensionclientes
on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta
and ventas.tipo = 'b'
end
if @codentfin <> 0
begin
select ventas.codven,
ventas.fecven,
nomentfinanciera.descripcion,isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago <> 'Ef' and Ventas.Tipopago <>
'Ch' join extensionclientes on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta and ventas.codentfin = @codentfin
and ventas.tipo = 'b'
union
select ventas.codven,
ventas.fecven,
'Efectivo',isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago = 'Ef' join extensionclientes
on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta and ventas.codentfin = @codentfin
and ventas.tipo = 'b'
union
select ventas.codven,
ventas.fecven,
'Cheque',isnull(convert(int,ventas.cancuo),'0'),
convert(varchar,ventas.imptotal),
cliente.apellnomb,cliente.tipodoc,
cliente.nrodoc,extensionclientes.ApeNombre, ventas.naprobacion, ventas.tipo
from ventas inner join cliente on cliente.CodCli=ventas.CodCli
join nomentfinanciera on ventas.codentfin=nomentfinanciera.codentfin
and ventas.EstadoVen='a' and ventas.Tipopago = 'Ch' join extensionclientes
on
ventas.codext = extensionclientes.codext and ventas.fecven between
@fechadesde and @fechahasta and ventas.codentfin = @codentfin
and ventas.tipo = 'b'
end
end

Aparece en el cristal report:

Campos de base de datos
InformeVentasPrueba;1

Campos de parametros
@Tipo
@FechaDesde
@FechaHasta
@CodEntFin

Como podras ver no me aparecen las tablas de la BD debajo de
InformeVentasPrueba;1
Ese es el problema, sin esas tablas no puedo harmar el reporte y parece que
al estar dentro de IF´s no las lee.


Daniel.

"Eleazar Nuñez" escribió en el mensaje
news:
Hola
seguramente no le estas pasando los valores
-cerciorate que valor es el que se esta pasando en el parametro cuando
invocas el stored procedure
-puedes simplificar el codigo quitando los if (esto no te resuelve el
problema que mencinas)
select nombre from cliente where estado= @Tipo

"Daniel G. Samborski" escribió en
el mensaje news:
Hola, tengo el siguiente problema.

En un store procedure tengo varios if y cuando lo quiero utilizar en


cristal
report no me muestra los campos.
Y sacando los IF muestra los campos.

Por ej.

procedure (@Tipo char(1)) as

if @Tipo='a'
select nombre from cliente where estado='a'
if @Tipo='i'
select nombre from cliente where estado='i'


Porque sucede esto y como se puede solucionar.


Daniel.






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida