Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПИС ИМОП 2.doc
Скачиваний:
7
Добавлен:
23.08.2019
Размер:
6.07 Mб
Скачать

4.4.2. Отображение номера текущей записи

В завершении реализуем метод ShowPosition для отображения номера текущей записи и суммарного количества записей в наборе данных. Эту информацию будем отображать в элементе управления Label6.

Создайте метод (модуль) с именем ShowPosition. В этом модуле получите текущую позицию из свойства Position, а число записей — из свойства Count объекта BindingContext и отобразите их в элементе управления Label6. Программный код будет выглядеть следующим образом (листинг 4.6).

Листинг 4.6

' Visual Basic

Private Sub ShowPosition()

Dim iCnt As Integer 'Количество записей

Dim iPos As Integer 'Номер записи

iCnt=Me.BindingContext(DataSet11, "authors").Count

If iCnt=0 Then

Label6.Text="(No records)"

Else

iPos=Me.BindingContext(DataSet11, "authors").Position+1

Label6.Text=iPos.ToString & " из " & iCnt.ToString

End If

End Sub

// C#

private void ShowPosition()

{

int iCnt;

int iPos;

iCnt=this.BindingContext[dataSet11, "authors"].Count;

iPos=this.BindingContext[dataSet11, "authors"].Position+1;

if (iCnt==0)

{

label6.Text="(No records)";

}

else

{

label6.Text=iPos.ToString() + " из " + iCnt.ToString() ;

}

}

Добавьте вызов метода ShowPosition в обработчик события click кнопки Button3 (листинг 4.7).

Листинг 4.7

' Visual Basic

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles btnPrevious.Click

Me.BindingContext(DataSetll, "authors").Position -=1

ShowPosition()

End Sub

// C#

private void Button3_Click(object sender, System.EventArgs e)

{

this.BindingContext[dataSet11, "authors"].Position -=1;

ShowPosition();

}

Аналогично запрограммируйте действие кнопки Button4 ( листинг 4.8).

Листинг 4.8

' Visual Basic

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles btnPrevious.Click

Me.BindingContext(DataSetll, "authors").Position+=1

ShowPosition()

End Sub

// C#

private void Button4_Click(object sender, System.EventArgs e)

{

this.BindingContext[dataSet11, "authors"].Position+=1;

ShowPosition() ;

}

Запустите приложение и проверьте работу элементов, отображающих текущую запись набора данных.

4.5. Выборка и сортировка данных через запросы с параметрами

Традиционно при работе с информационными системами пользователю нужна не вся информация из базы данных. Например, требуется выбрать заказы только определенного клиента или книги одного автора и т. п. В этом случае пользователь вводит в определенные элементы формы (или выбирает из справочных таблиц) некую ключевую информацию, на основе которой формируется запрос, возвращающий только заказанные данные.

Использование запросов с параметрами обеспечивает вашему приложению более эффективную работу, позволяя получать отфильтрованные и отсортированные записи и значительно снизить сетевой трафик.

В следующем примере вы модифицируете Windows-форму, которая будет показывать только определенных авторов из базы данных Pubs SQL-севера. Пользователи будут вводить код штата США (например, са для Калифорнии) и объект DataSet будет заполняться данными только тех авторов, которые проживают в данном штате. Для этого необходимо добавить на форму элемент, обеспечивающий пользователю ввод кода штата, модифицировать объекты доступа к данным таким образом, чтобы они возвращали только необходимые пользователю записи.

Для реализации этого примера вам необходимо иметь доступ к базе данных pubs, которая устанавливается при инсталляции MS SQL Server.

Для реализации примера потребуется несколько шагов:

  • создание формы;

  • создание и конфигурирование набор данных, на этом этапе будет создан и SQL-запрос, который будет заполнять набор данных записями из базы данных;

  • добавление элементов отображения информации на форме;

  • добавление программного кода, который будет обновлять набор данных после того, как пользователь присвоит новые значения параметрам запроса;

  • добавление программного кода, чтобы обеспечить перемещение между записями набора данных.