Работа с базой данных и DataGriedView

Есть 2 справочника, контрагенты и банковские реквизиты. В справочнике контрагенты находятся поля: контактное лицо, должность, фирма, адрес и телефон; а в справочнике банковские реквизиты поля: расчетный счет, наименование банка, БИК и адрес. Эти справочники должны находиться на 2 разных формах, а их данные помещены в DataGridView, где пользователь может вносить новые данные и изменять их. Также существует 3-ая форма, которая представляет акт данные которого содержатся в DataGridView и в которой название полей совпадает со справочниками, а также присутствует поле номер и дата договора, а значение поля, например, "контактное лицо" пользователь может выбрать из выпадающего списка, который ссылается на поле из таблицы справочника.

Помогите все это реализовать

Данный код для формы Контрагенты, но есть вопрос, данные с файла считываются, но заносятся в виде непонятных символов, данные написаны на русском языке, как можно исправить?

Вот запись в файле:

Контактное лицо, Должность,Фирма,Адрес,Телефон
Иванов И.И.,юрист,ОАО "Лесхоз",г.Москва пер.Солнечный 25, 345678
public partial class Contractor : Form
{
    public Contractor()
    {
        InitializeComponent();
    }

    private void Contractor_Load(object sender, EventArgs e)
    {
        OleDbConnection StrCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Serega\Desktop\SVCHVS\SVCHVS;Extended Properties=text");
        //Строка для выборки данных
        string Select1 = "SELECT * FROM [Contractor.txt]";
        //Создание объекта Command
        OleDbCommand comand1 = new OleDbCommand(Select1, StrCon);
        //Определяем объект Adapter для взаимодействия с источником данных
        OleDbDataAdapter adapter1 = new OleDbDataAdapter(comand1);
        //Определяем объект DataSet
        DataSet AllTables = new DataSet();
        //Открываем подключение
        StrCon.Open();
        //Заполняем DataSet таблицей из источника данных
        adapter1.Fill(AllTables);
        //Заполняем обект datagridview для отображения данных на форме
        dataGridView1.DataSource = AllTables.Tables[0];
        StrCon.Close();
    }
    private void Clear_Click(object sender, EventArgs e)
    {
        if (dataGridView1.SelectedRows.Count > 0)
        {
            dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index); //удаление
        }
        else
        {
            MessageBox.Show("Выберите строку для удаления.", "Ошибка.");
        }
    }
    private void Add_Click(object sender, EventArgs e)
    {
        if (dataGridView1.SelectedRows.Count > 0)
        {
            int n = dataGridView1.SelectedRows[0].Index;
            dataGridView1.Rows[n].Cells[0].Value = product.Text;
            dataGridView1.Rows[n].Cells[1].Value = department.Text;
            dataGridView1.Rows[n].Cells[2].Value = sold.Text;
            dataGridView1.Rows[n].Cells[3].Value = stock.Text;
            dataGridView1.Rows[n].Cells[4].Value = coast.Text;
        }
        else
        {
        }

    }
    private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
    {
        DialogResult dr = MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
        if (dr == DialogResult.Cancel)
        {
            e.Cancel = true;
        }
    }
    private void Save_Click(object sender, EventArgs e)
    {
        try
        {
            StreamWriter sw = new StreamWriter(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Serega\Desktop\SVCHVS\SVCHVS", false, Encoding.Default);
            //Добавление имен столбцов
            for (int j = 0; j < dataGridView1.ColumnCount; j++)
            {
                sw.Write(dataGridView1.Columns[j].HeaderText);
                if (j < dataGridView1.ColumnCount - 1)
                    sw.Write(",");
            }
            sw.WriteLine();
            for (int i = 0; i < dataGridView1.RowCount; i++)
            {
                for (int j = 0; j < dataGridView1.ColumnCount; j++)
                {
                    sw.Write(dataGridView1.Rows[i].Cells[j].Value);
                    if (j < dataGridView1.ColumnCount - 1)
                        sw.Write(",");
                }
                sw.WriteLine();
            }
            sw.Flush();
            sw.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

    private void edit_Click(object sender, EventArgs e)
    {
        if (dataGridView1.SelectedRows.Count > 0)
        {
            int n = dataGridView1.SelectedRows[0].Index;
            dataGridView1.Rows[n].Cells[0].Value = product.Text;
            dataGridView1.Rows[n].Cells[1].Value = department.Text;
            dataGridView1.Rows[n].Cells[2].Value = sold.Text;
            dataGridView1.Rows[n].Cells[3].Value = stock.Text;
            dataGridView1.Rows[n].Cells[4].Value = coast.Text;
        }
        else
        {
            MessageBox.Show("Выберите строку для редактирования.", "Ошибка.");
        }
    }

    private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
    {
        try
        {
            product.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
            department.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
            sold.Text = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
            stock.Text = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
            coast.Text = dataGridView1.SelectedRows[0].Cells[4].Value.ToString();
        }
        catch
        {

        }
    }
    private void label3_Click(object sender, EventArgs e)
    {

    }
}

Пример формы


Ответы (0 шт):