Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по C#_Часть1.doc
Скачиваний:
138
Добавлен:
19.08.2019
Размер:
2.54 Mб
Скачать
    1. Поиск заданной строки в таблице

Большинство приложений, получающих данные, нуждаются в доступе к отдельным записям, которые отвечают некоторым критериям. Поиск конкретной строки в наборе можно осуществлять по первичному ключу или по произвольному полю.

      1. Поиск строки со значением первичного ключа

Чтобы найти строку в типизированном наборе данных со значением первичного ключа:

  • Вызовите метод FindBy, который использует первичный ключ таблицы для поиска строки.

В следующем примере колонка passport является первичным ключом таблицы Person, поэтому метод FindBy генерируется как FindBypassport. В примере показано, как присвоить определенный объект DataRow переменной, используя созданный метод FindBy.

Пример: По значению, введенному в текстовое поле, необходимо найти фамилию сотрудника:

Если сотрудник с заданным паспортом отсутвует, то программой должно быть сгенерировано сообщение:

Для решения поставленной задачи в обработчике события нажатия кнопки найти необходимо прописать следующий код:

private void button1_Click(object sender, EventArgs e)

{

DataRow rp = sotrudnicDataSet1.person.NewRow();

rp = sotrudnicDataSet1.person.FindBypasport

(Convert.ToInt32(textBox1.Text));

if (rp != null)

label2.Text = "Фамилия - " + rp["fio"].ToString();

else

MessageBox.Show("Сотрудник с заданным паспортом отсутствует!");

}

Примечание. На форме может не быть таблицы DataGridView, но для работы метода FindBy должны быть объекты: personBindingSource, personTableAdapter, sotrudnicdaaset1:

Чтобы найти строку в нетипизированном наборе данных со значением первичного ключа

  • Вызовите метод Find из коллекции DataRowCollection, передав первичный ключ в качестве параметра.

В следующем примере показано, как объявить новую строку с именем R и присвоить ей возвращаемое значение метода Find. Если первичный ключ найден, содержимое индекса столбца 1 отображается в окне сообщения.

string s = "значение первичного ключа";

DataRow R = БД.Tables["имя_таблицы"].Rows.Find(s);

if (R != null)

{

MessageBox.Show(R[1].ToString());

}

else

{

MessageBox.Show("Строка с первичным ключом " + s + "не найдена");

}

      1. Поиск строк по значениям столбцов

Чтобы найти строки на основе значений в любом столбце:

Таблицы данных создаются методом Select, который возвращает массив DataRow на основе выражения, переданного методу Select.

В следующем примере показано использование метода Select из DataTable для поиска конкретных строк.

private void button2_Click(object sender, EventArgs e)

{

DataRow[] rps;

rps=sotrudnicDataSet1.person.Select("fio Like '"+textBox2.Text + "%'");

if (rps.Count() !=0)

label5.Text = "Фамилия - " + rps[0]["fio"].ToString();

else MessageBox.Show("Сотрудник с заданной фамилией не найден!");

}

Внимание.

Вместо команды:

rps = sotrudnicDataSet1.person.Select("fio Like '" + textBox2.Text + "%'");

можно применить команду:

rps=sotrudnicDataSet1.Tables["person"].Select("fio Like '" + textBox2.Text + "%'");