このサンプルコードを動かすには
MyReport.rdl
が必要です。
ここにあります。

----------------

Imports System
Imports System.IO
Imports System.Xml
Imports fyiReporting.RdlViewer 

Public Partial Class Form1

	Private MyReportFileName As String = "C:\MyReport.rdl"
	Private MyReportFileName2 As String = "C:\MyReport2.rdl"
	Private InvoiceXml As String = "C:/invoice.xml"
	
	Sub Button1Click(ByVal sender As Object, ByVal e As EventArgs)
    	
    		With Me.rdlViewer1
	    		.SourceFile = Nothing
			.Update
			.Refresh
    		End With

    		Call GenerateXML()
    		Call EditRDL()
    	
    		With Me.rdlViewer1
    			.SourceFile = MyReportFileName2
    			.Update
    			.Refresh
    		End With

    	End Sub
    
	Sub GenerateXML()
    	
    		Dim MyDataSet As New System.Data.DataSet("invoice")
		Dim MyDataTable As New System.Data.DataTable("row")
		
		Dim MyDataColumn As New System.Data.DataColumn
		With MyDataColumn
            		.DataType = System.Type.GetType("System.Int32")
            		.ColumnName = "id"
            		.AutoIncrement=True
        	End With
        	MyDataTable.Columns.Add(MyDataColumn)
        
        	MyDataColumn = New System.Data.DataColumn
		With MyDataColumn
            		.DataType = System.Type.GetType("System.Int32")
            		.ColumnName = "report_id"
        	End With
        	MyDataTable.Columns.Add(MyDataColumn)
        
		MyDataColumn = New System.Data.DataColumn
		With MyDataColumn
            		.DataType = System.Type.GetType("System.String")
            		.ColumnName = "code"
        	End With
        	MyDataTable.Columns.Add(MyDataColumn)
		
		MyDataColumn = New System.Data.DataColumn
		With MyDataColumn
            		.DataType = System.Type.GetType("System.String")
            		.ColumnName = "name"
        	End With
        	MyDataTable.Columns.Add(MyDataColumn)

        	MyDataColumn = New System.Data.DataColumn
		With MyDataColumn
            		.DataType = System.Type.GetType("System.String")
            		.ColumnName = "color"
        	End With
        	MyDataTable.Columns.Add(MyDataColumn)
		
		MyDataColumn = New System.Data.DataColumn
		With MyDataColumn
            		.DataType = System.Type.GetType("System.Double")
            		.ColumnName = "quantity"
        	End With
        	MyDataTable.Columns.Add(MyDataColumn)
        
		MyDataColumn = New System.Data.DataColumn
		With MyDataColumn
            		.DataType = System.Type.GetType("System.Double")
            		.ColumnName = "unit_price"
        	End With
        	MyDataTable.Columns.Add(MyDataColumn)
        
		MyDataColumn = New System.Data.DataColumn
		With MyDataColumn
            		.DataType = System.Type.GetType("System.Double")
            		.ColumnName = "amount"
        	End With
        	MyDataTable.Columns.Add(MyDataColumn)
        
        	MyDataColumn.Dispose 
    	
    		MyDataSet.Tables.Add(MyDataTable)
    	
    		Dim i As Integer
    	
    		For i = 1 To 10
    		
			Dim MyDataRow As System.Data.DataRow 

			MyDataRow = MyDataTable.NewRow()
			MyDataRow.Item("report_id") = i
	        	MyDataRow.Item("code") = "001001" 
	        	MyDataRow.Item("name") = "バラ売り高級色鉛筆" 
	        	MyDataRow.Item("color") = Microsoft.VisualBasic.Format(i,"000")
	        	MyDataRow.Item("quantity") = i*10
	        	MyDataRow.Item("unit_price") = 1000
	        	MyDataRow.Item("amount") = (i*10)*1000

	        	MyDataTable.Rows.Add(MyDataRow)
	        
		Next
		
		MyDataTable.AcceptChanges()
    		MyDataSet.AcceptChanges()
    	
    		Dim fsWriteXml As New System.IO.FileStream(InvoiceXml, System.IO.FileMode.Create) 
        	Dim xmlWriter As New System.Xml.XmlTextWriter(fsWriteXml, System.Text.Encoding.UTF8)

        	MyDataSet.WriteXml(xmlWriter)
        
        	xmlWriter.Close()

        	fsWriteXml.Close()
        	fsWriteXml.Dispose 
        
        	MyDataTable.Dispose
		MyDataSet.Dispose
		
	End Sub
        
	Function ConvertToUrl(ByVal WinAddress As String) As String

	    WinAddress = Replace(WinAddress, "\", "/")
	    WinAddress = Replace(WinAddress, ":", "|")
	    WinAddress = Replace(WinAddress, " ", "%20")
	    WinAddress = "file:///" + WinAddress
	    ConvertToUrl = WinAddress
	    
	End Function

	Sub EditRDL()
    	
'    		***** RDL ファイルをXMLとして開く *****
		Dim MyReportFileAsXml As XmlDocument = New XmlDocument()
		MyReportFileAsXml.Load(MyReportFileName)
'		***** RDL ファイルをXMLとして開く *****
		
'		***** Namespace追加 *****
		Dim NsMng As XmlNamespaceManager = New XmlNamespaceManager(MyReportFileAsXml.NameTable)
		NsMng.AddNamespace("myns","http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition")
'		***** Namespace追加 *****
		
'		***** CommandTextを編集 *****
		Dim CommandTextNode As XmlNode = MyReportFileAsXml.SelectSingleNode("/myns:Report/myns:DataSets/myns:DataSet/myns:Query/myns:CommandText", NsMng)
		Dim MyXmlUrl As String = ConvertToURL("C:\invoice.xml")
		CommandTextNode.InnerText = "url=" & MyXmlUrl & "; RowsXPath=invoice/row;"
'		***** CommandTextを編集 *****
		
'		***** 既定のプリンタの用紙サイズを取得 *****
'		----- プリンタがインストールされていない場合、エラー処理必須 -----
		Dim MyPrintDialog As New System.Windows.Forms.PrintDialog
		Dim MyPrinterName As String = MyPrintDialog.PrinterSettings.PrinterName
		Dim MyPrintDocument As New Printing.PrintDocument 
		MyPrintDocument.PrinterSettings.PrinterName = MyPrinterName
		
		Dim MyPaperHeight As Double = MyPrintDocument.DefaultPageSettings.PaperSize.Height
		Dim MyPaperWidth As Double  = MyPrintDocument.DefaultPageSettings.PaperSize.Width
		MyPaperHeight = Math.Round(MyPaperHeight*2.54/100,1)
		MyPaperWidth  = Math.Round(MyPaperWidth*2.54/100,1)
'		***** 既定のプリンタの用紙サイズを取得 *****
		
'		***** レポートのサイズ設定 *****
		Dim PageHeightNode As XmlNode = _
		MyReportFileAsXml.SelectSingleNode("/myns:Report/myns:PageHeight", NsMng)
		PageHeightNode.InnerText = Microsoft.VisualBasic.Format(MyPaperHeight,"0.0") & "cm" 
		
		Dim PageWidthNode As XmlNode = _
		MyReportFileAsXml.SelectSingleNode("/myns:Report/myns:PageWidth", NsMng)
		PageWidthNode.InnerText= Microsoft.VisualBasic.Format(MyPaperWidth, "0.0") & "cm"		
	
		Dim ReportWidthNode As XmlNode = _
		MyReportFileAsXml.SelectSingleNode("/myns:Report/myns:Width", NsMng)
		ReportWidthNode.InnerText=Microsoft.VisualBasic.Format((MyPaperWidth-2), "0.0") & "cm"
		
		Dim TopMarginNode As XmlNode = _
		MyReportFileAsXml.SelectSingleNode("/myns:Report/myns:TopMargin", NsMng)
		TopMarginNode.InnerText="1.0cm"
		
		Dim LeftMarginNode As XmlNode = _
		MyReportFileAsXml.SelectSingleNode("/myns:Report/myns:LeftMargin", NsMng)
		LeftMarginNode.InnerText="1.0cm"
		
		Dim RightMarginNode As XmlNode = _
		MyReportFileAsXml.SelectSingleNode("/myns:Report/myns:RightMargin", NsMng)
		RightMarginNode.InnerText="1.0cm"
		
		Dim BottomMarginNode As XmlNode = _
		MyReportFileAsXml.SelectSingleNode("/myns:Report/myns:BottomMargin", NsMng)
		BottomMarginNode.InnerText="1.0cm"
'		***** レポートのサイズ設定 *****	

'		***** テキストボックスのテキストの置き換え *****
		Dim TextBoxTitleNode As XmlNode=MyReportFileAsXml.SelectSingleNode("/myns:Report/myns:PageHeader/myns:ReportItems/myns:Textbox[@Name='TextboxTitle']", NsMng)
		Dim TextBoxTitleValueNode As XmlNode=TextBoxTitleNode.SelectSingleNode("myns:Value", NsMng)
		TextBoxTitleValueNode.InnerText="商品明細"

		Dim TextBoxCustomerNode As XmlNode=MyReportFileAsXml.SelectSingleNode("/myns:Report/myns:PageHeader/myns:ReportItems/myns:Textbox[@Name='TextboxCustomer']", NsMng)
		Dim TextBoxCustomerValueNode As XmlNode=TextBoxCustomerNode.SelectSingleNode("myns:Value", NsMng)
		TextBoxCustomerValueNode.InnerText="株式会社ABCDEFG"		

		Dim TextBoxTelNode As XmlNode=MyReportFileAsXml.SelectSingleNode("/myns:Report/myns:PageHeader/myns:ReportItems/myns:Textbox[@Name='TextboxTel']", NsMng)
		Dim TextBoxTelValueNode As XmlNode=TextBoxTelNode.SelectSingleNode("myns:Value", NsMng)
		TextBoxTelValueNode.InnerText="00-0000-0000"		
		
		Dim TextBoxTotalValueNode As XmlNode= _
		MyReportFileAsXml.SelectSingleNode("/myns:Report/myns:Body/myns:ReportItems/myns:Table[@Name='Table1']/myns:Footer/myns:TableRows/myns:TableRow/myns:TableCells/myns:TableCell/myns:ReportItems/myns:Textbox[@Name='TextboxTotal']/myns:Value", NsMng)
		TextBoxTotalValueNode.InnerText="合計"
'		***** テキストボックスのテキストの置き換え *****

'		***** テキストボックスの式挿入 *****
		Dim TextBoxTotalQtyValueNode As XmlNode= _
		MyReportFileAsXml.SelectSingleNode("/myns:Report/myns:Body/myns:ReportItems/myns:Table[@Name='Table1']/myns:Footer/myns:TableRows/myns:TableRow/myns:TableCells/myns:TableCell/myns:ReportItems/myns:Textbox[@Name='TextboxQtyTotal']/myns:Value", NsMng)
		TextBoxTotalQtyValueNode.InnerText="=sum(Convert.ToDouble(Fields!quantity.Value))"
'		***** テキストボックスの式挿入 *****

		MyReportFileAsXml.Save(MyReportFileName2)

		MyReportFileAsXml=Nothing
		MyPrintDocument.Dispose 

    End Sub
    
End Class