Российская международная академия туризма
Опубликован: 09.09.2008 | Доступ: свободный | Студентов: 813 / 38 | Оценка: 4.33 / 4.33 | Длительность: 13:07:00
Темы: Базы данных, Программирование
Специальности: Администратор баз данных
Лекция 9:
Добавление-удаление записей
Шаг 3. Добавляем библиотеки в оба класса форм
using System; using System.Drawing; using System.Collections; using System.Windows.Forms; using System.Data; //добавляем библиотеку using System.IO;
Шаг 4. Объявляем общие переменные в public class Form1 : System.Windows.Forms.Form
// объявляем глобальную переменную для использования в форме 2 public static string ss; float i_sum=0; // стоимость товара в корзине int L_goods=10; // длина поля "Товар" int L_firma=10; // длина поля "Фирма" int L_unit=4; // Длина поля "Количество" string s_new; // строка обозначения товара
Шаг 5. Для public Form1() , загружаемой первой по умолчанию
Тестируем наличие файла базы данных - дописываем:
InitializeComponent();
// если файла с данными о ценах нет,
то создаем файл для записи значений
FileStream fin;
try {
fin=new FileStream("Товары.txt",FileMode.Open);
}
catch(IOException exc) {
MessageBox.Show ("Невозможно открыть файл.","Ошибка");
return;}
// Считываем значения из файла
string s;
StreamReader fstr_in=new StreamReader(fin);
while((s=fstr_in.ReadLine())!=null) {
listBox1.Items.Add(s); // грузим базу в листбокс
}
fstr_in.Close(); // и закрываем поток
// вызываем функцию для заполняем листбокса поиска товара
appe_listbox3(); // вообще-то функции пока нетШаг 6. Создаем функцию алфавита appe_listbox3 из имеющихся названий товара
private void appe_listbox3() {
listBox3.Items.Clear(); // для вывода
результата используем listBox3
const string s_alfa="АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЭЮЯ";
string s,s_name,s_sym;
// вычисляем длину выбранной строки из алфавита
for (int it=0;it<s_alfa.Length; it++) {
s_sym=s_alfa.Substring(it,1);
// Тестируем наличие файла с данными о ценах
FileStream fin;
try {
fin=new FileStream("Товары.txt",FileMode.Open);
}
catch(IOException exc) {
MessageBox.Show ("Невозможно открыть файл.","Ошибка");
return;}
// бежим по файлу
StreamReader fstr_in=new StreamReader(fin);
while ((s=fstr_in.ReadLine())!=null ) {
s_name=s.Substring(0,1);
if (s_name==s_sym) {
listBox3.Items.Add(s_name);
s_sym=""; // обнуляем, чтобы избежать повторов
}
}
fstr_in.Close();
}Шаг 7. Добавляем запись в базу данных
Для кнопки "Добавить" в закладке "Редактор" создаем процедуру:
private void button1_Click
(object sender, System.EventArgs e) {
// Проверка значений полей
if (textBox2.Text=="") {
MessageBox.Show("Введите товар!","Ошибка");
return;}
if (textBox3.Text=="") {
MessageBox.Show("Введите фирму!","Ошибка");
return;}
if (textBox4.Text=="") {
MessageBox.Show("Введите количество!","Ошибка");
return;}
if (!char.IsDigit(textBox5.Text[0])) {
textBox5.Text = "0,00";
MessageBox.Show("Введите цену!","Ошибка");
return;}
// Тестируем наличие файла с данными
FileStream fin;
try {
fin=new FileStream("Товары.txt",FileMode.OpenOrCreate);
fin.Close(); }
catch(IOException exc) {
MessageBox.Show ("Невозможно открыть файл.","Ошибка");
return; }
//форматируем значения
string s_field1=textBox2.Text;
if (s_field1.Length<L_goods) {
for (int i=s_field1.Length; i<L_goods; i++)
s_field1=s_field1+" ";
}
else { //обрезаем строку
int L=s_field1.Length;
s_field1=s_field1.Remove(L_goods,L-L_goods);
}
string s_field2="|"+textBox3.Text;
// вставляем разделитель полей
if (s_field2.Length<L_firma) {
for (int i=s_field2.Length; i<L_firma; i++)
s_field2=s_field2+" ";
}
else { //обрезаем строку
int L=s_field2.Length;
s_field2=s_field2.Remove(L_firma,L-L_firma);
}
string s_field3="|"+textBox4.Text;
if (s_field3.Length<L_unit) {
for (int i=s_field3.Length; i<L_unit; i++)
s_field3=s_field3+" ";
}
else { //обрезаем строку
int L=s_field3.Length;
s_field3=s_field3.Remove(L_unit,L-L_unit);
}
string s_field4="|"+textBox5.Text;
// Записываем значения в файл
StreamWriter fin_out;
try {
fin_out=new StreamWriter("Товары.txt", true);
}
catch(IOException exc) {
MessageBox.Show ("Невозможно открыть файл.","Ошибка");
return;}
string s=s_field1+s_field2+s_field3+s_field4+"\r\n";
fin_out.Write(s);
fin_out.Close();
MessageBox.Show(s_field1+"\n"+s_field2+"\n"+s_field3+"\n"+
s_field4,"Запись добавлена");
// Обнуляем поля
textBox2.Text="";
textBox3.Text="";
textBox4.Text="";
textBox5.Text="0,00";
// заполняем листбокс3
appe_listbox3();
}Шаг 8. Теперь можно программировать процедуру листбокс на закладке "Редактор" для выборки товара из базы
private void listBox3_SelectedIndexChanged
(object sender, System.EventArgs e)
{//выборка групп товаров из файла
listBox1.Items.Clear();
s_new=listBox3.SelectedItem.ToString();
string s;
FileStream fin;
try {
fin=new FileStream("Товары.txt",FileMode.Open);
}
catch(IOException exc) {
MessageBox.Show ("Невозможно открыть файл.","Ошибка");
return;}
// бежим по файлу
StreamReader fstr_in=new StreamReader(fin);
while ((s=fstr_in.ReadLine())!=null ) {
if (s_new.Substring(0,1)==s.Substring(0,1)) {
listBox1.Items.Add(s); // если нашли, то добавляем в листбокс
}
}
fstr_in.Close();
//переключаемся на закладку "База данных" для просмотра выборки
this.tabControl1.SelectedIndex=1;
}