5.13.1 Создание источника данных
При создании отчета в Crystal Reports существуют два варианта доступа к данным MySQL при проектировании отчета.
Первый вариант — использование Connector/ODBC в качестве источника данных ADO при проектировании отчета. Вы сможете просматривать свою базу данных, выбирать таблицы и поля, используя перетаскивание для построения отчета. Недостатком этого подхода является то, что в приложении необходимо выполнить дополнительные действия для создания набора данных, соответствующего ожидаемому набором данных отчета.
Второй вариант — создание набора данных в VB.NET и сохранение его в формате XML. Этот XML-файл затем можно использовать для проектирования отчета. Это хорошо работает при отображении отчета в приложении, но менее универсально на этапе проектирования, так как необходимо выбрать все необходимые столбцы при создании набора данных. Если вы забудете столбец, вам необходимо будет повторно создать набор данных, прежде чем столбец можно будет добавить в отчет.
Следующий код можно использовать для создания набора данных из запроса и записи его на диск:
Пример кода на C#
DataSet myData = new DataSet();
MySql.Data.MySqlClient.MySqlConnection conn;
MySql.Data.MySqlClient.MySqlCommand cmd;
MySql.Data.MySqlClient.MySqlDataAdapter myAdapter;
conn = new MySql.Data.MySqlClient.MySqlConnection();
cmd = new MySql.Data.MySqlClient.MySqlCommand();
myAdapter = new MySql.Data.MySqlClient.MySqlDataAdapter();
conn.ConnectionString = "server=127.0.0.1;uid=root;" +
"pwd=12345;database=test";
try
{
cmd.CommandText = "SELECT city.name AS cityName, city.population AS CityPopulation, " +
"country.name, country.population, country.continent " +
"FROM country, city ORDER BY country.continent, country.name";
cmd.Connection = conn;
myAdapter.SelectCommand = cmd;
myAdapter.Fill(myData);
myData.WriteXml(@"C:\dataset.xml", XmlWriteMode.WriteSchema);
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
MessageBox.Show(ex.Message, "Report could not be created",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Пример кода на Visual Basic
Dim myData As New DataSet
Dim conn As New MySqlConnection
Dim cmd As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
conn.ConnectionString = "server=127.0.0.1;" _
& "uid=root;" _
& "pwd=12345;" _
& "database=world"
Try
conn.Open()
cmd.CommandText = "SELECT city.name AS cityName, city.population AS CityPopulation, " _
& "country.name, country.population, country.continent " _
& "FROM country, city ORDER BY country.continent, country.name"
cmd.Connection = conn
myAdapter.SelectCommand = cmd
myAdapter.Fill(myData)
myData.WriteXml("C:\dataset.xml", XmlWriteMode.WriteSchema)
Catch ex As Exception
MessageBox.Show(ex.Message, "Report could not be created", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Полученный XML-файл можно использовать в качестве источника данных ADO.NET XML при проектировании отчета.
Если вы решите проектировать отчеты с использованием Connector/ODBC, его можно загрузить с сайта dev.mysql.com.
© 2025 Oracle
Licensed under the GPLv2 License.