我对编程很新。
我不打算使用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
的原因是因为它包含解密数据。
答案 0 :(得分:1)
使用DataGridView
打印PrintDocument
可能会很乏味。请参阅this codeproject文章以获得一个想法。
您还可以使用DataGridView
剪贴板内容将格式化的值放入剪贴板并复制到某个Excel文件中。以下MSDN链接有一些从DataGridView
获取剪贴板内容的示例。
答案 1 :(得分:1)
如果您使用的是vs 2010,则在部署应用程序时,不应该使用Crystal报告来解决许可证问题。我认为这不是基于服务器的重新分配。
http://www.sap.com/solution/sme/software/analytics/crystal-visual-studio/implement/licensing.html