Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Atualizando o provedor de dados do Crystal Reports


A menos que alguém tenha uma solução mais rápida/simples, aqui está a abordagem que uso para obter relatórios de cristal trabalhando com MS Access no Visual Studio 2010. É um pouco mais complicado do que o método normal de selecionar uma fonte de dados, mas oferece mais controle, é banco de dados agnóstico e funciona onde os outros métodos às vezes falham (especialmente com o MS Access na minha experiência).

Vou detalhar o processo de fazer os relatórios funcionarem do início ao fim (porque todo o processo pode ser útil para outras pessoas), mas destacarei as partes que podem ser úteis para você.

1) Instale o Crystal Reports do site SAP. Certifique-se de baixar o arquivo exe, NÃO o msi (não funciona):

http://scn.sap.com/docs/DOC-7824

2) Altere o Target Framework do seu aplicativo para .Net Framework 4 (NÃO cliente). O material Crystal não está incluído no perfil básico.

3) Adicione uma referência às bibliotecas Crystal (Crystal Reports for .NET)

4) Adicione um formulário, nesse formulário coloque um controle Crystal Report Viewer (da seção Reporting da Toolbox):



5) Adicione um CrystalReportDocument e atribua-o ao controle CrystalReportViewer:



Para realmente preencher o relatório com dados, faça o seguinte:

1) Gere seu esquema de relatório executando o código que pega sua tabela de dados de relatório (de um gateway) e exporta o esquema. Por exemplo:
<TestMethod()>
Public Sub SchemaTest()
    Dim dataSet As DataSet = StaticDataGateway.AccountingIncomeTotals
    dataSet.WriteXmlSchema("I:\Myschema.xml")
End Sub

Se você já tiver seus relatórios criados, provavelmente não precisará disso. O mesmo se você puder escrever o xml à mão (fácil depois de ter um modelo para trabalhar)

2) Você então carrega isso em seu relatório para obter os campos que você pode manipular para produzir seu relatório. Para fazer isso, clique com o botão direito do mouse nos campos do banco de dados no Report Field Explorer:



3) A partir daqui, você seleciona Database Expert e escolhe ADO.net (xml). A escolha lógica do Access/Excel DAO na verdade não funciona no VS 2010. Selecione seu arquivo de esquema e carregue-o, depois clique duas vezes na Table1 para preencher a visualização Selected Tables:



4) Agora que você tem um esquema carregado, você poderá ver campos na lista suspensa de campos que você pode arrastar e soltar em seu relatório:



5) Finalmente, você carrega um conjunto de dados em seu relatório executando o código no evento on load do seu formulário no qual você colocou o controle reportviewer:

i) Certifique-se de produzir um conjunto de dados (não uma tabela de dados) do seu gateway (ou de qualquer outro lugar):
Public Shared Function AccountingIncomeTotals() As DataSet
    Dim dataSet As New DataSet
    Dim dataTable As DataTable = Database.GetDataTable(GetCommand(DBC.Reporting.SPs.AccountingIncomeTotals))
    dataSet.Tables.Add(dataTable)
    Return dataSet
End Function

ii) Em seguida, atribua-o à fonte de dados no relatório:
Private Sub AccountingIncomeTotals_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    AccountingIncomeTotalsReport1.SetDataSource(StaticDataGateway.AccountingIncomeTotals)
End Sub

A seção acima provavelmente será especialmente interessante para você, pois permite atribuir diretamente a fonte de dados ao relatório sem precisar usar o painel de interface do usuário de DataSources de seleção de cristal.

Há outra coisa necessária, você precisa adicionar "useLegacyV2RuntimeActivationPolicy" ao arquivo app.config:

http:/ /www.codeproject.com/Questions/390643/Error-When-use-of-crystal-report-sap-crystal-13-an

Espero que isso ajude, desculpe, é tão complicado, se você tiver alguma dúvida, pergunte