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



В завершении реализуем метод 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() ;

}

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

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

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

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

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

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

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

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

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

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

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

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

Создание Windows-формы

На первом шаге создается Windows-форма в следующей последовательности.

1. Из меню Fileвыберите команду Add Windows Form.

2. Появиться диалоговое окно Add New Iten.

3. Нажмите кнопку Add и в проект будет добавлена новая форма с именем Form2.

На следующем шаге добавьте к форме и сконфигурируйте набор данных в следующей последовательности.

□ Создайте адаптер данных, с использованием соответствующего мастера. Адаптер данных содержит SQL-запрос, который будет считывать информацию из таблицы базы данных и передавать ее объекту DataSet. Мастер поможет создать SQL-запрос, а также соединение с базой данных.

□ Сгенерируйте схему набора данных. При создании схемы Visual Studio создаст и новый класс DataSet, который будет добавлен к форме.

4.5.2. Создание и конфигурирование объектов DataConnection и DataAdapter

Для создания и конфигурирования объектов DataConnection и DataAdapter выполните следующие действия.

1. Из вкладки Data окна Toolbox, перенесите на форму объект OleDbDataAdapter.

Будет запущен мастер Data Adapter Configuration Wizard, который поможет создать объекты DataConnection и DataAdapter.

2. В мастере выполните следующие действия.

• На второй странице создайте или выберите соединение, указывающее на базу данных Pubs вашего SQL-сервера (рис. 4.26).

 

 

Рис. 4.26. Выбор соединения, указывающего на базу данных Pubs

 

• На третьей странице укажите, что вы хотите использовать SQL- запрос для обращения к базе данных.

• На четвертой странице создайте следующий SQL-запрос (рис. 4.27):

SELECT au_id, au_lname, state FROM authors WHERE (state=?)

 

 

Рис. 4.27. Формирование запроса в окне Query Bilder

 

Вопросительный знак (?) представляет собой метку-заполнитель для параметра. (Если вы используете класс SqlDataAdapter, то на месте знака вопроса будет стоять переменная для принятия значения от параметра, например @state.)

Примечание

Для помощи формирования SQL-запроса нажмите Query Builder,чтобы запустить мастер формирования запросов Query Builder.Чтобы сформировать метку-заполнитель для параметра, введите вопросительный знак в столбец Criteriaдля поля state.

3. Мастер создаст соединение с базой данных (объект OleDbConnection1) и адаптер данных (объект OleDbDataAdapterl).

Адаптер данных фактически будет содержать четыре SQL-запроса: один для выборки записей, который вы собственно и создали на основе предложения select, а также три дополнительных запроса — для модификации, добавления и удаления записей (на основе предложений update, insert и delete).

В этом примере мы будем использовать только один запрос на выборку записей на основе предложения select. Перечень параметров команды SelectCommand можно посмотреть в окне свойств (рис. 4.28).

 

 

Рис. 4.28. Доступ к коллекции параметров

Сам SQL-запрос с предложением select будет храниться в свойстве SelectCommand адаптера данных. Свойство SelectCommand представляет собой объект команды данных (объект типа OleDbCommand), в котором содержится не только SQL-запрос, но и другая информация, необходимая для выполнения SQL-запроса. Наиболее важным элементом команды данных является коллекция параметров parameters. Эта коллекция содержит набор параметров (типа OleDbParameter), причем каждый параметр соответствует одной из меток-заполнителей (поименованному параметру) SQL-запроса. В этом примере мы использовали одну метку-заполнитель, значит, в коллекции Parameters метке-заполнителю будет соответствовать единственный параметр — значение для поля state (рис. 4.29).

 

 

Рис. 4.29. Коллекция параметров команды SELECT

 

По умолчанию, Data Adapter Configuration Wizardпри формировании параметров присваивает им имена соответствующих столбцов таблицы базы данных. В нашем примере задана только одна метка-заполнитель для столбца state, соответственно мастером будет создан один параметр с именем state. Позже мы узнаем, как присвоить значение этому параметру перед выполнением SQL-запроса.

Создание набора данных

После того, как созданы объекты соединения с базой данных и адаптер данных, можно создать набор данных. В Visual Studio можно сгенерировать набор данных автоматически, основываясь на SQL-запросе, который был создан в адаптере данных. Набор данных — это экземпляр класса DataSet, создаваемого на основе XML-схемы (xsd-файла), в которой описываются элементы данного класса (таблицы, колонки и ограничения).

Для создания DataSet нужно выполнить следующие шаги.

1. В меню Dataвыберите пункт Generate DataSet.

Появится диалоговое окно Generate Dataset(рис. 4.30).

 

 

Рис. 4.30. Диалоговое окно Generate DataSet

 

2. Задайте набору данных имя dsAuthors, убедитесь, что установлен флажок Add this dataset to the designerи затем нажмите кнопку ОК.

После этого Visual Studio сгенерирует класс типизированного набора данных (dsAuthors) и схему, которая описывает его структуру. Схема будет содержаться в файле dsAuthors.xsd, который появится в окне Solution Explorer.Если вы в окне Solution Explorerнажмете кнопку Show All Filesна верхней панели, то будет видно, что файл схемы имеет зависимый файл (с расширением vb или cs, в зависимости от используемого языка программирования), содержащий код, который определяет ваш новый класс набора данных (рис. 4.31).

 

 

Рис. 4.31. Окно Solution Explorer

Наконец, Visual Studio добавит к форме экземпляр этого класса набора данных (с именем DsAuthors1 в Visual Basic, или dsAuthors1 в С#).

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


Дата добавления: 2018-02-15; просмотров: 413; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!