Российская международная академия туризма
Опубликован: 09.09.2008 | Доступ: свободный | Студентов: 813 / 38 | Оценка: 4.33 / 4.33 | Длительность: 13:07:00
Темы: Базы данных, Программирование
Специальности: Администратор баз данных
Лекция 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();
}