Опубликован: 09.09.2008 | Уровень: специалист | Доступ: платный | ВУЗ: Российская международная академия туризма
Лекция 11:

Добавление-удаление записей

< Лекция 10 || Лекция 11: 123 || Лекция 12 >

Шаг 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();
}
< Лекция 10 || Лекция 11: 123 || Лекция 12 >
jo jojo
jo jojo
Нидерланды
Ярославй Грива
Ярославй Грива
Россия, г. Санкт-Петербург