从Bound DataTable创建报告

时间:2014-01-30 17:19:19

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

我对编程很新。

我不打算使用Crystal Reports,除非因许可证费用而绝对必要。我也对.rdlc进行了一些调查,说实话它让我很困惑。我不知道如何使用报表向导将我想要的数据导入客户报表定义。但是,作为旁注,我正在处理加密数据。

我正在解密我的DataTable中的数据,并且希望从DataTable中生成一个报告,该报告提供DGV并在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的原因是因为它包含解密数据。

2 个答案:

答案 0 :(得分:1)

使用DataGridView打印PrintDocument可能会很乏味。请参阅this codeproject文章以获得一个想法。

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

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

答案 1 :(得分:1)

如果您使用的是vs 2010,则在部署应用程序时,不应该使用Crystal报告来解决许可证问题。我认为这不是基于服务器的重新分配。

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