C# Проблема с поиском

Тема в разделе ".NET", создана пользователем WInk, 1 июл 2010.

Статус темы:
Закрыта.
  1. WInk

    WInk Гость

    Программа написана на С#. Тип - база данных. При попытке ввода запроса в окно поиска выскакивает следующее сообщение:
    Вот код тела (Основное_окно.cs):

    Код (C++):
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Xml.Schema;
    using System.Xml;


    namespace Учебная_группа
    {
    public partial class Основное_окно : Form
    {
    static public List<int> grafic = new List<int>(); //массив для построения графика, содержащий кол-во человек на каждом курсе и номер курса
    static public string фамилияСтудента;

    public Основное_окно()
    {
    InitializeComponent();
    }
    public Вход_в_программу f2;
    public График f4;
    public О_программе f5;
    public Информация f6;
    public OpenFileDialog openFileDialog = new OpenFileDialog();
    public SaveFileDialog saveFileDialog = new SaveFileDialog();
    public string имяОткрытогоФайла;
    public DataGridViewRowCollection строки;
    private int рейтинг1, рейтинг2, рейтинг3, рейтинг4, рейтинг5;
    private bool отметка = false;


    private void Основное_окно_Load(object sender, EventArgs e)
    {
    f2 = new Вход_в_программу();
    f2.ShowDialog();
    if (!f2.flag2)
    {
    РежимОграниченнойФункциональности();
    }
    // Открыть();
    }
    private void полнойФункциональностиToolStripMenuItem_Click(object sender, EventArgs e)
    {
    f2 = new Вход_в_программу();
    f2.ShowDialog();
    if (!f2.flag2)
    {
    РежимОграниченнойФункциональности();
    }
    else
    {
    РежимПолнойФункциональности();
    }
    }

    private void ограниченнойФункциональностиToolStripMenuItem_Click(object sender, EventArgs e)
    {
    РежимОграниченнойФункциональности();
    }

    private void РежимОграниченнойФункциональности()
    {
    сохранитьToolStripMenuItem.Visible = false;
    сохранитьКакToolStripMenuItem.Visible = false;
    сохранить.Visible = false;
    информацияОбУчебныхГруппах.AllowUserToAddRows = false;
    информацияОбУчебныхГруппах.AllowUserToDeleteRows = false;
    информацияОСтудентах.AllowUserToAddRows = false;
    информацияОСтудентах.AllowUserToDeleteRows = false;
    }

    private void РежимПолнойФункциональности()
    {
    сохранитьToolStripMenuItem.Visible = true;
    сохранитьКакToolStripMenuItem.Visible = true;
    сохранить.Visible = true;
    информацияОбУчебныхГруппах.AllowUserToAddRows = true;
    информацияОбУчебныхГруппах.AllowUserToDeleteRows = true;
    информацияОСтудентах.AllowUserToAddRows = true;
    информацияОСтудентах.AllowUserToDeleteRows = true;
    }

    private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
    {
    Сохранить(/*имяОткрытогоФайла*/);
    }

    private void сохранитьКакToolStripMenuItem_Click(object sender, EventArgs e)
    {
    /// сохранить как
    saveFileDialog.InitialDirectory = Environment.CurrentDirectory;
    saveFileDialog.DefaultExt = "*.xml";
    saveFileDialog.Filter = "Xml Files|*.xml";

    if (saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK &&
    saveFileDialog.FileName.Length > 0)
    try
    {

    группы_Факультет.WriteXml(saveFileDialog.FileName);//, XmlWriteMode.WriteSchema);
    MessageBox.Show("Файл сохранен.");
    }
    catch
    {
    MessageBox.Show("Произошла ошибка. К сожалению данные не сохранились.");
    return;
    }
    имяОткрытогоФайла = saveFileDialog.FileName;
    }

    private void сохранить_Click(object sender, EventArgs e)
    {
    Сохранить(/*имяОткрытогоФайла*/);
    }

    private void Сохранить(/*string имяОткрытогоФайла*/)
    {

    string filePath = Environment.CurrentDirectory +"\\Учебная Группа+Схема.xml";
    //filePath = filePath + "\\" + имяОткрытогоФайла;

    /// Записать данные набора в XML-файл.
    try
    {

    группы_Факультет.WriteXml(filePath);//, XmlWriteMode.WriteSchema);
    MessageBox.Show("Файл сохранен.");
    }
    catch
    {
    MessageBox.Show("Произошла ошибка. К сожалению данные не сохранились.");
    return;
    }
    }

    private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
    {
    Открыть();
    }

    private void открыть_Click(object sender, EventArgs e)
    {
    Открыть();
    }
    private void Открыть()
    {
    openFileDialog.DefaultExt = "*.xml";
    openFileDialog.Filter = "Xml Files|*.xml";
    информацияОбУчебныхГруппах.DataSource = null;
    информацияОСтудентах.DataSource = null;
    группы_Факультет.таблицаУчебныеГруппы.DataSet.Clear();
    группы_Факультет.таблицаСтуденты.DataSet.Clear();


    if (openFileDialog.ShowDialog() == DialogResult.OK &&
    openFileDialog.FileName.Length > 0)
    {
    try
    {
    группы_Факультет.ReadXml(openFileDialog.FileName);//, XmlReadMode.ReadSchema);
    информацияОбУчебныхГруппах.DataSource = группы_Факультет.таблицаУчебныеГруппы;
    информацияОСтудентах.DataSource = группы_Факультет.таблицаСтуденты;
    }
    catch (XmlException)
    {
    MessageBox.Show("Ошибка в структуре исходного XML файла");
    }
    catch (OutOfMemoryException)
    {
    MessageBox.Show("Недостаточно памяти");
    }
    имяОткрытогоФайла = openFileDialog.FileName;
    }
    ПодсчетКоличестваСтудентовИГрупп();
    }

    private void ПодсчетКоличестваСтудентовИГрупп()
    {
    if (!f2.flag2)
    {
    toolStripStatusLabel2.Text = информацияОСтудентах.Rows.Count.ToString();
    toolStripStatusLabel4.Text = информацияОбУчебныхГруппах.Rows.Count.ToString();
    }
    else
    {
    int k1, k2;
    k1 = информацияОСтудентах.Rows.Count - 1;
    k2 = информацияОбУчебныхГруппах.Rows.Count - 1;
    toolStripStatusLabel2.Text = k1.ToString();
    toolStripStatusLabel4.Text = k2.ToString();
    }
    }

    private void график_Click(object sender, EventArgs e)
    {
    f4 = new График();
    f4.ShowDialog();
    }

    private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)
    {
    f5 = new О_программе();
    f5.ShowDialog();
    }

    private void информацияОСтудентах_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
    {
    grafic.Clear();
    for (int i = 4; i < 9; i++)
    {
    try
    {
    рейтинг1 = int.Parse(информацияОСтудентах.Rows[e.RowIndex].Cells[i].Value.ToString());
    }
    catch (FormatException)
    {
    MessageBox.Show("Ошибка!!! Проверьте корректность данных в столбцах рейтинга");
    }
    Формирование_массива_для_графика();
    }
    фамилияСтудента = информацияОСтудентах.Rows[e.RowIndex].Cells[2].Value.ToString();
    f4 = new График();
    f4.ShowDialog();
    }

    private void Формирование_массива_для_графика()
    {
    grafic.Add(рейтинг1);
    }

    private void стипендия_CheckedChanged(object sender, EventArgs e)
    {
    if (стипендия.Checked)
    {
    ОтметитьСтудентов();
    отметка = true;
    }
    else
    {
    if (отметка == true)
    {
    УдалитьОтметку();
    отметка = false;
    }
    }
    }

    private void успеваемость_CheckedChanged(object sender, EventArgs e)
    {
    if (успеваемость.Checked)
    {
    ОтметитьСтудентов();
    отметка = true;
    }
    else
    {
    if (отметка == true)
    {
    УдалитьОтметку();
    отметка = false;
    }
    }
    }
    private void ОтметитьСтудентов()
    {
    //int сумма = 0;
    if (f2.flag2)
    {
    информацияОСтудентах.AllowUserToAddRows = false;
    }
    строки = информацияОСтудентах.Rows;
    ПоискСтудентовСПлохойУспеваемостью(строки);
    }

    private void ПоискСтудентовСПлохойУспеваемостью(DataGridViewRowCollection строки)
    {
    int сумма = 0;
    int среднийБалл = 0;
    foreach (DataGridViewRow row in строки) // Перебираем строки
    {
    if (row.Cells[4].Value == null)
    {
    MessageBox.Show("Информация об успеваемости отсутствует! \n Поверьте заполнены ли столбцы с рейтингом");
    //break;
    }
    else if (row.Cells[4].Value != null && row.Cells[5].Value == null)
    {
    try
    {
    рейтинг1 = int.Parse(row.Cells[4].Value.ToString());
    }
    catch (FormatException)
    {
    MessageBox.Show("Ошибка!!! Проверьте корректность данных в столбцах рейтинга");
    }
    сумма = рейтинг1;
    среднийБалл = сумма;
    //break;
    }
    else if (row.Cells[4].Value != null && row.Cells[5].Value != null && row.Cells[6].Value == null)
    {
    try
    {
    рейтинг1 = int.Parse(row.Cells[4].Value.ToString());
    рейтинг2 = int.Parse(row.Cells[5].Value.ToString());
    }
    catch (FormatException)
    {
    MessageBox.Show("Ошибка!!! Проверьте корректность данных в столбцах рейтинга");
    }
    сумма = рейтинг1 + рейтинг2;
    среднийБалл = сумма / 2;
    //break;
    }
    else if (row.Cells[4].Value != null && row.Cells[5].Value != null && row.Cells[6].Value != null && row.Cells[7].Value == null)
    {
    try
    {
    рейтинг1 = int.Parse(row.Cells[4].Value.ToString());
    рейтинг2 = int.Parse(row.Cells[5].Value.ToString());
    рейтинг3 = int.Parse(row.Cells[6].Value.ToString());
    }
    catch (FormatException)
    {
    MessageBox.Show("Ошибка!!! Проверьте корректность данных в столбцах рейтинга");
    }
    сумма = рейтинг1 + рейтинг2 + рейтинг3;
    среднийБалл = сумма / 3;
    //break;
    }
    else if (row.Cells[4].Value != null && row.Cells[5].Value != null && row.Cells[6].Value != null && row.Cells[7].Value != null && row.Cells[8].Value == null)
    {
    try
    {
    рейтинг1 = int.Parse(row.Cells[4].Value.ToString());
    рейтинг2 = int.Parse(row.Cells[5].Value.ToString());
    рейтинг3 = int.Parse(row.Cells[6].Value.ToString());
    рейтинг4 = int.Parse(row.Cells[7].Value.ToString());
    }
    catch (FormatException)
    {
    MessageBox.Show("Ошибка!!! Проверьте корректность данных в столбцах рейтинга");
    }
    сумма = рейтинг1 + рейтинг2 + рейтинг3 + рейтинг4;
    среднийБалл = сумма / 4;
    //break;
    }
    else
    {
    try
    {
    рейтинг1 = int.Parse(row.Cells[4].Value.ToString());
    рейтинг2 = int.Parse(row.Cells[5].Value.ToString());
    рейтинг3 = int.Parse(row.Cells[6].Value.ToString());
    рейтинг4 = int.Parse(row.Cells[7].Value.ToString());
    рейтинг5 = int.Parse(row.Cells[8].Value.ToString());
    }
    catch (FormatException)
    {
    MessageBox.Show("Ошибка!!! Проверьте корректность данных в столбцах рейтинга");
    }
    сумма = рейтинг1 + рейтинг2 + рейтинг3 + рейтинг4 + рейтинг5;
    среднийБалл = сумма / 5;
    // break;
    }

    if (успеваемость.Checked)
    {
    if (среднийБалл < 40)
    {
    row.Cells[2].Style.BackColor = Color.DeepPink;
    row.Cells[3].Style.BackColor = Color.DeepPink;
    }
    }
    else if (стипендия.Checked)
    {
    if (сумма >= 400)
    {
    row.Cells[2].Style.BackColor = Color.DarkSeaGreen;
    row.Cells[3].Style.BackColor = Color.DarkSeaGreen;
    }
    }
    }
    }
    private void УдалитьОтметку()
    {
    foreach (DataGridViewRow row in информацияОСтудентах.Rows) // Перебираем строки
    {
    row.Cells[2].Style.BackColor = SystemColors.Window;
    row.Cells[3].Style.BackColor = SystemColors.Window;
    }
    if (!f2.flag2)
    {
    информацияОСтудентах.AllowUserToAddRows = false;
    }
    else
    {
    информацияОСтудентах.AllowUserToAddRows = true;
    }
    }

    private void информацияОбУчебныхГруппах_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
    {
    строки = информацияОСтудентах.Rows;
    string номерГруппы = информацияОбУчебныхГруппах.Rows[e.RowIndex].Cells[0].Value.ToString();
    //textBox1.Text = номерГруппы;
    foreach (DataGridViewRow row in строки)
    {
    if (row.Cells[1].Value.ToString() == номерГруппы)
    {
    row.Visible = true;
    }
    else
    {
    row.Visible = false;
    }
    }

    ПодсчетКоличестваСтудентовИГрупп();

    //информацияОбУчебныхГруппах.Rows[e.RowIndex].Cells[1].Value.ToString() = toolStripStatusLabel2.Text;
    }

    private void информацияОСтудентах_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
    {
    if (f2.flag2)
    {
    f6 = new Информация();
    f6.ShowDialog();
    }

    }

    private void среднийБаллToolStripMenuItem_Click(object sender, EventArgs e)
    {
    if (информацияОСтудентах.CurrentCellAddress != null)
    {
    int index = информацияОСтудентах.CurrentCellAddress.Y;
    try
    {
    рейтинг1 = int.Parse(информацияОСтудентах.Rows[index].Cells[4].Value.ToString());
    рейтинг2 = int.Parse(информацияОСтудентах.Rows[index].Cells[5].Value.ToString());
    рейтинг3 = int.Parse(информацияОСтудентах.Rows[index].Cells[6].Value.ToString());
    рейтинг4 = int.Parse(информацияОСтудентах.Rows[index].Cells[7].Value.ToString());
    рейтинг5 = int.Parse(информацияОСтудентах.Rows[index].Cells[8].Value.ToString());
    }
    catch (FormatException)
    {
    MessageBox.Show("Ошибка!!! Проверьте корректность данных в столбцах рейтинга");
    }
    int среднийБалл = (рейтинг1 + рейтинг2 + рейтинг3 + рейтинг4 + рейтинг5) /5;
    MessageBox.Show("Средний балл студента = " + среднийБалл.ToString(), "Средний балл");

    }
    }

    private void суммуБалловToolStripMenuItem_Click(object sender, EventArgs e)
    {
    if (информацияОСтудентах.CurrentCellAddress != null)
    {
    int index = информацияОСтудентах.CurrentCellAddress.Y;
    try
    {
    рейтинг1 = int.Parse(информацияОСтудентах.Rows[index].Cells[4].Value.ToString());
    рейтинг2 = int.Parse(информацияОСтудентах.Rows[index].Cells[5].Value.ToString());
    рейтинг3 = int.Parse(информацияОСтудентах.Rows[index].Cells[6].Value.ToString());
    рейтинг4 = int.Parse(информацияОСтудентах.Rows[index].Cells[7].Value.ToString());
    рейтинг5 = int.Parse(информацияОСтудентах.Rows[index].Cells[8].Value.ToString());
    }
    catch (FormatException)
    {
    MessageBox.Show("Ошибка!!! Проверьте корректность данных в столбцах рейтинга");
    }
    int суммаБаллов = рейтинг1 + рейтинг2 + рейтинг3 + рейтинг4 + рейтинг5;
    MessageBox.Show("Сумма баллов студента = " + суммаБаллов.ToString(), "Сумма баллов");

    }
    }

    private void toolStripTextBox1_TextChanged(object sender, EventArgs e) - алгоритм поиска
    {
    /*int i;
    for (i = 0; i < информацияОСтудентах.Rows.Count - 1; i++)
    информацияОСтудентах.Rows[i].Visible = true;*/

    if (toolStripTextBox1.Text != "")
    foreach (DataGridViewRow row in информацияОСтудентах.Rows)
    {
    row.Visible = true;

    if (!((row.Cells[0].ToString() == toolStripTextBox1.Text) ||
    (row.Cells[1].ToString() == toolStripTextBox1.Text)) ||
    (row.Cells[2].ToString() == toolStripTextBox1.Text) ||
    (row.Cells[3].ToString() == toolStripTextBox1.Text) ||
    (row.Cells[4].ToString() == toolStripTextBox1.Text) ||
    (row.Cells[5].ToString() == toolStripTextBox1.Text) ||
    (row.Cells[6].ToString() == toolStripTextBox1.Text) ||
    (row.Cells[7].ToString() == toolStripTextBox1.Text) ||
    (row.Cells[8].ToString() == toolStripTextBox1.Text))
    {
    //информацияОСтудентах.Rows[row.Index].Visible = false;
    [b]row.Visible = false;[/b] - 506 строка!
    }
    }
    }
    }
    }
    Не могу понять, что его не устраивает... Очень надеюсь на дельный совет от мастеров программирования. Заранее благодарю
     
  2. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">sax_ol </div></div><div class="sp-body"><div class="sp-content">
    а че, в шарпе можно использовать русские буквы в именах ф-й или переменных??? Омг.. Вот не знал. Это ж ппц, 1С получается..
     
  3. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    sax_ol
    ну хз. Блин, а мне как-то отвратно. _И не из-за языка, как такового_. Я про сами буквы) Ну как-то привыкли же все, что нельзя кириллицу. И давно привыкли) А тут.. брр. т.е. если бы код выше писал я, то был бы транслит(если не англ.вариант). А так.. Ну блин, ужос)
     
  4. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    Не понял, про что ты. Ась?
     
  5. WInk

    WInk Гость

    А что именно в ней не так? Просто удивительно, но, я поменяла параметры отображения: Visible = true на .Cells[2].Style.BackColor = Colors.Red, а Visible = false на .Cells[2].Style.BackColor = SystemColors.Window

    Теперь он работает оО правда вместо того, чтобы скрывать несоответствующую информацию, он ее оставляет невыделеной. Это конечно не то, что требуется... а как наладить это фильтр я просто уже ума не приложу =(
     
  6. WInk

    WInk Гость

    Я на C# работаю недавно и в фильтрах еще ориентрируюсь плохо... тогда мне не совсем ясно, как заставить его искать в данных? Он и так ищет внутри таблицы, в которую введены данные
     
  7. WInk

    WInk Гость

    Проблема в том, что моя студия не руссифицирована, и справка соответсвенно тоже
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей