Нидерланды |
Опубликован: 09.09.2008 | Уровень: специалист | Доступ: платный | ВУЗ: Российская международная академия туризма
Лекция 11:
Добавление-удаление записей
Шаг 7. Создаем процедуру открытия файла
Если файл DataSet.xml отсутствует или ведет расчеты по другой карточке для опции главного меню "Открыть" пишем:
// читаем файл private void menuItem2_Click(object sender, System.EventArgs e) { if (openFileDialog1.ShowDialog()==DialogResult.OK) { file_name=openFileDialog1.FileName; file_read(); } }
Шаг 8. Создаем процедуру сохранения файла
Для опции главного меню "Сохранить как" пишем:
private void menuItem3_Click(object sender, System.EventArgs e) { saveFileDialog1.FileName=file_name; if (saveFileDialog1.ShowDialog()==DialogResult.OK) { file_name=saveFileDialog1.FileName; FileStream fin_out; try { fin_out=new FileStream(file_name,FileMode.OpenOrCreate); fin_out.Close(); } catch(IOException exc) { MessageBox.Show ("Невозможно открыть файл.","Ошибка"); return;} StreamWriter xml_out; try { xml_out=new StreamWriter(file_name); } catch(IOException exc) { MessageBox.Show ("Невозможно открыть файл.","Ошибка"); return;} // форматируем xml XmlTextWriter xmlWriter=new XmlTextWriter(xml_out); xmlWriter.Formatting=Formatting.Indented; xmlWriter.Indentation=3; // принимаем изменения в dataSet !!! this.dataTable.AcceptChanges(); // выводим в xml dataSet.WriteXml(xmlWriter,XmlWriteMode.IgnoreSchema); xmlWriter.Close(); MessageBox.Show("Файл записан в формате XML","Сохранение"); } }
Шаг 9. Выходим из программы
Для опции главного меню "Выход" пишем:
private void menuItem4_Click(object sender, System.EventArgs e) { Application.Exit(); // что не очень хорошо, если изменения еще не записаны }
Шаг 10. Создаем функцию считывания данных из полей закладки "Редактор"
private void appe_row() { // заполняем текстбох даты my_day=this.comboBox1.Text; my_mon=this.comboBox2.Text; my_yea=this.comboBox3.Text; this.textBox4.Text=my_day+"-"+my_mon+"-"+my_yea; // вычисляем длину строки int my_len=textBox1.Text.Length; if (my_len>=2) { // проверяем минус, если вводится отрицательное число if (textBox1.Text.Substring(0,1)=="-") { // проверяем вторую цифру if (!char.IsDigit(textBox1.Text[1])) { MessageBox.Show("Введите отрицательную сумму!","Ошибка"); return;} } else // проверяем первую if (!char.IsDigit(textBox1.Text[0])) { MessageBox.Show("Введите сумму!","Ошибка"); return;} // если длина больше 2-х else if (!char.IsDigit(textBox1.Text[0])) { MessageBox.Show("Введите сумму!","Ошибка"); return;} } }
Шаг 11. Создаем процедуру добавления записи в базу
Для кнопки "Добавить" закладки "Редактор" пишем:
private void button1_Click(object sender, System.EventArgs e) { appe_row(); // считываем значение полей закладки "Редактор" // вычисляем последнее значения foreach (DataRow row2 in dataTable.Rows) { string my_IDD=(row2["ID"].ToString()); my_Int64=Int64.Parse(my_IDD); if (my_maxID<=my_Int64) { my_maxID=my_Int64+1; } } this.textBox5.Text=my_maxID.ToString(); my_maxID=0; // обнуляем максимальный номер и вводим данные newRow=dataTable.NewRow(); newRow["Сумма"]=this.textBox1.Text; newRow["Цель"]=this.textBox2.Text; newRow["Фирма"]=this.textBox3.Text; newRow["Дата"]=this.textBox4.Text; newRow["ID"]=this.textBox5.Text; // добавляем запись dataTable.Rows.Add(newRow); this.tabControl1.SelectedIndex=0; // переключаемя за закладку "База данных" balance(); // считаем остаток на карточке }
Шаг 12. Создаем процедуру удаления записи
Для кнопки "Удалить" закладка "Редактор" пишем:
private void button2_Click(object sender, System.EventArgs e) { if (this.textBox5.Text = = "0") {// если идентификационный номер строки 0 MessageBox.Show("Строка уже удалена","Ошибка"); return;} string remove_ID=textBox5.Text; foreach (DataRow row in dataTable.Rows) { my_ID=(row["ID"].ToString()); if (my_ID = = remove_ID) { remove_row=row; } } dataTable.Rows.Remove(remove_row); // обнуляем номер строки, чтобы избежать исключения о ненайденной строке this.textBox5.Text="0"; this.tabControl1.SelectedIndex=0; balance(); // пересчитываем остаток }
Шаг 13. Создаем процедуру замены записи при редактировании данных
Для кнопки "Заменить" закладки "Редактор" пишем:
private void button3_Click(object sender, System.EventArgs e) { // сначала удаляем строку if (this.textBox5.Text=="0") { MessageBox.Show("Строка уже удалена","Ошибка"); return;} string remove_ID=textBox5.Text; foreach (DataRow row in dataTable.Rows) { my_ID=(row["ID"].ToString()); if (my_ID==remove_ID) { remove_row=row; } } dataTable.Rows.Remove(remove_row); // считываем значения appe_row(); // вводим данные newRow=dataTable.NewRow(); newRow["Сумма"]=this.textBox1.Text; newRow["Цель"]=this.textBox2.Text; newRow["Фирма"]=this.textBox3.Text; newRow["Дата"]=this.textBox4.Text; // переписываем номер newRow["ID"]=remove_ID; // добавляем запись dataTable.Rows.Add(newRow); // обнуляем номер строки, чтобы избежать исключения о ненайденной строке this.textBox5.Text="0"; this.tabControl1.SelectedIndex=0; balance(); }
Шаг 14. Создаем функцию фильтра целевых расходов
private void cell_sum() { float my_balance=0; foreach (DataRow row in dataTable.Rows) { my_summa=(row["Сумма"].ToString()); my_cell=(row[my_chan].ToString()); if (my_filt==my_cell) { my_balance=my_balance+float.Parse(my_summa); } } textBox6.Text=my_balance.ToString(); }