【问题标题】:Create report from Bound DataTable从绑定数据表创建报告
【发布时间】:2014-01-30 17:19:19
【问题描述】:

我对编程还很陌生。

我不打算使用 Crystal Reports,除非因为许可费用而绝对必要。我也对 .rdlc 进行了一些研究,老实说,这让我很困惑。我不确定如何使用报告向导将我想要的数据放入客户端报告定义中。不过,附带说明一下,我正在处理加密数据。

我正在对我的 DataTable 中的数据进行解密,并希望从提供 DGV 的 DataTable 中生成一份报告并将其显示在 ReportViewer 中。如果有更好的方法请告诉我!

我不确定如何使用 DataTable 作为报表的数据源。这是我的代码:

    Dim dt As DataTable = ds.Tables(1)
    ds.DataSetName = "DataSetReport"
    dt.TableName = "DataTable1"


    If SearchFirsttxt.Text = "" Then
        SqlCommand.CommandText = "Select * FROM PARTICIPANT WHERE LAST_NM_TXT = '" & eLast & "';"
    ElseIf SearchLastTxt.Text = "" Then
        SqlCommand.CommandText = "Select * FROM PARTICIPANT WHERE FIRST_NM_TXT = '" & eFirst & "';"
    Else
        SqlCommand.CommandText = "Select * FROM PARTICIPANT WHERE FIRST_NM_TXT = '" & eFirst & "' and LAST_NM_TXT = '" & eLast & "';"
    End If
    'SQL Command returns rows where values in database and textboxes are equal

    SearchFirsttxt.Text = ""
    SearchLastTxt.Text = ""

    dFirst = clsEncrypt.DecryptData(eFirst) 'Decrypts the value entered into the SearchFirsttxt
    dLast = clsEncrypt.DecryptData(eLast)   'Decrypts the value entered into the SearchLasttxt


    Dim myAdapter As New SqlDataAdapter(SqlCommand) 'holds the data
    myAdapter.Fill(dt) 'datatable that is populated into the holder (DataAdapter)
    DataGridView1.DataSource = dt 'Assigns source of information to the gridview (DataTable)

    Try
        For i As Integer = 0 To dt.Rows.Count - 1
            dt.Rows(i)("FIRST_NM_TXT") = clsEncrypt.DecryptData(dt.Rows(i)("FIRST_NM_TXT"))
            dt.Rows(i)("LAST_NM_TXT") = clsEncrypt.DecryptData(dt.Rows(i)("LAST_NM_TXT"))
        Next
    Catch ex As Exception
        MessageBox.Show("Either the first name or last name did not match. Please check your spelling.")
    End Try

我试过了:

Dim ds As DSReportTest
ds.Tables.Add(dt)

这没有用。我之所以尝试依赖dt,是因为它包含解密后的数据。

【问题讨论】:

  • 更新:如果有人想知道我最终是如何做到的,请发表评论,我会发布代码。

标签: vb.net visual-studio-2010 datagridview sql-server-2008-r2


【解决方案1】:

使用PrintDocument 打印DataGridView 可能很乏味。参考thiscodeproject 文章了解一下。

您还可以使用DataGridView 剪贴板内容将格式化的值获取到剪贴板并复制到一些excel文件中。下面的 MSDN 链接有一些从 DataGridView 获取剪贴板内容的示例。

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.getclipboardcontent%28v=vs.110%29.aspx

【讨论】:

  • 很好的参考资料。由于某种原因,codeproject 文章没有出现在我的 Google 搜索中。至于 excel 的想法,这个项目实际上是为了消除 excel 和事物的物理副本而创建的,所以我认为那是不可能的。我将更多地研究 CodeProject 文章,看看我是否可以使用它。再次感谢。
  • 您有关于以编程方式将 DataTable 绑定到报表的想法吗?还是报表查看器?
【解决方案2】:

如果您使用的是 vs 2010,那么在部署应用程序时使用水晶报告应该不会出现许可证问题。我认为这不是基于服务器的重新分发。

http://www.sap.com/solution/sme/software/analytics/crystal-visual-studio/implement/licensing.html

【讨论】:

  • 我四处询问,被告知免费版本不够“强大”。我确实阅读了您提供的链接上的许可信息,并告诉该人及以上是他们的回应。感谢您的链接!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-18
  • 2016-09-21
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 2020-06-30
相关资源
最近更新 更多