PRIMEIROS PASSOS CRYSTAL REPORT

LUIS.HERRERA 28/02/2014 09:53:39
#435396
Bom dia!
[Ô]99%[Ô] dos artigos que encontro sempre usam exemplos de controles vinculados, mas infelizmente isso não é útil.

Estou tentando incluir no rodapé de todos os relatórios, algumas informações extras, que não tem relação nenhuma com os dados do relatório como: Usuário que imprimiu, Versão do meu sistema, nome do rpt (para identificação) e Logotipo do cliente que seria passado por link para carregar um arquivo externo, mas não estou conseguindo.

Tentei criar e incluir uma segunda classe Entidade só com esses dados no relatório, mas ao fazer isso os dados do relatório não aparecem mais, mesmo as classes não estando relacionadas.

1) Como eu posso outros dados para campos não vinculados no relatório pelo form que chama o relatório?

2) Como carregar o logo do cliente (picturebox) externo via link. Achei várias dicas, mas todos gambiarras de versões antigas do CR. A minha é do VS 2008, mas não consegui nada.

3) O que são campos Unbound Fields no CR e como funcionam?

Nota: No comentário anterior de 27/02/2014 11:40:29 , das 5 perguntas que fiz, só ficou resolvida a número 3) que o Nilson respondeu (obrigado), as demais ainda não sei como resolver. Se alguém souber...
NILSONTRES 28/02/2014 10:47:51
#435398
Citação:

1) Como eu posso outros dados para campos não vinculados no relatório pelo form que chama o relatório?



Dim _DE As CrystalDecisions.CrystalReports.Engine.TextObject
_DE = rpt.ReportDefinition.ReportObjects([Ô]TXT_DE[Ô])
_DE.Text = [Ô]Teste[Ô]
onde TXT_DE é o nome do campo no cristal, campo que vc inseri desvinculado.



Citação:

2) Como carregar o logo do cliente (picturebox) externo via link. Achei várias dicas, mas todos gambiarras de versões antigas do CR. A minha é do VS 2008, mas não consegui nada.


Crie uma formula com o nome f_img
insira um picture no relatorio, arraste a formula na mesma seção do picture. deixe a formula em branco ela sera carregada via formulario vb. como abaixo
Dim rpt As New RPT_Voucher_Ase
rpt.SetDataSource(ds)
rpt.DataDefinition.FormulaFields([Ô]f_img[Ô]).Text = [Ô]totext([Ô][Ô][Ô] & My.Application.Info.DirectoryPath & [Ô]\logo jesp.png[Ô] & [Ô][Ô][Ô])[Ô]


Citação:

) O que são campos Unbound Fields no CR e como funcionam?


?

Se vc atualizar seu visual studio para 2012, o crystal vem em portugues, pelo menos no meu cas sim.


Citação:

[Ô]99%[Ô] dos artigos que encontro sempre usam exemplos de controles vinculados, mas infelizmente isso não é útil.


Não conseguiu via list arrey ?
Mas crystal é isso mesmo, a dois anos quando comecei com ele, quase ninguem te responde nada, observei que o pessoal fora do brasil utiliza mais, ou conhece mais.
LUIS.HERRERA 28/02/2014 11:54:25
#435400
Nilson não estou conseguindo converter esse código para C#
Dim _DE As CrystalDecisions.CrystalReports.Engine.TextObject
_DE = rpt.ReportDefinition.ReportObjects([Ô]TXT_DE[Ô])
_DE.Text = [Ô]Teste[Ô]


Tentei incluir no meu código que preenche os campos de dados junto a chamada do list assim e dá erro
CausaDaFalhaDAL objCausa = new CausaDaFalhaDAL();
List<CausaDaFalhaModelo> listCausas = new List<CausaDaFalhaModelo>();

listCausas = objCausa.MontaGridViewCausaDaFalha(VariaveisAmbiente.SituacaoRegistro);

