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

#6 Daniel G. Samborski
16/11/2005 - 19:53 | Informe spam
Si, eso me imagino.
Pero no conozco ningún grupo de CR y tenia la esperanza de que alguno de los
que están en este grupo sepa sobre CR y me pudiera ayudar.

De todos modos gracias por responder.
Seguiré buscando.

Daniel.

"Maxi" escribió en el mensaje
news:
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
#7 Eleazar Nuñez
16/11/2005 - 20:02 | Informe spam
como ultima sugerencia haz una prueba desde sql y ve que aparece en el
results
Exec InformeVentasprueba '*', '20051116','20051116',0
Exec InformeVentasprueba '*', '20051116','20051116',1
Exec InformeVentasprueba '-', '20051116','20051116',0
Exec InformeVentasprueba 'b', '20051116','20051116',0

"Daniel G. Samborski" escribió en
el mensaje news:
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
#8 Daniel G. Samborski
16/11/2005 - 20:12 | Informe spam
Si ejecuto el siguiente código en el SP

Exec InformeVentasprueba '*', '01/18/1973','02/05/2006',0

Me tira el listado y lo mismo con todos los demás.

14 2005-11-04 00:00:00.000 Efectivo 0 12.40 ZZ SEGOVIA ALFREDO DNI 7879629
b
15 2005-11-04 00:00:00.000 Credisol 4 25.00 Anonimo DNI 35345345 b
16 2005-11-04 00:00:00.000 Visa 0 20.00 ZZ FERNANDEZ DANIEL DNI 17787013
b
17 2005-11-04 00:00:00.000 Efectivo 0 194.20 ZZ SOTELO JOS
Respuesta Responder a este mensaje
#9 Eleazar Nuñez
16/11/2005 - 20:23 | Informe spam
pues ni hablar esta raro como dice maxi eso ya es problema de CR, quiza tu
reporte este dañado y tienes que repararlo
suerte

"Daniel G. Samborski" escribió en
el mensaje news:
Si ejecuto el siguiente código en el SP

Exec InformeVentasprueba '*', '01/18/1973','02/05/2006',0

Me tira el listado y lo mismo con todos los demás.

14 2005-11-04 00:00:00.000 Efectivo 0 12.40 ZZ SEGOVIA ALFREDO DNI 7879629
b
15 2005-11-04 00:00:00.000 Credisol 4 25.00 Anonimo DNI 35345345 b
16 2005-11-04 00:00:00.000 Visa 0 20.00 ZZ FERNANDEZ DANIEL DNI 17787013
b
17 2005-11-04 00:00:00.000 Efectivo 0 194.20 ZZ SOTELO JOS
Respuesta Responder a este mensaje
#10 Alejandro Mesa
17/11/2005 - 00:26 | Informe spam
Daniel,

Si nos muestras el sp pudieramos saber de que hablas. Por ejemplo, segun lo
que posteas, yo te recomendaria usar:

select nombre from cliente where estado = @Tipo
go


AMB

"Daniel G. Samborski" wrote:

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
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida