Задача темы: изучить методику и получить навыки в разработке методов выборки данных из таблиц
Разработка: Приложение "Запросы" для выборки данных из таблиц движения средств на банковских пластиковых карточках
Состав выполняемых функций:
Наращивание функциональности не предусматривается.
Защита данных – запрет доступа пользователя к данным.
В качестве входных данных используются файлы с данными о движении
средств на банковских карточках. Выходные данные программы –
графическое отображение результатов в виде таблиц для
SmartDevice
Шаг 1. Разработка графического интерфейса

(рис 12.2) (рис 12.1) Предусматривается одна форма с TabControl из двух закладок
"Доходы и расходы" с единственным элементом и
"Структура расходов" с и двумя кнопками запуска
запросов "По целям" и "По фирмам".
Из невидимых элементов – главное меню с опциями
"Открыть", "Выход"; openFileDialog со свойством Filter = Файлы XML (*.xml)|*.xml – примерный дизайн на рис. 12.1 и
12.2.
Шаг 2. Добавляем библиотеки
using System; using System.Drawing; using System.Collections; using System.Windows.Forms; using System.Data; //добавляем using System.IO; using System.Xml;
Шаг 3. Добавляем переменные в public class Form1 : System.Windows.Forms.Form
string file_name="dataSet.xml"; // глобальный датасет DataSet dataSet; DataSet dataSetCell; //глобальный дататейбл DataTable dataTable; DataTable dataCell; DataTable dataFirma; DataRow newRow;
Шаг 4. В public Form1() вызываем функцию чтения данных file_read() ;
{
InitializeComponent();
file_read();
}
Шаг 5. Создаем функцию чтения данных из XML-файла
private void file_read() {
FileStream fin;
try {
fin=new FileStream(file_name,FileMode.Open);
fin.Close();
}
catch(IOException exc) {
MessageBox.Show ("Невозможно открыть файл \n"+file_name,"Ошибка");
return;}
// Считываем значения из файла
XmlTextReader xml_in=new XmlTextReader(file_name);
dataSet=new DataSet();
dataTable=dataSet.Tables.Add("CardVISA");
dataSetCell=new DataSet();
dataCell=dataSetCell.Tables.Add("CardCell");
dataFirma=dataSet.Tables.Add("CardFirma");
dataTable.Columns.Add("Сумма",System.Type.GetType("System.String"));
dataTable.Columns.Add("Цель",System.Type.GetType("System.String"));
dataTable.Columns.Add("Фирма",System.Type.GetType("System.String"));
dataTable.Columns.Add("Дата",System.Type.GetType("System.String"));
dataTable.Columns.Add("ID",System.Type.GetType("System.Int64"));
dataTable.Columns["Сумма"].ReadOnly=true;
dataTable.Columns["Цель"].ReadOnly=true;
dataTable.Columns["Фирма"].ReadOnly=true;
dataTable.Columns["Дата"].ReadOnly=true;
dataTable.Columns["ID"].ReadOnly=true;
dataSet.ReadXml(@xml_in);
xml_in.Close();
DataView sortedView=new DataView(dataTable);
sortedView.Sort="ID DESC";
dataGrid1.DataSource=sortedView;
// добавляем столбцы в dataCell
dataCell.Columns.Add("Процент",System.Type.GetType("System.String"));
dataCell.Columns.Add("Цель",System.Type.GetType("System.String"));
dataCell.Columns.Add("Сумма",System.Type.GetType("System.String"));
// добавляем столбцы в dataFirma
dataFirma.Columns.Add("Сумма",System.Type.GetType("System.String"));
dataFirma.Columns.Add("Фирма",System.Type.GetType("System.String"));
dataFirma.Columns.Add("Процент",System.Type.GetType("System.String"));
}
Шаг 6. Создаем диалог открытия файла
Для опции главного меню "Открыть" пишем:
private void menuItem2_Click(object sender, System.EventArgs e) {
if (openFileDialog1.ShowDialog()==DialogResult.OK) {
file_name=openFileDialog1.FileName;
file_read();
}
}
Шаг 7. Создаем запрос-выборку данных "По фирмам"
Для кнопки "По фирмам" пишем:
// обновляем запрос по фирмам
private void button2_Click_1(object sender, System.EventArgs e) {
// считывание строк из dataTable и добавление в dataCell
string my_cell;
foreach (DataRow row in dataTable.Rows) {
newRow=dataFirma.NewRow();
my_cell=(row["Фирма"].ToString());
newRow["Фирма"]=my_cell;
// ищем строку - создаем массив строк
DataRow[] rowCell=dataFirma.Select("Фирма='"+my_cell+"'");
//Если длина (не size, а Length!) массива 0
if (rowCell.Length==0) {
this.dataFirma.Rows.Add(newRow);
}
}
// А теперь считаем суммы
float my_summa=0;
foreach (DataRow row in dataFirma.Rows) {
my_cell=(row["Фирма"].ToString());
DataRow[] rowCell=dataTable.Select("Фирма='"+my_cell+"'");
foreach (DataRow rowTable in rowCell) {
my_summa=my_summa+float.Parse(rowTable["Сумма"].ToString());
}
if (my_summa>=0) {
row["Сумма"]=my_summa.ToString();
}
else {row["Сумма"]="0";
}
my_summa=0;
}
// А теперь считаем итого
foreach (DataRow row in dataFirma.Rows) {
my_summa=my_summa+float.Parse(row["Сумма"].ToString());
}
float my_total=my_summa;
// заполняем структуру
double my_procent;
string my_format;
foreach (DataRow row in dataFirma.Rows) {
my_procent=double.Parse(row["Сумма"].ToString())*100/my_total;
// добавляем 0, если меньше 10
if (my_procent>=10) {
my_format=my_procent.ToString();
}
else {my_format="0"+my_procent.ToString();
}
// обрезаем строку до 5 символов
if (my_format.Length>=5) {
row["Процент"]=(my_format.Substring(0,5));
}
else {row["Процент"]=my_format;
}
}
// А теперь считаем 100 %
my_summa=0;
foreach (DataRow row in dataFirma.Rows) {
my_summa=my_summa+float.Parse(row["процент"].ToString());
}
// сортируем по цели
DataView sortedCell=new DataView(dataFirma);
sortedCell.Sort="Процент DESC";
// фильтруем пустые строки
sortedCell.RowFilter="Сумма<>'0'";
dataGrid2.DataSource=sortedCell;
}
Шаг 8. Создаем запрос-выборку "По целям"
Для кнопки "По целям пишем":
private void button1_Click(object sender, System.EventArgs e) {
// считывание строк из dataTable и добавление в dataCell
string my_cell;
foreach (DataRow row in dataTable.Rows) {
newRow=dataCell.NewRow();
my_cell=(row["Цель"].ToString());
newRow["Цель"]=my_cell;
// ищем строку - создаем массив строк
DataRow[] rowCell=dataCell.Select("Цель='"+my_cell+"'");
//Если длина (не size, а Length!) массива 0
if (rowCell.Length==0) {
this.dataCell.Rows.Add(newRow);
}
}
// А теперь считаем суммы
float my_summa=0;
foreach (DataRow row in dataCell.Rows) {
my_cell=(row["Цель"].ToString());
DataRow[] rowCell=dataTable.Select("Цель='"+my_cell+"'");
foreach (DataRow rowTable in rowCell) {
my_summa=my_summa+float.Parse(rowTable["Сумма"].ToString());
}
if (my_summa>=0) {
row["Сумма"]=my_summa.ToString();
}
else {row["Сумма"]="0";
}
my_summa=0;
}
// А теперь считаем итого
foreach (DataRow row in dataCell.Rows) {
my_summa=my_summa+float.Parse(row["Сумма"].ToString());
}
float my_total=my_summa;
// заполняем структуру
double my_procent;
string my_format;
foreach (DataRow row in dataCell.Rows) {
my_procent=double.Parse(row["Сумма"].ToString())*100/my_total;
// добавляем 0, если меньше 10
if (my_procent>=10) {
my_format=my_procent.ToString();
}
else {my_format="0"+my_procent.ToString();
}
// обрезаем строку до 5 символов
if (my_format.Length>=5) {
row["Процент"]=(my_format.Substring(0,5));
}
else {row["Процент"]=my_format;
}
}
// А теперь считаем 100 %
my_summa=0;
foreach (DataRow row in dataCell.Rows) {
my_summa=my_summa+float.Parse(row["процент"].ToString());
}
// сортируем по цели
DataView sortedCell=new DataView(dataCell);
sortedCell.Sort="Процент DESC";
// фильтруем пустые строки
sortedCell.RowFilter="Сумма<>'0'";
dataGrid2.DataSource=sortedCell;
}
Шаг 9. Создаем процедуру "О программе"
Для опции главного меню "О программе" пишем:
private void menuItem5_Click(object sender, System.EventArgs e) {
MessageBox.Show("Программа запросов с группировкой данных\n"+
"по целям платежей и фирмам-поставщикам товаров и услуг\n"+
"(C)Родигин Л.А., март 2006,\n"+
"Платформа C#.NET MS VisualStudio 2003","О программе");
}
Шаг 10. Выход из приложения
Для опции главного меню "Выход" пишем:
private void menuItem4_Click(object sender, System.EventArgs e) {
Application.Exit();
}
Задача темы: изучить методику и получить навыки в разработке методов выборки данных из таблиц
Разработка: Приложение "Запросы" для выборки данных из таблиц движения средств на банковских пластиковых карточках
Состав выполняемых функций:
Наращивание функциональности не предусматривается.
Защита данных – запрет доступа пользователя к данным.
В качестве входных данных используются файлы с данными о движении
средств на банковских карточках. Выходные данные программы –
графическое отображение результатов в виде таблиц для
SmartDevice
Шаг 1. Разработка графического интерфейса