cadCausaDaFalhaList cr = new cadCausaDaFalhaList(); //instanciando o relatório de listagem
cr.SetDataSource(listCausas.ToList());
crystalReportViewer1.ReportSource = cr; [txt-color=#0000f0]// Até aqui tá funcionando perfeito [/txt-color]

[txt-color=#e80000]//AQUI A TENTANTO ADAPTAR PRO C# SEM SUCESSO
[/txt-color] CrystalDecisions.CrystalReports.Engine.TextObject myCampo;

//myCampo = (CrystalDecisions.CrystalReports.Engine.TextObject)cr.ReportDefinition.ReportObjects[[Ô]Versao[Ô]]; [txt-color=#e80000] //Pediu Cast, mas ao fazer não permite, diz que é diferente[/txt-color]

myCampo = [txt-color=#e80000]crystalReportViewer1[/txt-color].ReportDefinition.ReportObjects[[Ô]Versao[Ô]]; [txt-color=#e80000]// Tentei usar o crystalReportViewer1 pois não existe o rpt do seu código exemplo, acho que é esse objeto.
[/txt-color] myCampo.Text = [Ô]v. [Ô] + Program.myVersao;
crystalReportViewer1.Show();


Nessa linha que tentei também, gera o erro:
myCampo = crystalReportViewer1.[txt-color=#e80000]ReportDefinition[/txt-color].ReportObjects[[Ô]Versao[Ô]];
o erro é nesse ponto em vermelho já no designer diz que não contem essa definição (ReportDefinition)

O que está errado?

Sobre a imagem vou tentar depois do almoço.

Obrigado por enquanto.
NILSONTRES 28/02/2014 12:25:32
#435401
Sera que é porque faltou isso ?


fica assim:
Dim rpt As New Rpt_Orcamento
Dim _DE As CrystalDecisions.CrystalReports.Engine.TextObject
_DE = rpt.ReportDefinition.ReportObjects([Ô]TXT_DE[Ô])
_DE.Text = [Ô]Teste[Ô]
LUIS.HERRERA 28/02/2014 14:29:53
#435404
Eu tinha declarado o objeto do relatório, mas ao usá-lo disse que precisava fazer um Cast, eu fiz ai dá esse erro em runtime.

[Ô]Não é possível converter um objeto do tipo [ô]CrystalDecisions.CrystalReports.Engine.FieldObject[ô] no tipo [ô]CrystalDecisions.CrystalReports.Engine.TextObject[ô].[Ô]

Eu inclui um campo Unbound Fields (Campo Desconectado).

O código está assim:

CausaDaFalhaDAL objCausa = new CausaDaFalhaDAL(); // instancio obj que acessa a DAL para obter os dados do banco.
List<CausaDaFalhaModelo> listCausas = new List<CausaDaFalhaModelo>(); // instancio entidade p/ receber dados do banco
listCausas = objCausa.MontaGridViewCausaDaFalha(VariaveisAmbiente.SituacaoRegistro); // Pesquiso os dados
cadCausaDaFalhaList cr = new cadCausaDaFalhaList(); [txt-color=#0000f0]//instanciando o relatório de listagem Aqui o que disse que estaria faltando.
[/txt-color]
cr.SetDataSource(listCausas.ToList()); //passo os dados ao relatório
crystalReportViewer1.ReportSource = cr; // associo o relatório ao view do Crystal

// Aqui a parte que tentei converter do seu código VB e não tá funcionando.
CrystalDecisions.CrystalReports.Engine.TextObject myCampo; //declarando o objeto
myCampo = (CrystalDecisions.CrystalReports.Engine.TextObject)cr.ReportDefinition.ReportObjects[[Ô]Versao[Ô]]; //fazendo o cast e dando o erro acima informado.
myCampo.Text = [Ô]v. [Ô] + Program.myVersao;
crystalReportViewer1.Show();


Pesquisando vi vários exemplos semelhantes e também não funcionam. Ai decidi trocar o campo Unbound por um campo TextObject, só que agora da Crach no VS ao rodar o programa e finaliza o meu App. Ele não aceita se incluir um campo tipo TextObject e se incluo um Unbount Fields, roda mas com o erro acima.

Não acredito que será tão difícil trabalhar com Crystal assim, para algo tão simples, imagino quando tiver relatórios mais complicados.

Não entendo.
NILSONTRES 28/02/2014 16:09:30
#435410
Tem que dar certo independente de vb ou c#.

O erro ai acho que descobri:



Citação:

[Ô]Não é possível converter um objeto do tipo [ô]CrystalDecisions.CrystalReports.Engine.FieldObject[ô] no tipo [ô]CrystalDecisions.CrystalReports.Engine.TextObject[ô].[Ô]


vc esta tentando converter textobject, mas no seu relatorio esse campo é field e não text.
Insira no crystal um textobject.
LUIS.HERRERA 28/02/2014 16:26:36
#435411
Então eu também fiz isso, só que com um campo TextObjetc dá Crach no VS quando estou dorando o Build. Ele fecha meu programa e volta ao Design Time.

A imagem do erro segue anexa, fiz tudo que é tentativa.

NILSONTRES 28/02/2014 16:48:50
#435413
O Problema esta só nessa questão ? O resto abre normal ?
CLEVERTON 01/03/2014 09:57:00
#435422
Olha, nem li os tópicos anteriores.

mas acho que isso aqui é um bom começo para inciantes no assunto.

Qualquer dúvida estamos ai.
LUIS.HERRERA 03/03/2014 10:29:42
#435459
Sim Nilson, sem tentar passar um valor direto para um campo no relatório, ele abre perfeitamente. O código em design não apresenta erro, só na hora de rodar (Build ou Release) é que gera o erro que passei na imagem, aí o EXE fecha, e volta do designer do VS.

Fui pesquisar o tal erro de runtime do C++ R6025. Não sei se essa chamada é causada pelo VS (C#) ou pelo Crystal Report. Esse link da Microsoft explica por alto o que é: http://support.microsoft.com/kb/125749/pt-br

Ai pesquisando um pouco mais, vi que esse erro, como muitos no Windows, tem causas das mais variadas, e podem ocorrer sem um padrão definido, ou seja, num micro não ocorre, em outros ocorre aleatoriamente e em outros a cada execução.

Tentando analisar melhor o código, reparei numa coisa: A declaração de uma variável / objeto qualquer em C# é assim:
private bool myVariavel = valor;

ou no caso do objeto para o Crystal ficaria...
CrystalDecisions.CrystalReports.Engine.TextObject myCampo = new CrystalDecisions.CrystalReports.Engine.TextObject();


Ocorre que se eu declarar o myCampo assim gera erro já em designer, dizendo que o Type [Ô]CrystalDecisions.CrystalReports.Engine.TextObject()[Ô] não tem um construtor definido. Será essa a origem do problema?

Por isso eu havia tentado fazer assim:
CrystalDecisions.CrystalReports.Engine.TextObject myCampo = null;[Ô] 

Ai não deu erro no designer, mas em runtime. Não tenho tanto conhecimento nesse assunto para achar outra causa.

Ultima coisa: A versão do Crystal que tenho, vem junto com o VS 2008. Ela é 10.5.3700 e o VS está instalado só VB e C# e atualizado com tudo que tinha disponível até agora.

- Tem algum lugar que possa saber se há um service pack para essa versão do Crystal?
- O Crystal não é atualizado junto com o VS:

Alguém tem uma LUZ?
Página 2 de 4 [32 registro(s)]
Tópico encerrado , respostas não são mais permitidas