{"id":742,"date":"2008-01-04T19:56:57","date_gmt":"2008-01-05T02:56:57","guid":{"rendered":"http:\/\/members.crystalreportsbook.com\/crystal-reports-xi\/1727-c-code-listings\/"},"modified":"2008-01-04T19:56:57","modified_gmt":"2008-01-05T02:56:57","slug":"1727-c-code-listings","status":"publish","type":"post","link":"http:\/\/www.crystalreportsonlinetraining.com\/training\/1727-c-code-listings\/","title":{"rendered":"17.27 C# Code Listings"},"content":{"rendered":"<h1>C# Code Listings<\/h1>\n<p>The C# code listings are equivalent to the VB.NET code listings.<\/p>\n<p>         <code_Caption>Listing 17-2. Creating an XML schema file from a dataset object.<\/code_Caption><br \/>\n         <code>\/\/Write a populated dataset object to an XML schema file<\/code><br \/>\n         <code>\/\/The XmlFileName should have \".ds\" file extension<\/code><br \/>\n         <code>public void CreateXMLFile(string XmlFileName, DataSet XmlDataSet)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>XmlDataSet.WriteXmlSchema(XmlFileName);<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code_Caption>Listing 17-3. Populating a dataset with a MS Access table.<\/code_Caption><br \/>\n         <code>public void FillDataSet(ref DataSet MyDataSet)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>OleDbDataAdapter MyDataAdapter;<\/code><br \/>\n         <code>string MyConnectionString;<\/code><br \/>\n         <code>string SQL = \"SELECT * FROM Customer\";<\/code><br \/>\n         <code>MyDataSet = new DataSet();<\/code><br \/>\n         <code>MyConnectionString = \"Provider=Microsoft.Jet.OLEDB.4.0;\" +<\/code><br \/>\n         <code>\"Data Source=C\\\\Xtreme.mdb;User Id=Admin;\" +<\/code><br \/>\n         <code>\"Jet OLEDB:Database Password=;Jet OLEDB:System database=\" +<\/code><br \/>\n         <code>\"C:\\\\ProgramFiles\\\\Office2000\\\\Office\\\\System.mdw\";<\/code><br \/>\n         <code>MyDataAdapter = new OleDbDataAdapter(SQL, MyConnectionString);<\/code><br \/>\n         <code>MyDataAdapter.Fill(MyDataSet, \"Customer\");<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code_Caption>Listing 17-4. Populating a dataset with a SQL Server table.<\/code_Caption><br \/>\n         <code>public void FillDataSet(ref DataSet MyDataSet)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>string MyConnectionString;<\/code><br \/>\n         <code>System.Data.SqlClient.SqlDataAdapter MyDataAdapter;<\/code><br \/>\n         <code>MyDataSet = new DataSet();<\/code><br \/>\n         <code>string MySql = \"SELECT Customers.*, Orders.* \" +<\/code><br \/>\n         <code>\"FROM Customers INNER Join Orders \" +<\/code><br \/>\n         <code>\"ON Customers.CustomerId = Orders.CustomerId\";<\/code><br \/>\n         <code>MyConnectionString = \"Data Source=(local);UID=sa;pwd=pw;Database=Northwind\";<\/code><br \/>\n         <code>MyDataAdapter = new SqlDataAdapter(MySql, MyConnectionString);<\/code><br \/>\n         <code>MyDataAdapter.Fill(MyDataSet, \"Customers\");<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code_Caption>Listing 17-5. Populating a dataset with an XML file.<\/code_Caption><br \/>\n         <code>public void FillDataset(DataSet MyDataSet, string XmlFileName)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>MyDataSet.ReadXml(XmlFileName);<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code_Caption>Listing 17-6. Manually populating a dataset.<\/code_Caption><br \/>\n         <code>public void FillDataSet17_6(ref DataSet MyDataSet)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>MyDataSet = new DataSet();<\/code><br \/>\n         <code>string[,] Customers = new string[,]{{\"123\",\"Jones\"},{\"456\",\"Smith\"}};<\/code><br \/>\n         <code>\/\/Create a new Data Table<\/code><br \/>\n         <code>DataTable MyDataTable = new DataTable(\"TableName\");<\/code><br \/>\n         <code>DataColumn MyDataColumn;<\/code><br \/>\n         <code>DataRow MyDataRow;<\/code><br \/>\n         <code>\/\/Create first column<\/code><br \/>\n         <code>MyDataColumn = new DataColumn();<\/code><br \/>\n         <code>MyDataColumn.DataType = System.Type.GetType(\"System.String\");<\/code><br \/>\n         <code>MyDataColumn.ColumnName = \"CustomerId\";<\/code><br \/>\n         <code>MyDataTable.Columns.Add(MyDataColumn);<\/code><br \/>\n         <code>\/\/Create the second column<\/code><br \/>\n         <code>MyDataColumn = new DataColumn();<\/code><br \/>\n         <code>MyDataColumn.DataType = System.Type.GetType(\"System.String\");<\/code><br \/>\n         <code>MyDataColumn.ColumnName = \"LastName\";<\/code><br \/>\n         <code>MyDataTable.Columns.Add(MyDataColumn);<\/code><br \/>\n         <code>MyDataSet.Tables.Add(MyDataTable);<\/code><br \/>\n         <code>\/\/Copy the array into the datatable<\/code><br \/>\n         <code>int ixCustomers;<\/code><br \/>\n         <code>for (ixCustomers=0; ixCustomers<=1; ixCustomers++)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>MyDataRow = MyDataTable.NewRow();<\/code><br \/>\n         <code>MyDataRow[\"CustomerId\"] = Customers[ixCustomers, 0];<\/code><br \/>\n         <code>MyDataRow[\"LastName\"] = Customers[ixCustomers, 1];<\/code><br \/>\n         <code>MyDataTable.Rows.Add(MyDataRow);<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code_Caption>Listing 17-7. Getting the dataset object from a datagrid control.<\/code_Caption><br \/>\n         <code>public void FillDataset(DataSet MyDataSet)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>MyDataSet = (DataSet)DataGrid1.DataSource;<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code_Caption>Listing 17-8. Printing from a DataView object.<\/code_Caption><br \/>\n         <code>public void PrintDataView(DataSet MyDataSet)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>DataView MyDataView;<\/code><br \/>\n         <code>CrystalReport1 MyReport = new CrystalReport1();<\/code><br \/>\n         <code>MyDataView = new DataView(MyDataSet.Tables[\"TableName\"],<\/code><br \/>\n         <code>\"CompanyName > 'b'\",\"\", DataViewRowState.CurrentRows);<\/code><br \/>\n         <code>MyReport.SetDataSource(MyDataView);<\/code><br \/>\n         <code>crystalReportViewer1.ReportSource = MyReport;<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code_Caption>Listing 17-9. Convert the DataView object into a DataTable<\/code_Caption><br \/>\n         <code>public DataTable ConvertViewToTable(DataView MyDataView)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>int Col, Row;<\/code><br \/>\n         <code>Object[] NewRow;<\/code><br \/>\n         <code>DataTable NewTable = new DataTable(MyDataView.Table.TableName);<\/code><br \/>\n         <code>\/\/Copy the column objects into the table<\/code><br \/>\n         <code>for (Col=0; Col<myDataView.Table.Columns.Count; Col++)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>NewTable.Columns.Add(<\/code><br \/>\n         <code>MyDataView.Table.Columns[Col].ColumnName,<\/code><br \/>\n         <code>MyDataView.Table.Columns[Col].DataType);<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code>\/\/Create each new row and copy the column data into<\/code><br \/>\n         <code>\/\/a new row object<\/code><br \/>\n         <code>for (Row=0; Row < MyDataView.Count; Row++)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>NewRow = new Object[MyDataView.Table.Columns.Count];<\/code><br \/>\n         <code>for (Col=0; Col < MyDataView.Table.Columns.Count; Col++)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>NewRow[Col] = MyDataView[Row][Col];<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code>NewTable.Rows.Add(NewRow);<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code>return NewTable;<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code_Caption>Listing 17-10. Linking the dataset file to the report and previewing it.<\/code_Caption><br \/>\n         <code>private void mnuCh17_10_Click(object sender, System.EventArgs e)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>CrystalReport1 MyReport = new CrystalReport1();<\/code><br \/>\n         <code>DataSet MyDataSet = null;<\/code><br \/>\n         <code>\/\/Use the appropriate FillDataSet() method<\/code><br \/>\n         <code>\/\/from the previous sections<\/code><br \/>\n         <code>FillDataSet(ref MyDataSet);<\/code><br \/>\n         <code>\/\/Uncomment the following line if you need to create<\/code><br \/>\n         <code>\/\/a new dataset file<\/code><br \/>\n         <code>\/\/CreateXMLFile(\"C:\\\\FileName.ds\", MyDataSet);<\/code><br \/>\n         <code>MyReport.SetDataSource(MyDataSet);<\/code><br \/>\n         <code>crystalReportViewer1.ReportSource = MyReport;<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code_Caption>Listing 17-11. Logging in to multiple tables.<\/code_Caption><br \/>\n         <code>public void LoginToTables(string UserId, string Password)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>CrystalReport1 MyReport = new CrystalReport1();<\/code><br \/>\n         <code>CrystalDecisions.Shared.TableLogOnInfo MyLogonInfo;<\/code><br \/>\n         <code>\/\/Change the logon info<\/code><br \/>\n         <code>foreach (CrystalDecisions.CrystalReports.Engine.Table MyTable in MyReport.Database.Tables)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>MyLogonInfo = MyTable.LogOnInfo;<\/code><br \/>\n         <code>if (MyTable.Name == \"CorpStandards\")<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>MyLogonInfo.ConnectionInfo.UserID = G_UserId;<\/code><br \/>\n         <code>MyLogonInfo.ConnectionInfo.Password = G_Password;<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code>else<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>MyLogonInfo.ConnectionInfo.UserID = UserId;<\/code><br \/>\n         <code>MyLogonInfo.ConnectionInfo.Password = Password;<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code>MyTable.ApplyLogOnInfo(MyLogonInfo);<\/code><br \/>\n         <code>\/\/Test the user credentials<\/code><br \/>\n         <code>if (!MyTable.TestConnectivity())<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>MessageBox.Show(\"Invalid user credentials for table: \" + MyTable.Name);<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code>crystalReportViewer1.ReportSource = MyReport;<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code_Caption>Listing 17-12. Setting the Logon credentials with the viewer control.<\/code_Caption><br \/>\n         <code>public void PrintPreview(string UserId, string Password)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>CrystalReport1 MyReport = new CrystalReport1();<\/code><br \/>\n         <code>CrystalDecisions.Shared.TableLogOnInfo MyLogonInfo;<\/code><br \/>\n         <code>crystalReportViewer1.LogOnInfo = new CrystalDecisions.Shared.TableLogOnInfos();<\/code><br \/>\n         <code>\/\/Create the Customer table and set its properties<\/code><br \/>\n         <code>MyLogonInfo = new CrystalDecisions.Shared.TableLogOnInfo();<\/code><br \/>\n         <code>MyLogonInfo.TableName = \"Customer\";<\/code><br \/>\n         <code>MyLogonInfo.ConnectionInfo.UserID = UserId;<\/code><br \/>\n         <code>MyLogonInfo.ConnectionInfo.Password = Password;<\/code><br \/>\n         <code>crystalReportViewer1.LogOnInfo.Add(MyLogonInfo);<\/code><br \/>\n         <code>\/\/Create the Orders table and set its properties<\/code><br \/>\n         <code>MyLogonInfo = new CrystalDecisions.Shared.TableLogOnInfo();<\/code><br \/>\n         <code>MyLogonInfo.TableName = \"Orders\";<\/code><br \/>\n         <code>MyLogonInfo.ConnectionInfo.UserID = UserId;<\/code><br \/>\n         <code>MyLogonInfo.ConnectionInfo.Password = Password;<\/code><br \/>\n         <code>crystalReportViewer1.LogOnInfo.Add(MyLogonInfo);<\/code><br \/>\n         <code>\/\/Show the report<\/code><br \/>\n         <code>crystalReportViewer1.ReportSource = MyReport;<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code_Caption>Listing 17-13. Connecting to a stored procedure using parameters.<\/code_Caption><br \/>\n         <code>public void SpWithViewer(string UserId, string Password, string spParameter)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>\/\/Login to the server<\/code><br \/>\n         <code>CrystalReport1 MyReport = new CrystalReport1();<\/code><br \/>\n         <code>crystalReportViewer1.ReportSource = MyReport;<\/code><br \/>\n         <code>CrystalDecisions.Shared.TableLogOnInfo MyLogonInfo;<\/code><br \/>\n         <code>crystalReportViewer1.LogOnInfo = new CrystalDecisions.Shared.TableLogOnInfos();<\/code><br \/>\n         <code>\/\/Create the Customer table and set its properties<\/code><br \/>\n         <code>MyLogonInfo = new CrystalDecisions.Shared.TableLogOnInfo();<\/code><br \/>\n         <code>MyLogonInfo.TableName = \"spCustomers;1\";<\/code><br \/>\n         <code>MyLogonInfo.ConnectionInfo.UserID = UserId;<\/code><br \/>\n         <code>MyLogonInfo.ConnectionInfo.Password = Password;<\/code><br \/>\n         <code>crystalReportViewer1.LogOnInfo.Add(MyLogonInfo);<\/code><br \/>\n         <code>\/\/Create the parameter<\/code><br \/>\n         <code>CrystalDecisions.Shared.ParameterFields ParameterFields;<\/code><br \/>\n         <code>CrystalDecisions.Shared.IParameterField ParameterField;<\/code><br \/>\n         <code>CrystalDecisions.Shared.ParameterDiscreteValue spValue;<\/code><br \/>\n         <code>ParameterFields = crystalReportViewer1.ParameterFieldInfo;<\/code><br \/>\n         <code>ParameterField = ParameterFields[\"@CustPattern \"];<\/code><br \/>\n         <code>spValue = new CrystalDecisions.Shared.ParameterDiscreteValue();<\/code><br \/>\n         <code>spValue.Value = spParameter;<\/code><br \/>\n         <code>ParameterField.CurrentValues.Add(spValue);<\/code><br \/>\n         <code>crystalReportViewer1.ReportSource = MyReport;<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code_Caption>Listing 17-14. Changing the location of a data source.<\/code_Caption><br \/>\n         <code>public void LoginToTables(string UserId, string Password, string ServerName, string DatabaseName)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>CrystalReport1 MyReport = new CrystalReport1();<\/code><br \/>\n         <code>CrystalDecisions.Shared.TableLogOnInfo MyLogonInfo;<\/code><br \/>\n         <code>CrystalDecisions.Shared.ConnectionInfo MyConnectionInfo = new CrystalDecisions.Shared.ConnectionInfo();<\/code><br \/>\n         <code>if (ServerName != \"\")<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>MyConnectionInfo.ServerName = ServerName;<\/code><br \/>\n         <code>MyConnectionInfo.DatabaseName = DatabaseName;<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code>MyConnectionInfo.UserID = UserId;<\/code><br \/>\n         <code>MyConnectionInfo.Password = Password;<\/code><br \/>\n         <code>foreach (CrystalDecisions.CrystalReports.Engine.Table MyTable in MyReport.Database.Tables)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>MyLogonInfo = MyTable.LogOnInfo;<\/code><br \/>\n         <code>MyLogonInfo.ConnectionInfo = MyConnectionInfo;<\/code><br \/>\n         <code>MyTable.ApplyLogOnInfo(MyLogonInfo);<\/code><br \/>\n         <code>\/\/Note: The next line is only necessary for SQL Server<\/code><br \/>\n         <code>if (ServerName != \"\")<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>MyTable.Location = MyTable.Location.Substring(MyTable.Location.LastIndexOf(\".\")+1);<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code>crystalReportViewer1.ReportSource = MyReport;<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code_Caption>Listing 17-15. Set subreport credentials<\/code_Caption><br \/>\n         <code>CrystalReport1 MyReport = new CrystalReport1();<\/code><br \/>\n         <code>DataSet ds0=null, ds1=null, ds2=null;<\/code><br \/>\n         <code>FillDataSet(ds0);<\/code><br \/>\n         <code>FillDataSet(ds1);<\/code><br \/>\n         <code>FillDataSet(ds2);<\/code><br \/>\n         <code>MyReport.SetDataSource(ds0);<\/code><br \/>\n         <code>MyReport.OpenSubreport(\"subreport1\").SetDataSource(ds1);<\/code><br \/>\n         <code>MyReport.OpenSubreport(\"subreport2\").SetDataSource(ds2);<\/code><br \/>\n         <code>crystalReportViewer1.ReportSource = MyReport;<\/code><br \/>\n         <code_Caption>Listing 17-16. Printing dynamic images with a DataSet object.<\/code_Caption><br \/>\n         <code>DataSet MyDataSet = new DataSet();<\/code><br \/>\n         <code>DataTable MyDataTable;<\/code><br \/>\n         <code>DataRow MyDataRow;<\/code><br \/>\n         <code>DataColumn MyDataColumn;<\/code><br \/>\n         <code>MyDataTable = new DataTable(\"ImageTable\");<\/code><br \/>\n         <code>\/\/Create the first column<\/code><br \/>\n         <code>MyDataColumn = new DataColumn(\"PicNumber\", Type.GetType(\"System.Int32\"));<\/code><br \/>\n         <code>MyDataTable.Columns.Add(MyDataColumn);<\/code><br \/>\n         <code>\/\/Field that points to the image file<\/code><br \/>\n         <code>MyDataColumn = new DataColumn(\"ImagePath\",Type.GetType(\"System.String\"));<\/code><br \/>\n         <code>MyDataTable.Columns.Add(MyDataColumn);<\/code><br \/>\n         <code>\/\/Populate the tabel with dummy data<\/code><br \/>\n         <code>\/\/Make sure your C Drive has two files called Image1.jpg and Image2.jpg<\/code><br \/>\n         <code>MyDataRow = MyDataTable.NewRow();<\/code><br \/>\n         <code>MyDataRow[\"PicNumber\"] = 1;<\/code><br \/>\n         <code>MyDataRow[\"ImagePath\"] = \"C:\\\\Image1.jpg\";<\/code><br \/>\n         <code>MyDataTable.Rows.Add(MyDataRow);<\/code><br \/>\n         <code>MyDataRow = MyDataTable.NewRow();<\/code><br \/>\n         <code>MyDataRow[\"PicNumber\"] = 2;<\/code><br \/>\n         <code>MyDataRow[\"ImagePath\"] = \"C:\\\\Image2.jpg\";<\/code><br \/>\n         <code>MyDataTable.Rows.Add(MyDataRow);<\/code><br \/>\n         <code>MyDataSet.Tables.Add(MyDataTable);<\/code><br \/>\n         <code>\/\/Add the image column to the table<\/code><br \/>\n         <code>AddImageColumn(MyDataTable, \"Image\");<\/code><br \/>\n         <code>\/\/Only do this when you first design the report<\/code><br \/>\n         <code>MyDataSet.WriteXmlSchema(@\"c:\\ImageTable.xsd\");<\/code><br \/>\n         <code>\/\/Load the images into the datatable<\/code><br \/>\n         <code>LoadAllImages(MyDataTable,\"ImagePath\", \"Image\");<\/code><br \/>\n         <code>\/\/Open the report and preview it<\/code><br \/>\n         <code>CrystalReport1 MyReport = new CrystalReport1();<\/code><br \/>\n         <code>MyReport.SetDataSource(MyDataSet);<\/code><br \/>\n         <code>crystalReportViewer1.ReportSource = MyReport;<\/code><br \/>\n         <code_Caption>Listing 17-17. Create a table column for the image.<\/code_Caption><br \/>\n         <code>public void AddImageColumn(DataTable MyDataTable, string FieldName)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>\/\/Create the column to hold the binary image<\/code><br \/>\n         <code>DataColumn MyDataColumn = new DataColumn(FieldName, Type.GetType(\"System.Byte[]\"));<\/code><br \/>\n         <code>MyDataTable.Columns.Add(MyDataColumn);<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code_Caption>Listing 17-18. Process each row in the table.<\/code_Caption><br \/>\n         <code>public void LoadAllImages(DataTable MyDataTable, string FilePathField, string ImageField)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>\/\/Loop through the rows and load the images<\/code><br \/>\n         <code>foreach(DataRow MyDataRow in MyDataTable.Rows)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>LoadImage(MyDataRow, ImageField, MyDataRow[FilePathField].ToString());<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code>}<\/code><br \/>\n         <code_Caption>Listing 17-19. Load a single image into a DataRow.<\/code_Caption><br \/>\n         <code>public void LoadImage(DataRow MyDataRow, string ImageField, string FilePath)<\/code><br \/>\n         <code>{<\/code><br \/>\n         <code>System.IO.FileStream fs = new System.IO.FileStream(FilePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);<\/code><br \/>\n         <code>Byte[] Image = new Byte[fs.Length];<\/code><br \/>\n         <code>fs.Read(Image, 0, (int)fs.Length);<\/code><br \/>\n         <code>fs.Close();<\/code><br \/>\n         <code>MyDataRow[ImageField] = Image;<\/code><br \/>\n         <code>}<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C# Code Listings The C# code listings are equivalent to the VB.NET code listings. Listing 17-2. Creating an XML schema file from a dataset object. \/\/Write a populated dataset object to an XML schema file \/\/The XmlFileName should have &#8220;.ds&#8221; file extension public void CreateXMLFile(string XmlFileName, DataSet XmlDataSet) { XmlDataSet.WriteXmlSchema(XmlFileName); } Listing 17-3. Populating a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[37,2],"tags":[],"class_list":["post-742","post","type-post","status-publish","format-standard","hentry","category-chapter-17-dynamic-data-sources","category-crystal-reportsnet-2003","entry"],"_links":{"self":[{"href":"http:\/\/www.crystalreportsonlinetraining.com\/training\/wp-json\/wp\/v2\/posts\/742","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.crystalreportsonlinetraining.com\/training\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.crystalreportsonlinetraining.com\/training\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.crystalreportsonlinetraining.com\/training\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.crystalreportsonlinetraining.com\/training\/wp-json\/wp\/v2\/comments?post=742"}],"version-history":[{"count":0,"href":"http:\/\/www.crystalreportsonlinetraining.com\/training\/wp-json\/wp\/v2\/posts\/742\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.crystalreportsonlinetraining.com\/training\/wp-json\/wp\/v2\/media?parent=742"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.crystalreportsonlinetraining.com\/training\/wp-json\/wp\/v2\/categories?post=742"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.crystalreportsonlinetraining.com\/training\/wp-json\/wp\/v2\/tags?post=742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}