(рис 12.2) (рис 12.1) Предусматривается одна форма с TabControl из двух закладок
"Доходы и расходы" с единственным элементом и
"Структура расходов" с и двумя кнопками запуска
запросов "По целям" и "По фирмам".
Из невидимых элементов – главное меню с опциями
"Открыть", "Выход"; openFileDialog со свойством Filter = Файлы XML (*.xml)|*.xml – примерный дизайн на рис. 12.1 и
12.2.
Шаг 2. Добавляем библиотеки
using System; using System.Drawing; using System.Collections; using System.Windows.Forms; using System.Data; //добавляем using System.IO; using System.Xml;
Шаг 3. Добавляем переменные в public class Form1 : System.Windows.Forms.Form
string file_name="dataSet.xml"; // глобальный датасет DataSet dataSet; DataSet dataSetCell; //глобальный дататейбл DataTable dataTable; DataTable dataCell; DataTable dataFirma; DataRow newRow;
Шаг 4. В public Form1() вызываем функцию чтения данных file_read() ;
{
InitializeComponent();
file_read();
}
Шаг 5. Создаем функцию чтения данных из XML-файла
private void file_read() {
FileStream fin;
try {
fin=new FileStream(file_name,FileMode.Open);
fin.Close();
}
catch(IOException exc) {
MessageBox.Show ("Невозможно открыть файл \n"+file_name,"Ошибка");
return;}
// Считываем значения из файла
XmlTextReader xml_in=new XmlTextReader(file_name);
dataSet=new DataSet();
dataTable=dataSet.Tables.Add("CardVISA");
dataSetCell=new DataSet();
dataCell=dataSetCell.Tables.Add("CardCell");
dataFirma=dataSet.Tables.Add("CardFirma");
dataTable.Columns.Add("Сумма",System.Type.GetType("System.String"));
dataTable.Columns.Add("Цель",System.Type.GetType("System.String"));
dataTable.Columns.Add("Фирма",System.Type.GetType("System.String"));
dataTable.Columns.Add("Дата",System.Type.GetType("System.String"));
dataTable.Columns.Add("ID",System.Type.GetType("System.Int64"));
dataTable.Columns["Сумма"].ReadOnly=true;
dataTable.Columns["Цель"].ReadOnly=true;
dataTable.Columns["Фирма"].ReadOnly=true;
dataTable.Columns["Дата"].ReadOnly=true;
dataTable.Columns["ID"].ReadOnly=true;
dataSet.ReadXml(@xml_in);
xml_in.Close();
DataView sortedView=new DataView(dataTable);
sortedView.Sort="ID DESC";
dataGrid1.DataSource=sortedView;
// добавляем столбцы в dataCell
dataCell.Columns.Add("Процент",System.Type.GetType("System.String"));
dataCell.Columns.Add("Цель",System.Type.GetType("System.String"));
dataCell.Columns.Add("Сумма",System.Type.GetType("System.String"));
// добавляем столбцы в dataFirma
dataFirma.Columns.Add("Сумма",System.Type.GetType("System.String"));
dataFirma.Columns.Add("Фирма",System.Type.GetType("System.String"));
dataFirma.Columns.Add("Процент",System.Type.GetType("System.String"));
}
Шаг 6. Создаем диалог открытия файла
Для опции главного меню "Открыть" пишем:
private void menuItem2_Click(object sender, System.EventArgs e) {
if (openFileDialog1.ShowDialog()==DialogResult.OK) {
file_name=openFileDialog1.FileName;
file_read();
}
}
Шаг 7. Создаем запрос-выборку данных "По фирмам"
Для кнопки "По фирмам" пишем:
// обновляем запрос по фирмам
private void button2_Click_1(object sender, System.EventArgs e) {
// считывание строк из dataTable и добавление в dataCell
string my_cell;
foreach (DataRow row in dataTable.Rows) {
newRow=dataFirma.NewRow();
my_cell=(row["Фирма"].ToString());
newRow["Фирма"]=my_cell;
// ищем строку - создаем массив строк
DataRow[] rowCell=dataFirma.Select("Фирма='"+my_cell+"'");
//Если длина (не size, а Length!) массива 0
if (rowCell.Length==0) {
this.dataFirma.Rows.Add(newRow);
}
}
// А теперь считаем суммы
float my_summa=0;
foreach (DataRow row in dataFirma.Rows) {
my_cell=(row["Фирма"].ToString());
DataRow[] rowCell=dataTable.Select("Фирма='"+my_cell+"'");
foreach (DataRow rowTable in rowCell) {
my_summa=my_summa+float.Parse(rowTable["Сумма"].ToString());
}
if (my_summa>=0) {
row["Сумма"]=my_summa.ToString();
}
else {row["Сумма"]="0";
}
my_summa=0;
}
// А теперь считаем итого
foreach (DataRow row in dataFirma.Rows) {
my_summa=my_summa+float.Parse(row["Сумма"].ToString());
}
float my_total=my_summa;
// заполняем структуру
double my_procent;
string my_format;
foreach (DataRow row in dataFirma.Rows) {
my_procent=double.Parse(row["Сумма"].ToString())*100/my_total;
// добавляем 0, если меньше 10
if (my_procent>=10) {
my_format=my_procent.ToString();
}
else {my_format="0"+my_procent.ToString();
}
// обрезаем строку до 5 символов
if (my_format.Length>=5) {
row["Процент"]=(my_format.Substring(0,5));
}
else {row["Процент"]=my_format;
}
}
// А теперь считаем 100 %
my_summa=0;
foreach (DataRow row in dataFirma.Rows) {
my_summa=my_summa+float.Parse(row["процент"].ToString());
}
// сортируем по цели
DataView sortedCell=new DataView(dataFirma);
sortedCell.Sort="Процент DESC";
// фильтруем пустые строки
sortedCell.RowFilter="Сумма<>'0'";
dataGrid2.DataSource=sortedCell;
}
Шаг 8. Создаем запрос-выборку "По целям"
Для кнопки "По целям пишем":
private void button1_Click(object sender, System.EventArgs e) {
// считывание строк из dataTable и добавление в dataCell
string my_cell;
foreach (DataRow row in dataTable.Rows) {
newRow=dataCell.NewRow();
my_cell=(row["Цель"].ToString());
newRow["Цель"]=my_cell;
// ищем строку - создаем массив строк
DataRow[] rowCell=dataCell.Select("Цель='"+my_cell+"'");
//Если длина (не size, а Length!) массива 0
if (rowCell.Length==0) {
this.dataCell.Rows.Add(newRow);
}
}
// А теперь считаем суммы
float my_summa=0;
foreach (DataRow row in dataCell.Rows) {
my_cell=(row["Цель"].ToString());
DataRow[] rowCell=dataTable.Select("Цель='"+my_cell+"'");
foreach (DataRow rowTable in rowCell) {
my_summa=my_summa+float.Parse(rowTable["Сумма"].ToString());
}
if (my_summa>=0) {
row["Сумма"]=my_summa.ToString();
}
else {row["Сумма"]="0";
}
my_summa=0;
}
// А теперь считаем итого
foreach (DataRow row in dataCell.Rows) {
my_summa=my_summa+float.Parse(row["Сумма"].ToString());
}
float my_total=my_summa;
// заполняем структуру
double my_procent;
string my_format;
foreach (DataRow row in dataCell.Rows) {
my_procent=double.Parse(row["Сумма"].ToString())*100/my_total;
// добавляем 0, если меньше 10
if (my_procent>=10) {
my_format=my_procent.ToString();
}
else {my_format="0"+my_procent.ToString();
}
// обрезаем строку до 5 символов
if (my_format.Length>=5) {
row["Процент"]=(my_format.Substring(0,5));
}
else {row["Процент"]=my_format;
}
}
// А теперь считаем 100 %
my_summa=0;
foreach (DataRow row in dataCell.Rows) {
my_summa=my_summa+float.Parse(row["процент"].ToString());
}
// сортируем по цели
DataView sortedCell=new DataView(dataCell);
sortedCell.Sort="Процент DESC";
// фильтруем пустые строки
sortedCell.RowFilter="Сумма<>'0'";
dataGrid2.DataSource=sortedCell;
}
Шаг 9. Создаем процедуру "О программе"
Для опции главного меню "О программе" пишем:
private void menuItem5_Click(object sender, System.EventArgs e) {
MessageBox.Show("Программа запросов с группировкой данных\n"+
"по целям платежей и фирмам-поставщикам товаров и услуг\n"+
"(C)Родигин Л.А., март 2006,\n"+
"Платформа C#.NET MS VisualStudio 2003","О программе");
}
Шаг 10. Выход из приложения
Для опции главного меню "Выход" пишем:
private void menuItem4_Click(object sender, System.EventArgs e) {
Application.Exit();
}
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.