on 09-01-2014 3:03 PM
Prezados,
Estou com um problema num relatório feito no Crystal Reports 2008, estou usando a seguinte consulta diretamente no Crystal(é onde está o erro, segundo amigo aqui da comunidade), pois deveria criar uma view diretamente no SQL Server, porém não sei como fazê-lo, pois sou iniciante no mundo SQL.
Meu relatório demora de 1 a 2 minutos para trazer as informações, gostaria muito da ajuda de vocês, pois já faz um bom tempo que estou empacado nesse problema. Segue abaixo consulta utilizada:
DECLARE @contador int
DECLARE @grupo varchar(max)
DECLARE @campo varchar(max)
SET @grupo = ''
SET @contador = 0
WHILE @contador < 64 BEGIN
SET @contador = @contador + 1
SET @campo = 'T0.QryGroup' + ltrim(str(@contador))
SET @grupo = @grupo + ', ' + @campo +
', CASE WHEN ' + @campo + ' = ''Y''' + ' THEN (SELECT T1.GroupName FROM OCQG T1 WHERE T1.GroupCode = ' + ltrim(str(@contador)) + ') ELSE ' + '''OUTROS''' + ' END AS NomeGrupo' + ltrim(str(@contador))
END
EXEC
(
'SELECT
T0.CardCode,
T0.CardName' + @grupo +
' FROM OCRD T0'
)
Mais detalhes bem como todo o histórico do problema podem ser encontrados no seguinte post:
Obrigado!
Alguém poderia me ajudar?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
???
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Bom dia amigos,
Alguém teria nova sugestão para o caso?
Obrigado!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Boas,
Eu não gosto de utilizar commandos e tabelas nos relatórios.
Se preciso de utilizar um comando, crio o comando com tudo o que eu preciso.
Ex. O teu procedimento devolve informação do OCRD e tambem tens a tabela do OCRD. Poderias devolver todos os campos que precisas no procedimento e retirar a tabela OCRD.
Fica a sugestão.
Augusto
Paulo, boa tarde.
Primeiro você deve criar a procedure no SQL Management:
Create Procedure GrupoClientes As
DECLARE @contador int
DECLARE @grupo varchar(max)
DECLARE @campo varchar(max)
SET @grupo = ''
SET @contador = 0
WHILE @contador < 64 BEGIN
SET @contador = @contador + 1
SET @campo = 'T0.QryGroup' + ltrim(str(@contador))
SET @grupo = @grupo + ', ' + @campo +
', CASE WHEN ' + @campo + ' = ''Y''' + ' THEN (SELECT T1.GroupName FROM OCQG T1 WHERE T1.GroupCode = ' + ltrim(str(@contador)) + ') ELSE ' + '''OUTROS''' + ' END AS NomeGrupo' + ltrim(str(@contador))
END
EXEC
(
'SELECT
T0.CardCode,
T0.CardName' + @grupo +
' FROM OCRD T0'
)
Depois você vai no Crystal, seguindo os prints abaixo:
Na figura 3, você vai digitar o comando "Exec GrupoClientes" (sem as aspas)
Qualquer dúvida me avise.
Att,
Lucas
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Bom dia Lucas,
Primeiramente obrigado pela resposta... Fiz como vc sugeriu, criei a procedure no SQL Server 2008 R2, depois fui no Crystal Reports 2008 e tb fiz como vc disse... Porém o relatório continua com lentidão, como a acreditar que o problema seja outro, talvez o nº de testes (IF/ELSE) que tenho que fazer... Vou colocar alguns prints abaixo para explicar o que exatamente estou fazendo:
Primeiramente como estou fazendo no projeto do relatório:
Agora quais as fórmulas estou utilizando:
Como estou linkando as tabelas:
E por fim, uma mensagem que sempre aparece e não sei o que significa:
Mais uma vez agradeço a atenção e espero que possa continuar me ajudando...
Abraço!
Boa Tarde Paulo
Meus relatórios demoravam muito para emitir também, depois de varias pesquisas descobrir que a demora se dava pela minha conexão que eu usava a do crystal SAP quando comecei a usar a conexão OLE DB (ADO) do sql server, a velocidade aumentou 1.000.000. não sei se é esse o seu problema espero ter ajudado.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Ok,
Vou montar este step by step e postarei.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Boa tarde Paulo
Aqui do outro lado do Atlantico.
Eu executei no SQL o teu query, só tenho 800 clientes e foi rápido.
Quantos clientes tens?
Já executas-te o query no SQL? Se foi rápido o problema é do Crystal...
Não sei se ajudei, mas tentei.
Saudações
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Olá! Augusto,
Tenho por volta de 5.000 clientes, sim no SQL a resposta é rápida... Sei que o problema está em utilizar a consulta diretamente no Crystal, porém não sei como contornar o problema(é aí que preciso de ajuda)... Se puder dar uma olhadinha, neste post, talvez entenda melhor o caso:
Obrigado pelo interesse em ajudar-me.
Abraço!
Bom dia Paulo,
A ideia de rodar isso em procedure sql realmente te melhora em muito
a performance, vc pode executar esta procedure diretamente no seu Crystal Report.
Como:
Vc pode dentro do Sql criar esta procedure , quando vc abrir a conexão no Crystal
lá na seleção das bases vc informa que vai usar uma Stored Procedures, neste momento vai aparecer uma lista de procedures já existente no bando de dados e só escolher a que vc criou.
Espero que esta sugestão te ajude
User | Count |
---|---|
110 | |
12 | |
11 | |
6 | |
5 | |
4 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.