Возможно, у меня неправильный заданный вопрос.
У меня есть документ Crystal Report (счет-фактура) ... Этот документ имеет много параметров
Т.Е. Имя, адрес, телефон, налоговая ставка и прочее ... и привязаны к Datatable, который включает в себя информацию о товарах, количестве, стоимости и прочее ... все это прекрасно работает ... и это я делаю с этим кодом.
Dim rptobj As New rpt_Invoice ' my invoice sceleton
Using tblInvoice As New DataTable
'DataTable to bind
tblInvoice.Columns.Add("ANAME", GetType(String))
tblInvoice.Columns.Add("CNT", GetType(Double))
tblInvoice.Columns.Add("CNTSTR", GetType(String))
tblInvoice.Columns.Add("OUT_PR", GetType(Double))
For Each row As Datagridviewrow In rowCol
Dim Drow As Data.DataRow = tblInvoice.NewRow
Drow.Item("ANAME") = DBNullBug(row.Cells("ANAME").Value)
Drow.Item("CNT") = row.Cells("DECCNT").Value
Drow.Item("CNTSTR") = row.Cells("CNT").Value
Drow.Item("OUT_PR") = row.Cells("SOLD_PR").Value
tblInvoice.Rows.Add(Drow)
Next
'Params to pass
Dim RPTParams As New Hashtable
RPTParams.Add("NDS", OPT.Item.NDSValue)
RPTParams.Add("INVOICENUM", "")
RPTParams.Add("INVOICEHIMQ", "")
RPTParams.Add("KATPASHT1", "Director")
RPTParams.Add("KATPASHT2", "Accountant")
RPTParams.Add("VCHPASHT1", "Director")
RPTParams.Add("VCHPASHT2", "Accountant")
RPTParams.Add("ADATE", CDate(Now))
RPTParams.Add("INFO", "")
RPTParams.Add("ORDER_ID", Order_Id)
Dlg_RepPreview.STable = tblInvoice
Dlg_RepPreview.SParams = RPTParams
Dlg_RepPreview.rep = rptobj
Dlg_RepPreview.ShowDialog()
End Using
И форма с именем «Dlg_RepPreview» имеет переменную rep (reportdocument) и STable (DataTable), SParams как Hashtable (хеш-таблица с параметрами).
в Form_Load я написал этот код
Private Sub Dlg_Rep_Load (ByVal sender As Object, ByVal e As System.EventArgs) Обрабатывает Me.Load
RP_Viwer.ReportSource = rep 'RP_Viwer - мой ReportViewer
Если STable не является ничем, то
rep.SetDataSource (STable) 'источник данных установки
End If
Для каждого параметра как ParameterField в rep.ParameterFields 'установить значения параметров
Если SParams.ContainsKey (Param.Name.ToUpper), то
rep.SetParameterValue (Param.Name, SParams (Param.Name.ToUpper))
еще
rep.SetParameterValue (Param.Name, Param.DefaultValues ())
End If
следующий
RP_Viwer.Zoom (75)
RP_Viwer.Refresh ()
End Sub
в этой форме у меня есть кнопка. когда пользователь нажимает эту кнопку, открывается диалоговая форма со всеми параметрами и значениями в отчете (без источника данных). Пользователь может изменять значения параметров (адрес e.t.c, телефон, имя), за исключением источника данных (e.t.c товары, количество, стоимость).
Я не могу этого сделать. я пытаюсь написать что-то простое:
rep.SetParameterValue(Param.Name, Param.value)
rep.Refresh()
RP_Viwer.Refresh()
но этот код не работает ... Как я могу сделать ???