O seguinte conteúdo é o código do programa:
Antes de estudarmos Crystal Reports no VS.Net, meu amigo e eu estávamos muito curiosos sobre como adicionar esse material complicado à nossa aplicação web. Uma semana depois, depois de ler muitos documentos "HOWTO", adicionamos com sucesso alguns relatórios simples ao nosso programa Asp.net e recebemos algumas dicas.
Este artigo ensina como usar o Crystal Reports em aplicativos da Web .Net e também pode ajudá-lo a evitar desvios no processo de aprendizagem. Para obter os melhores resultados, os leitores devem ter algum conhecimento básico de acesso ao banco de dados Asp.Net e experiência em desenvolvimento usando VS.Net.
Introdução
O Crystal Reports pode ser obtido de várias maneiras, uma delas é usar o VS.Net para criá-lo, o que fornece um modelo muito rico que nos permite operar propriedades e métodos em tempo de execução. Se você estiver usando o VS.Net para desenvolver programas .Net, não será necessário instalar outro software porque ele já está incorporado no VS.Net.
vantagem:
O VS.Net Crystal Reports tem as seguintes vantagens principais:
Desenvolvimento rápido de relatórios
Capacidade de exportar para gráficos interativos complexos
Pode ser usado no WebForm com outros controles
Capaz de exportar relatórios dinamicamente para .pdf, .doc, xls, html, rtf e outros formatos
estrutura:
Alguns componentes compõem a estrutura de duas camadas do Crystal Reports. Os aplicativos da web necessários são:
Cliente:
O cliente só precisa de um navegador que possa acessar o relatório incorporado na página aspx.
servidor:
- Mecanismo de relatório Crystal (CREngine.dll)
Ele pode realizar algumas tarefas, como mesclar dados em arquivos de relatório, converter relatórios para outros formatos, etc. É precisamente por causa do mecanismo de relatórios que o Crystal Reports no Asp.Net pode ser convertido para o formato HTML comum.
- Crystal Report Designer (CRDesigner.dll)
Crystal Reports são criados no designer, onde você pode desenhar títulos, inserir dados, fórmulas, gráficos, sub-relatórios, etc.
- arquivo de relatório .rpt
A primeira etapa na execução de um relatório é criá-lo na interface do Crystal Report Designer. A Microsoft forneceu alguns exemplos .rpt prontos na instalação padrão.
- Fonte de dados
O método de obtenção do banco de dados do arquivo .rpt depende da sua escolha de método. Você pode optar por deixar o Crystal Reports selecionar os dados sem usar nenhum código ou pode optar por montar manualmente o DataSet e depois transferi-lo para o arquivo de relatório. .
- Controle de formulário web do Crystal Report Viewer (CRWebFormViewer.dll)
O controle Crystal Report View é um controle WebForm, que pode ser considerado um contêiner que armazena relatórios em uma página .aspx. Nota: Em algumas operações complexas, o servidor de relatório e o servidor Web podem não estar no mesmo host físico e o servidor Web transmite a solicitação HTTP ao servidor de relatório. O Crystal Reports também pode ser executado como um WebService.
A busca de dados do Crystal Reports em modo de execução pode ser obtida usando os seguintes métodos:
- Modo puxar:
Quando solicitado, o Crystal Reports se conecta diretamente ao banco de dados com base no driver especificado e monta os dados.
- Modo push:
Neste momento, a tabela de desenvolvimento deve escrever seu próprio código para conectar os dados e montar o DataSet, e ao mesmo tempo transferi-los para o relatório. Nesses casos, você pode maximizar o desempenho do relatório usando o compartilhamento de conexão e limitando o tamanho da coleção de registros.
Tipo de relatório:
O Crystal Report Designer pode incluir relatórios diretamente no projeto ou usar objetos de relatório independentes.
- Relatórios fortemente digitados:
Quando você adiciona um arquivo de relatório a um projeto, ele se torna um relatório "fortemente digitado". Nesses casos, você terá o poder de criar o objeto de relatório diretamente, o que reduzirá parte do código e poderá fornecer algum desempenho.
- Relatório não digitado:
Os relatórios aqui não estão incluídos diretamente no projeto e, portanto, são chamados de relatórios 'não digitados'. Neste caso, é necessário criar uma instância utilizando o objeto "ReportDocuemt" do Crystal Reports e utilizar o relatório "manualmente".
Outras coisas a serem observadas
- Embora o Crystal Report Viewer tenha alguns recursos interessantes, como zoom, navegação de página, etc. Mas não fornece uma função de impressão, você deve chamar a função de impressão do navegador.
- Se o Crystal Report no VS.Net não estiver cadastrado, ele só poderá ser utilizado 30 vezes. Após 30 vezes, a função “salvar” não poderá mais ser utilizada. Para evitar isso, você não deve registrar este produto aqui em http://www.crystaldecisions.com/ . (Este não parece ser o caso. Parece que posso usá-lo por muito tempo sem se registrar, mas o suporte não pode ser fornecido)
- A instalação padrão do Crystal Reports pode suportar apenas 5 usuários. Para suportar mais usuários, você deve adquirir uma licença em http://www.crystaldecisions.com/ .
Vamos sentir - usando um arquivo Crystal Report pronto no Asp.net 1) Arraste o controle Crystal Report Viewer (Crystal Report Viewer) da barra de ferramentas do WebForm para a página .aspx.
2) Acesse a janela de propriedades do controle Crystal Report Viewer
3) Clique no botão [...] para visualizar a propriedade "Data Binding" e a janela DataBinding aparecerá.
4) Selecione "Fonte do relatório" na área "Propriedades vinculáveis" à esquerda
5) Selecione o botão de opção "Expressão de ligação personalizada" e especifique o nome do arquivo e o caminho do arquivo .rpt na janela inferior à direita, por exemplo: "C:\Arquivos de programas\Microsoft Visual Studio.NET\ Crystal Reports\Samples\Reports\General Business\World Sales Report.rpt" e depois "OK"
Nota: O arquivo "World Sales Report.rpt" é criado durante a instalação do VS.Net. Se você especificou outro diretório durante o processo de instalação, é melhor confirmar a exatidão do caminho neste momento.
As etapas acima inserem o seguinte código no arquivo Asp.Net:
assim como:
id="CrystalReportViewer1"
runat="servidor" Largura="350px" Altura="50px"
FonteRelatório=''>
Obs: O estilo gerado pelo ReportSource no código gerado automaticamente na minha versão oficial do VS.Net não é assim, é:
Fonte do relatório = ""
Isso está errado e uma mensagem de erro aparecerá. Existem dois erros:
Deve ser modificado manualmente de acordo com o formato apresentado neste artigo. Isso pode ser considerado um bug do VS.Net.
6) Chame o método DataBind no método Page_Load. (O código é VB.Net)
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
DataBind()
Finalizar sub
7) Salve e compile sua página. Agora, você tem uma página WebForm com Crystal Reports incorporado.
Nota: No desenvolvimento real, haverá um erro informando que o diretório inetsrv não pode ser acessado no início. A solução é alterar os atributos de segurança do diretório para que o usuário User tenha permissões graváveis. Flying Knife Descobri que as soluções fornecidas pelo sistema .Net são inúteis, e pode ser porque estou usando o sistema operacional Windows.Net.
Usando Crystal Reports em Asp.Net (Parte 2)
www.dotnet8.com 2002-9-6 DotNet Bar
O seguinte conteúdo é o código do programa:
Usando o modo Pull Usaremos as seguintes etapas para executar o Crystal Reports através do modo Pull
1. Primeiro crie o arquivo rpt e use a interface de design do Crystal Report para configurar algumas conexões de dados necessárias.
2. Arraste e solte um controle CrystalReportViewer na página aspx e defina suas propriedades para especificar o arquivo .rpt que criamos na etapa anterior.
3. Chame o método DataBind no código.
Crie o arquivo .rpt:
1) Clique com o botão direito em "Solution Browser" e selecione "Add"--"Add New Item"-->"Crystal Report" no menu pop-up
2) Selecione o botão de opção "As Blank Report" em "Crystal Report Library" e finalmente clique em "OK".
3) O Crystal Report Designer aparecerá aqui.
4) Clique com o botão direito na "Área de Detalhes" do relatório e selecione "Banco de Dados" -> "Adicionar/Excluir Banco de Dados..."
5) No pop-up "Database Expert", expanda a opção "OLE DB(ADO)" e outra janela "OLE DB(ADO)" aparecerá.
6) Na janela pop-up "OLE DB (ADO)", selecione "Microsoft OLE DB Provider for SQL Server" e depois "Next"
7) Especifique o servidor de informações ao qual se conectar: ASPCN (escreva qualquer que seja o nome da sua máquina)
ID do usuário: sa
senha:
Banco de dados: Pubs
8) Clique em “Avançar” e por fim clique no botão “Concluir”.
9) Neste momento você pode ver o banco de dados que selecionamos na janela "Database Expert".
10) Expanda o banco de dados “Pubs”, expanda a “Tabela”, selecione a tabela “Lojas” e adicione-a na área “Tabelas Selecionadas”, clique no botão “OK”.
11) Agora no “Field Resource Browser”, a tabela que você selecionou e os campos da tabela serão exibidos na área “Database Field” à esquerda.
12) Arraste e solte os campos obrigatórios na área “Detalhes” do relatório. Os nomes dos campos aparecerão automaticamente na área “Cabeçalho”. Se quiser modificar o texto do cabeçalho, você pode clicar com o botão direito do mouse no texto da área "Cabeçalho", selecionar a opção "Editar objeto de texto" e editá-lo.
13) Salve para que tenhamos um arquivo Crystal Report.
Crie o controle CrystalReportViewer
14) Retorne ao WebForm anterior, arraste e solte um controle Crystal Report Viewer na página.
15) Acesse a janela de propriedades do controle Crystal Report Viewer, selecione a área "DataBindings" e clique [...]
16) Na "Janela de ligação de dados do Crystal Report Viewer", selecione "ReportSource" em "Propriedades vinculáveis" à direita e selecione "Expressão de ligação personalizada" no canto inferior direito para especificar o caminho do arquivo .rpt.
17) Neste ponto você pode ver uma prévia do arquivo de relatório composto por alguns dados virtuais do controle Crystal Report Viewer.
Nota: No exemplo acima, CrystalReportViewer pode chamar diretamente os dados reais em tempo de design porque os dados foram salvos neste momento. Nesse caso, quando os dados não são salvos em tempo de design, ele não pode exibi-los. Em vez disso, alguns dados fictícios são exibidos e os dados reais são selecionados apenas em tempo de execução.
Programação Code Behind
18) Chame o método DataBind no método Page_Load.
execute seu programa
19) Crie e execute seu programa!
Agora você pode usar algumas funções integradas do Crystal Reports diretamente na página da web, como navegação de página, zoom, etc.
Usando Crystal Reports em Asp.Net (Parte 2)
www.dotnet8.com 2002-9-6 DotNet
[HTML] Usamos as seguintes etapas para executar Crystal Reports usando o modo Push:
1. Projete um conjunto de dados
2. Crie um arquivo .rpt e atribua-o ao DataSet criado na etapa anterior.
3. Arraste e solte um controle CrystalReportViewer na página aspx e conecte-o ao arquivo rpt anterior.
4. Acesse o banco de dados em código e armazene os dados no DataSet
5. Chame o método DataBind.
Projetar um conjunto de dados
1) Clique com o botão direito em "Navegador de solução" e selecione "Adicionar" -- "Adicionar novo item" --> "Conjunto de dados"
2) Arraste e solte a tabela "Stores" (localizada no banco de dados PUBS) do "SQL Server" no "Server Explorer".
3) Neste momento, haverá um diagrama de estrutura da tabela Stores no conjunto de dados.
- O arquivo .xsd contém apenas um diagrama de estrutura, mas não conterá dados.
Crie o arquivo .rpt:
4) Crie este arquivo usando o método apresentado acima. A única diferença é usar um conjunto de dados em vez dos dados de conexão direta anteriores.
5) Após criar o arquivo .rpt, clique com o botão direito em "Detalhes" -> "Adicionar/Excluir Banco de Dados"
6) Na janela "Database Expert", expanda "Project Data" (substituindo o OleDb anterior), expanda "ADO.Net Data Set" - "DataSet1" e selecione a tabela "Stores".
7) Adicione a tabela "Lojas" às "Tabelas Selecionadas" e clique em "OK"
8) Use o método no modo PULL para criar um WebForm
Crie um controle do Crystal Report Viewer
9) Crie um controle Crystal Report Viewer e defina suas propriedades. Isso é consistente com o modo PULL.
Código por trás do código:
10) Use a seguinte subfunção no método Page_Load:
Código VB.Net:
Relatório SubBind()
Dim myConnection como novo SqlClient.SqlConnection()
myConnection.ConnectionString= "servidor= (local)NetSDK;database=pubs;Trusted_Connection=yes"
Dim MyCommand como novo SqlClient.SqlCommand()
MeuComando.Connection = minhaConexão
MyCommand.CommandText = "Selecione * nas Lojas"
MeuCommand.CommandType = CommandType.Text
Dim MyDA como novo SqlClient.SqlDataAdapter()
MeuDA.SelectCommand = MeuComando
Dim myDS como novo conjunto de dados1()
'Este é o DataSet que usamos no modo de design
MyDA.Fill(myDS, "Lojas")
'Você deve usar o mesmo nome do seu DataSet anterior.
Dim oRpt como novo CrystalReport1()
'Vinculação de relatório de cristal
oRpt.SetDataSource(meuDS)
'Definir o ReportSource do Crystal Report
CrystalReportViewer1.ReportSource = oRpt
Finalizar sub
Código C#:
privado vazio BindReport()
{
string strProvider = "Servidor=(local);DataBase=pubs;UID=sa;PWD=";
CrystalReport1 oCR = novo CrystalReport1();
Conjunto de dados1 ds = novo Conjunto de dados1();
SqlConnection MyConn = new SqlConnection(strProvider);
MyConn.Open();
string strSel = "Selecione * nas Lojas";
SqlDataAdapter MeuAdapter = new SqlDataAdapter(strSel,MyConn);
MyAdapter.Fill(ds,"lojas");
oCR.SetDataSource(ds);
this.CrystalReportViewer1.ReportSource=oCR;
}
Nota: No código acima, você deve observar que oRpt é um arquivo de relatório "Fortemente digitado". Se você precisar usar relatórios "UnTyped", deverá usar o objeto ReportDocument e depois chamar o arquivo de relatório.
Execute seu programa.
11) Execute seu programa
Exportar arquivos de relatório para outros formatos
Você pode exportar arquivos de relatório para os seguintes formatos:
1. PDF (formato de documento portátil)
1. 2. DOC (documento MS Word)
2. 3. XLS (planilha MS Excel)
3. 4. HTML (linguagem de marcação de hipertexto – compatível com 3.2 ou 4.0)
4. 5. RTF (Rich Text Format)
usa o modo Pull para exportar relatórios Ao exportar arquivos criados usando o modo Pull, o Crystal Reports abre com precisão os dados necessários.
Código C#:
Código VB.Net:
Private Sub Button1_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Lida com Button1.Click
Dim myReport As CrystalReport1 = Novo CrystalReport1()
'Nota: Aqui criamos uma instância do Crystal Report de tipo forte.
Dim DiskOpts como CrystalDecisions.Shared.DiskFileDestinationOptions = Novo CrystalDecisions.Shared.DiskFileDestinationOptions()
myReport.ExportOptions.ExportDestinationType = CrystalDecisions.[Shared].ExportDestinationType.DiskFile
'Esta opção também é necessária ao exportar para outros arquivos
'Como Microsoft Exchange, MAPI, etc.
myReport.ExportOptions.ExportFormatType = CrystalDecisions.[Compartilhado].ExportFormatType.PortableDocFormat
'Aqui exportamos para um arquivo no formato .pdf, você também pode escolher outros tipos de arquivos acima
DiskOpts.DiskFileName = "c:Output.pdf"
'Se você não especificar o diretório exato, o arquivo será salvo no diretório [Windows]System32.
myReport.ExportOptions.DestinationOptions = DiskOpts
'Os arquivos do Crystal Report não contêm uma propriedade direta FileName, portanto você não pode especificar diretamente o nome do arquivo salvo
'Então você tem que usar o objeto DiskFileDestinationOptions e definir sua propriedade DiskFileName
'Para o caminho desejado, finalmente especifique a propriedade DestinationsOptions do Crystal Reports como DiskFileDestinationOption acima
meuRelatório.Export()
'O código acima fará o trabalho de exportação.
Finalizar sub
Exportar Crystal Reports usando modo PUSH Quando o relatório exportado é criado em modo PUSH, o primeiro passo é estabelecer uma conexão e montar o DataSet através de programação, e definir a propriedade SetDataSource do relatório. As etapas a seguir são iguais às do modo Pull.
[/HTML]
Resumo do uso do Crystal Reports no ambiente .NET
O Crystal Reports é uma excelente ferramenta de desenvolvimento de relatórios Quando eu estava desenvolvendo um sistema de gerenciamento geral, todos os relatórios usavam o Crystal Reports. mais. Agora vou apresentar os Crystal Reports a todos por meio de notas.
1. Ao usar o Crystal Report integrado, registre-se, caso contrário, você só poderá usar
o Crystal Report 30 vezes.
Senha:AAP5GKS0000GDE100DS
2. Use CrystalReportViewer para visualização
O controle CrystalReportViewer permite visualizar o Crystal Report no aplicativo. A propriedade ReportSource define qual relatório visualizar. Depois que essa propriedade for definida, o relatório será exibido no visualizador. A origem do relatório pode ser um ReportDocument, o caminho do arquivo de relatório ou um relatório fortemente digitado.
1. Abra a "Caixa de Ferramentas" e arraste um CrystalReportViewer para o formulário, que chamamos de rptVew.
2. Use arrastar e soltar para redimensionar o Windows Forms Viewer para o tamanho desejado e movê-lo para a posição desejada.
3. Ao executar a aplicação, o relatório será exibido no visualizador.
3. Crie um novo relatório
1. Aponte para “Adicionar” e clique em “Adicionar Novo Item”.
2. Na caixa de diálogo "Adicionar novo item", selecione Crystal Report na área "Modelo", nomeie o relatório como rptClient e clique em "Abrir".
3. Na galeria do Crystal Report, selecione uma das seguintes opções:
· Usar Report Expert — Orienta você pelo processo de criação do relatório e adiciona suas seleções ao Crystal Report Designer.
· Como um relatório em branco – Abre o Crystal Report Designer.
· Do relatório existente — Cria um novo relatório com o mesmo design de outro relatório especificado.
Nota A biblioteca do Crystal Report contém especialistas que podem orientá-lo na criação de vários tipos específicos de relatórios. Você pode usar um especialista para criar seu relatório inicial e determinar qual método de construção de relatório atende às suas necessidades.
4. Clique no botão OK.
Se você optar por usar o Report Expert, a caixa de diálogo Report Expert aparecerá com o Data Explorer. Selecione os dados necessários para cada pasta, conclua as operações na interface da guia Report Expert e clique em Concluir para acessar o Crystal Report Designer e seu relatório.
4. Você precisa definir a fonte de dados dinamicamente?
O Crystal Reports se conecta ao banco de dados por meio de um driver de banco de dados. Cada driver é escrito para lidar com um tipo específico de banco de dados ou tecnologia de acesso a banco de dados.
Modelos Pull e Push Para fornecer aos desenvolvedores os métodos de acesso a dados mais flexíveis, o driver de banco de dados Crystal Reports foi projetado para fornecer modelos pull e push de acesso a dados.
modelo de puxar
No modelo pull, o driver se conectará ao banco de dados e “extrairá” os dados conforme necessário. Ao utilizar este modelo, tanto a conexão com o banco de dados quanto os comandos SQL executados para obtenção dos dados são tratados pelo próprio Crystal Reports, sem a necessidade dos desenvolvedores escreverem código. Use o modelo pull se não precisar escrever nenhum código especial em tempo de execução.
modelo push
Por outro lado, o modelo push exige que os desenvolvedores escrevam código para se conectar ao banco de dados, executem comandos SQL para criar um conjunto de registros ou conjunto de dados que corresponda aos campos do relatório e passem o objeto para o relatório. Este método permite que você coloque o compartilhamento de conexão em seu aplicativo e filtre os dados antes que o Crystal Reports os receba.
4. Faça relatórios a partir de conjuntos de dados ADO.NET e
crie objetos de conjunto de dados a partir do banco de dados
1. Crie um novo arquivo de esquema no projeto:
a. No gerenciador de soluções, clique com o botão direito no nome do projeto, aponte para "Adicionar" e. em seguida, clique em "Adicionar novo item".
b. Na área Categorias da caixa de diálogo Adicionar novo item, expanda a pasta e selecione Dados.
c. Selecione Conjunto de dados na área Modelo.
d. Aceite o nome padrão Dataset1.xsd.
Isso cria um novo arquivo de esquema (Dataset1.xsd) que será usado posteriormente para gerar um conjunto de dados fortemente tipado. O arquivo de esquema aparecerá no ADO.NET Dataset Designer.
2. Especifique o local do banco de dados:
a. No Server Explorer, clique com o botão direito em Conexões de Dados e selecione Adicionar Conexão.
b. Na caixa de diálogo Propriedades do link de dados, clique na guia Provedor e selecione um provedor (como Microsoft OLE DB Provider para SQL Server).
c. Clique na guia Conexão e especifique o local do seu banco de dados. Insira seu servidor e informações de login quando necessário.
Clique no botão OK.
Seu banco de dados e suas tabelas e campos agora aparecem no Server Explorer no nó Conexões de Dados.
3. No Solution Explorer, clique duas vezes em Dataset1.xsd (se ainda não for a visualização ativa).
Dataset1.xsd agora deve aparecer na guia Conjuntos de dados.
4. Para esquematizar o conjunto de dados, arraste as tabelas necessárias do Server Explorer para a guia Conjuntos de dados de Dataset1.xsd.
5. Clique em Salvar Dataset1.xsd para salvar o arquivo Dataset1.xsd.
6. No menu Gerar, clique em Gerar para gerar o objeto de conjunto de dados para o projeto.
O objeto ADO.NET DataSet fornece uma descrição dos dados a partir dos quais as tabelas podem ser adicionadas a um Crystal Report. Use o Database Expert no Crystal Report Designer para adicionar tabelas de objetos ADO.NET Dataset.
Ligue para o Database Expert ao usar o Report Expert para criar um novo relatório. Ou, para acessar o Database Expert a partir de um relatório criado usando ADO.NET, clique com o botão direito do mouse em Report Designer, aponte para Bancos de Dados e clique em Adicionar/Remover Banco de Dados.
Conectar um relatório a um objeto ADO.NET Dataset
1. No Database Expert, expanda a pasta Project Data.
2. Expanda a pasta "Conjuntos de dados ADO.NET".
3. Selecione o objeto do conjunto de dados necessário.
Por exemplo, se você estiver usando um objeto de conjunto de dados gerado a partir do arquivo de esquema "Dataset1.xsd" do projeto "WindowsApplication1", deverá selecionar "WindowsApplication1.Dataset1".
4. Selecione as tabelas a serem adicionadas ao relatório, assim como faria com outras fontes de dados.
5. Código para alterar fontes de dados dinamicamente
Dim dsdataSet As New DataSet()
Dim oRpt As New rptClient() 'O relatório estabelecido rptClient
exige que os leitores preencham o conjunto de dados dsdataSet por conta própria
'Use o modelo de objeto "mecanismo de relatório" para passar o conjunto de dados preenchido para o relatório
oRpt. SetDataSource(dsdataSet. Tables(0))
'Vincule o objeto de relatório com dados ao Windows Forms Viewer, rptVew (controle CrystalReportViewer)
rptVew.ReportSource = oRpt
Observe que o método FillDataSet pode se conectar ao banco de dados especificado, extrair os dados e, em seguida, desconecte o banco de dados. Se você quiser adicionar várias tabelas do banco de dados ao relatório, use a instrução SQL JOIN para unir essas tabelas e especifique uma tabela de resultados no método FillDataSet
6. Crie um relatório mestre-detalhado
No relatório, há muitos relatórios; Estrutura da tabela de detalhes mestre, como detalhes do pedido e do produto do pedido, o pedido é um registro em uma tabela e as entradas são vários registros em outra tabela. As duas tabelas são relacionadas por meio de um campo. Este tipo de relatório pode usar sua implementação de função de agrupamento. :
1. Crie um novo projeto
2. Adicione um controle CrystalReportViewer ao FORM1
3. Conecte-se ao banco de dados Northwind no SQL SERVER 2000 no gerenciador de recursos de serviço
4. Adicione um conjunto de dados Dataset1 e adicione os pedidos e os detalhes do pedido são adicionados aos dados definir.
5. Adicione um Crystal Report, utilize o Report Expert, selecione "ADO.NET Data Set" nos dados do projeto, insira as tabelas Orders e Order Details, "Link" é o link para o campo associado, selecione o campo a ser exibido no "Campo" Para os campos da tabela principal e tabela de detalhes, a base de seleção do grupo no grupo é o campo OrdersID da tabela Pedidos, total, gráfico, seleção (pode ser filtrado), estilo (pode definir o título do relatório), e pode ser definido por você mesmo. Após a configuração, clique em Concluir.
6. Ajuste a posição, largura, etc. dos campos a serem exibidos no designer de relatórios.
7. Adicione o código na janela.
Private Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs) Trata MyBase.Load
Dim oRpt As New CrystalReport1()
Dim dsdataSet As New Dataset1()
Dim CN como novo Data.SqlClient.SqlConnection("fonte de dados=PMSERVER;catálogo inicial=Northwind;id do usuário=sa;senha=sa")
CN.Open()
Dim daOrders como novo Data.SqlClient.SqlDataAdapter("selecione * de pedidos", CN)
daOrders.Fill(dsdataSet, "pedidos")
Dim daDetails As New Data.SqlClient.SqlDataAdapter("select * from [Detalhes do pedido]", CN)
daDetails.Fill(dsdataSet, "Detalhes do pedido")
'Use o modelo de objeto "Report Engine" para passar o conjunto de dados preenchido para o relatório
oRpt.SetDataSource(dsdataSet)
CrystalReportViewer1.ReportSource = oRpt
End Sub
8. Execute o programa
7. Utilize um programa para alterar o texto do relatório.
O código é o seguinte:
Dim GetTextObject As TextObject
' Obtém o ReportObject pelo nome, converte-o em TextObject e retorna este objeto.
GetTextObject = orpt.ReportDefinition.ReportObjects.Item("text13")
GetTextObject.Text = "Sistema XXXX"
Resumo: Crystal Reports possui funções muito poderosas. Ele também pode exportar WORD, EXCEL, RTF e outros arquivos, além de gerar gráficos complexos e bonitos. É uma ferramenta poderosa para desenvolvimento de relatórios WEB e WINDOWS.
(Parte das informações deste artigo vem do MSDN)
Autor: Li Honggen
E-MAIL: [email protected]
Tenho as seguintes ideias:
1. Obtenha dados relacionados ao banco de dados SQL por meio de consulta de conexão;
2. Coloque-o no DataSet;
3. Chame Crystal Reports (modelo linear ou colunar) para gerar relatórios;
4. Produza e gere documento EXCEL.
Por favor, digam-me, heróis, como implementar as ideias acima? (Seria melhor se houvesse exemplos)
Muito obrigado!
-------------------------------------------------- -------------
1. Adicione um novo DataSet de projeto ao seu projeto, conecte-se ao banco de dados e adicione as tabelas de dados ou procedimentos armazenados necessários
Arraste para este DataSet e compile o DataSet
2. Use o Crystal Report que vem com o Vs.net para criar um relatório com DataSet como fonte de dados.
3. Envie dados para este relatório no programa
4.O Crystal Report tem a opção de saída para Excel, o que também pode ser feito através de um programa.
Dim conexão como SqlConnection
Dim da As SqlDataAdapter
Dim strSQL como string
conexão = Nova SqlConnection()
conn.ConnectionString = "ID do usuário=sa; PWD=1234;Fonte de dados=xxxx; Catálogo inicial =xxxxx"
conexão.Open()
strSQL = "Selecione * em NomeDaTabela"
da = Novo SqlDataAdapter(strSQL, conn)
Dim ds como novo DataSet()
da.Fill(ds, "NomeTabela")
Dim RptDoc como novo ReportName()
RptDoc.SetDataSource(ds)
'Especifique os dados para RptDoc,
CrystalView1.ReportSource = RptDoc 'Especificar dados para CrystalView
CrystalView1.DataBind()
conexão.Fechar()
5. Se você precisar exibir campos associados a várias tabelas, é melhor criar um DataSet usando um procedimento armazenado.
-------------------------------------------------- -------------
Consulte o seguinte código:
string strconn=string de conexão;
SqlConnection myconn=new SqlConnection(strconn);
string strcmd=@"instrução selecionada ";
SqlCommand meucmd=new SqlCommand(strcmd,myconn);
SqlDataAdapter myda=new SqlDataAdapter(strcmd,myconn);
DataSet myds=new DataSet();
myconn.Open();
myda.Fill(myds,"nome do relatório");
Nome do relatório myrpt =novo nome do relatório();
myrpt.SetDataSource(myds);
this.CrystalReportViewer1.ReportSource=myrpt;
Exportar para EXCEL:
myrpt.ExportOptions.ExportDestinationType=CrystalDecisions.Shared.ExportDestinationType.DiskFile;
myrpt.ExportOptions.ExportFormatType=CrystalDecisions.Shared.ExportFormatType.Excel;
CrystalDecisions.Shared.DiskFileDestinationOptions opt=new CrystalDecisions.Shared.DiskFileDestinationOptions();
opt.DiskFileName=@"Nome do arquivo";
myrpt.ExportOptions.DestinationOptions =opt;
myrpt.Export();
download de ajuda em chinês para Crystal Reports 9:
http://www.ourfly.com/download/download.aspx
http://www.enwell.net/soft/
http://www.fast8.com/news.asp
do Crystal Reports for Visual Studio .NET
PictureObject consulte
Classe PictureObject¦ Propriedades da instância pública do namespace CrystalDecisions.CrystalReports.Engine
Borda(Herdado de ReportObject) Borda. Obtenha o objeto Border.
Altura (herdada de ReportObject) Int32. Obtém ou define a altura do objeto em twips.
Kind (Herdado de ReportObject) ReportObjectKind. Obtém o tipo de objeto de relatório.
Esquerda (Herdado de ReportObject) Int32. Obtém ou define a posição do canto superior esquerdo do objeto em twips.
Nome (herdado de ReportObject) String. Obtenha o nome do objeto.
ObjectFormat (Herdado de ReportObject) ObjectFormat. Obtenha o objeto ObjectFormat.
Superior (Herdado de ReportObject) Int32. Obtém ou define a posição superior do objeto em twips.
Largura (herdada de ReportObject) Int32. Obtém ou define a largura do objeto em twips.
Ver
PictureObjectImporta
CrystalDecisions.CrystalReports.Engine
Dim picObject As PictureObject
picObject = oRpt.ReportDefinition.ReportObjects.Item("imagem1")
De: http://expert.csdn.net/Expert/topic/1896/1896874.xml?temp=.78677
Ao usar Crystal Reports baseado em formulário web, se você simplesmente seguir o método "A Dao" na Internet, você definitivamente será solicitado. Você: Falha no login.
Em relação a este problema, passei um dia inteiro estudando o arquivo de ajuda do Crystal Reports e finalmente consegui uma solução.
Não sou uma pessoa conservadora, acredito que há muitos internautas que estão gastando energia pesquisando esse assunto como eu. Não quero que todos gastem energia em vão como eu.
Aqui estão algumas etapas que executei para implementar esta solução. Não fique ansioso, será de grande ajuda se você ler devagar.
Passo 1: Veja o arquivo de amostra O Crystal Reports vem com um arquivo de amostra e o banco de dados é acessado (sem senha). Executei primeiro o arquivo de amostra (baseado em webform e winform) e o resultado mostrou o relatório correto, assim como o exemplo da "faca voadora".
Então, eu mesmo criei um arquivo de relatório e um arquivo .aspx, mas o resultado mostrou que o login falhou! Mas mudei o arquivo de relatório para o arquivo de relatório de amostra e não ocorreram mais erros.
Qual é o problema? Será que o arquivo no formato do relatório possui configurações de permissão de login? Por meio de rastreamento e depuração, comparei e analisei meu arquivo de relatório e o arquivo de relatório de amostra e não encontrei nenhuma diferença. Parece que o problema não está no arquivo de relatório.
É um problema de banco de dados? Quando criei um acesso, o login falhou!
Não é um problema de banco de dados (meu próprio banco de dados tem acesso sem senha e o mesmo se aplica ao banco de dados da ajuda)? Não é um problema com o formato do arquivo do relatório (analisei cuidadosamente que os códigos originais dos dois são iguais)?
Então, onde ocorre o problema? Eu não consigo entender isso!
Passo 2: Encontre o arquivo de ajuda Então pedi ajuda novamente. Pesquisei com a ajuda do Crystal Reports e finalmente encontrei as palavras "Access Secure Database [C#]" e encontrei o seguinte parágrafo:
O processo para acessar um banco de dados seguro através do Crystal Reports para Visual Studio .NET difere entre Web Forms e Windows Forms. No Windows Forms, uma caixa de diálogo solicita automaticamente ao usuário um nome de usuário e uma senha (o teste é bem-sucedido facilmente). Em Web Forms, você precisa criar um formulário para obter essas informações do usuário. Em ambos os casos, o código pode ser utilizado para especificar nomes de usuário e senhas, proporcionando o mesmo nível de segurança para todos os usuários da aplicação.
Então usei o mesmo banco de dados (primeiro usando o banco de dados de acesso no exemplo de ajuda e depois usando o banco de dados de acesso que criei). Verifica-se que para o mesmo arquivo de relatório, o winform pode mostrar sucesso, mas o webform ainda mostra falha de login! Então eu meio que entendo o que isso significa!
Parece que o problema está nas configurações de permissão.
Etapa 3: Pesquise por ajuda e finalmente tenha sucesso!
Na ajuda, encontrei as palavras "Definir parâmetros de login do banco de dados", que forneciam algumas informações que posteriormente considerei muito úteis:
O exemplo a seguir mostra como passar parâmetros de login para uma tabela de relatório. Este exemplo usa uma conexão com um banco de dados SQL Server seguro.
Inicie um novo projeto e adicione um Button e quatro controles TextBox ao formulário.
Nomeie os controles da caixa de texto: serverNameTxt, dbNameTxt, userNameTxt e passwordTxt.
Clique duas vezes no controle Button para especificar o código do evento Click. Insira o código apropriado com base no idioma usado.
[C#]
// Declara as variáveis necessárias.
TableLogOnInfo logOnInfo = new TableLogOnInfo();
int i = 0;
// Percorre cada tabela do relatório.
para (i=0;i == Report.Database.Tables.Count - 1;i++)
{
//Define as informações de conexão da tabela atual.
logOnInfo.ConnectionInfo.ServerName = serverNameTxt.Text;
logOnInfo.ConnectionInfo.DatabaseName = dbNameTxt.Text;
logOnInfo.ConnectionInfo.UserID = userNameTxt.Text;
logOnInfo.ConnectionInfo.Password = senhaTxt.Text;
Report.Database.Tables [i].ApplyLogOnInfo (logOnInfo);
}
Observe que os bancos de dados de PC protegidos por senha, como o Microsoft Access e o Paradox, também usam esse método, mas o logonInfo.Servername e o logoninfo.databasename devem ser deixados vazios.
Então eu tentei assim e recebi uma mensagem de erro: tablogonfo e relatório não foram encontrados.
Mais tarde, descobri que o tablogonFo é um membro do espaço para nome Crystaldecisions.Shared. Então eu adicionei uma cotação:
usando o CrystalDecisions.shared;
Desta vez, o problema ocorreu no relatório.
Relatório? O que é isso?
[Seriamente! Esse problema me incomodou há muito tempo! Eu tenho procurado o que é o relatório! A empresa de relatórios da Waterscape também é realmente útil e não escreve em detalhes! É hora de lutar! ! ! ]
No final, finalmente descobri que o relatório é apenas um objeto definido pelo usuário, não um objeto do próprio sistema.
Quando fiquei confuso, de repente pensei: por que não dar uma olhada no banco de dados por trás do relatório, o que é isso?
RelationDocument orpt = new ReportDocument ();
O relatório é um membro da classe DocumentCrystalDecisions.Crystalreports.Engine.
Modifique o código: e adicione uma referência
usando o CrystalDecisions.shared; // responsável por interpretar a classe tablogonInfo
Usando CrystalDecisions.CrystalReports .Engine; // Responsável por interpretar a classe Relatório Document Private void Page_load (remetente de objeto, System.EventArgs e)
{
TablogonInfo logonInfo = new tablogonInfo ();
// Um relatório do objeto RelatórioDocument deve ser declarado antecipadamente e o relatório de dados deve ser carregado ao mesmo tempo.
RelationDocument orpt = new ReportDocument ();
orpt.load ("c: \ inetpub \ wwwroot \ Exer \ pagelet \ Crystal \ cr1.rpt"); // Alterar para o seu próprio // Localização correta
// Crie informações de segurança
// bancos de dados de PC prototegidos por senha, como o Microsoft Access e o Paradox, também usam esse método, mas o logoninfo.servername // e logoninfo.databasename devem ser deixados vazios
logoninfo.connectionInfo.servername = "www";
logoninfo.connectionInfo.databasename = "Archives";
logoninfo.connectionInfo.userID = "SA";
LOGONINFO.ConnectionInfo.password = "123456
"
;
CrystalReportViewer1.ReportSource = orpt;
}
O arquivo de relatório finalmente aparece!
Uau, fiquei tão feliz que não pude deixar de me levantar e esticar!
Etapa 4: a versão completa final do código. Existem duas desvantagens:
(1) O arquivo de formato do relatório de dados usa um caminho absoluto
(2) Depois que as permissões de acesso ao banco de dados estão definidas, elas não podem ser modificadas na versão final. Apresente duas coisas melhores:
(1), função server.mappath
(2) Leia o web.config (este exemplo também informa como operar o arquivo de configuração do Web.config)
A modificação final é a seguinte: (código completo) O banco de dados é o SQL Server2000
usando o CrystalDecisions.shared; // responsável por interpretar a classe tablogonInfo
Usando CrystalDecisions.CrystalReports .Engine; // Responsável por interpretar a classe Relatório Document
Private void Page_load (remetente de objeto, System.EventArgs e)
{
TablogonInfo logonInfo = new tablogonInfo ();
// Um relatório do objeto RelatórioDocument deve ser declarado antecipadamente e o relatório de dados deve ser carregado ao mesmo tempo.
RelationDocument orpt = new ReportDocument ();
// Obtenha o caminho real do arquivo .rpt
String Path1, Path2;
path1 = server.mappath (" \ Exer \ pagelet ");
path2 = path1+" \ cristal \ cr1.rpt ";
//orpt.load("c:\inetpub\wwwroot\xer\pagelet.
orpt.load
(path2);
string a, b, c, d;
// Get ServerName
a = System.configuration .configurationsettings .AppSettings ["ServerName"];
// Obtenha o nome do banco de dados
b = System.Configuration .Configurationsettings .AppSettings ["Database"];
// obtenha o usuário do usuário
c = System.Configuration .Configurationsettings .AppSettings ["UserID"];
// Obtenha senha
d = System.Configuration .Configurationsettings .AppSettings ["Pass"];
// Defina parâmetros de logonInfo
logonInfo.ConnectionInfo.Servername = a;
logoninfo.connectionInfo.databasename = b;
logonInfo.ConnectionInfo.UserID = C;
=
d
;
CrystalReportViewer1.ReportSource = orpt;
}
Descrição de todo o processo de demonstração:
1. No Solution Explorer, onde você precisa armazenar o arquivo de relatório, adicione um novo item: Relatório CrystalReport, chamado CR1.RPT
2. Ao selecionar a fonte de dados no "especialista em relatório" que aparece posteriormente, certifique -se de selecionar OLE DB e selecione o mecanismo de condução correspondente de acordo com os requisitos do seu banco de dados:
SQL Server: Microsoft OLE DB Provedor para SQL Server
Acesso: Microsoft Jet.4.0
3. Digite a conexão correta do banco de dados.
4. Crie um relatório de dados e salve o arquivo CR1.RPT
5. Abra WebForm1.aspx. Adicionar CrystalReportViewer Controle: Nome: CrystalReportViewer1
6. Adicione o código acima no evento Page_load em webform1.aspx.cs:
(Nota: não se esqueça de citar!)
************************************************** ****
Abaixo estão os detalhes relacionados a este conteúdo em web.config
<configurações do aplicativo>
<add key = "serverName" value = "www"/>
<add key = "Database" value = "Archives"/>
<add key = "userId" value = "admin"/>
<add key = "pass" value = "123456"/>
</appSettings>
*** Observe que <add key = "pass" value = "123456"/> aqui está passando, por isso deve ser o mesmo que
// Obtenha senha
D = System.Configuration .Configurationsettings .AppSettings ["Pass"]; o "passe" em AppSettings ["Pass"] aqui permanece consistente. Obviamente, você pode escolher qualquer nome que desejar, mas deve ser consistente.
http://www.cnblogs.com/zhangyd1080/archive/2006/11/15/561770.html