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

Продажа товара (услуги) – связь м:м.

Имеется следующая схема данных.

Рассмотрим процедуру создания выставки и назначение картин на выставку. Обратите внимание, что сначала должна быть создана выставка и получен код выставки, и только затем возможно заполнение таблицы Exhibition_Picture.

В данном примере вся информация располагается на одной странице.

Создайте новую страницу содержимого.

Задайте табличную разметку и расположите следующие ЭУ, как показано на рисунке.

Label1

Label6

TextBox3

Calendar1

Label7

TextBox4

Label8

TextBox5

Label9

TextBox6

Button4 Button3

Label10

DropDownList1

DropDownList2

GridView2

GridView3

Способ создания таблицы выберите самостоятельно.

В метке Label1 разместите текст «Ввод начальной даты».

В метке Label6 разместите текст «Дата начала».

В метке Label7 разместите текст «Дата окончания».

В метке Label8 разместите текст «Тема выставки».

В метке Label9 разместите текст «место проведения».

В метке Label10 текст отсутствует.

Обратите внимание на свойство DataKeyNames ЭУ GridView, которое необходимо установить вручную.

Для ЭУ DropDownList необходимо установить свойство AutoPostBack в положение True.

GridView2 связан с запросом Q_picture_Sell

GridView3 связан с запросом Q_exhibition_picture

ЭУ DropDownList1 связан с таблицей Тип

ЭУ DropDownList2 связан с запросом QAuthor

При загрузке страницы часть ЭУ скрывается с вывода на экран.

УЭ календарь(Calendar1) используется для автоматического заполнения начала и окончания выставки (TextBox3 и TextBov4) . Процедура проверяет состояние метки Label1.

При загрузке страницы страница выглядит следующим образом.

Создавать выставку может только авторизированный пользователь. При нажатии на кнопку производится проверка авторизации пользователя. Если пользователь не авторизирован отображается сообщение о необходимости авторизации.

Protected Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button3.Click

Dim IDExh As Long 'код выставки

'Проверка авторизации пользователя

Dim IDuser As Integer = Convert.ToInt32(Session("IDU"))

If IDuser = 0 Then

Me.Label10.Text = "Для оформления заказа необходимо зарегистрироваться"

Exit Sub

End If

' Строка подключения:

Dim СтрокаПодкл As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("Web.mdb")

' Создание экземпляра объекта Connection:

Dim CONNECTION = New OleDbConnection(СтрокаПодкл)

Dim d1 As String, d2 As String, t As String, m As String

'считали данные формы

d1 = CDate(Me.TextBox3.Text)

d2 = CDate(Me.TextBox4.Text)

t = Me.TextBox5.Text

m = Me.TextBox6.Text

Try ' Открытие подключения:

CONNECTION.Open()

Catch ex2 As Exception

Response.Write("<br><br>" & ex2.Message)

End Try

Dim SQL_запрос As String

Dim COMMAND As New OleDbCommand

' ДОБАВЛЕНИЕ ЗАПИСИ О выставке В БД:

' Строка SQL-запроса:

SQL_запрос = "INSERT INTO EXHIBITION (Dateb, DateE, Thema, [Where] ) VALUES ('" & d1 & "', '" & d2 & "', '" & t & "', '" & m & "')"

'MsgBox(SQL_запрос)

' Создание объекта Command с заданием SQL-запроса:

COMMAND.CommandText = SQL_запрос

' Для добавления записи в БД эта команда обязательна:

COMMAND.Connection = CONNECTION

Try ' Выполнение команды SQL, то есть ЗАПИСЬ В БД:

COMMAND.ExecuteNonQuery()

'Response.Write("<br><br>В таблицу добавлена запись")

Me.Label10.Text = "Выставка создана, выберите картины"

Me.GridView2.Visible = True

Me.DropDownList1.Visible = True

Me.DropDownList2.Visible = True

Me.Button4.Visible = True

Me.Button3.Visible = False

Catch ex3 As Exception

Response.Write("<br><br>" & ex3.Message)

End Try

'======================

'получение номера выставки

SQL_запрос = "SELECT IDexhibition FROM [EXHIBITION] ORDER BY IDexhibition DESC"

' Создание объекта Command с заданием SQL-запроса:

COMMAND.CommandText = SQL_запрос

COMMAND.Connection = CONNECTION

Dim DATAREADER As OleDbDataReader

DATAREADER = COMMAND.ExecuteReader

If DATAREADER.Read = True Then

'определение значения поля

IDExh = DATAREADER.GetValue(0)

End If

'===================

CONNECTION.Close()

'помещаем в сессию код выставки

Session.Add("IDExh", IDExh)

CONNECTION.Close()

End Sub

После создания выставки определяется код выставки и записывается в сессию, скрывается кнопка создания выставки и отображается кнопка <Просмотр> , а также отображается список картин ( GridView2 ).

Для удобства отбора предусмотрена фильтрация по технике создания и автору картины.

Фильтрация по технике создания.

'Фильтр по технике создания

Protected Sub DropDownList1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList1.TextChanged

'когда в поле со списком выбирается тип картины на сервер отправляется запрос на выборку данных

'создание запроса

AccessDataSource1.SelectCommand = "SELECT * FROM Q_picture_Sell WHERE IDType=" & Me.DropDownList1.SelectedValue

'создание класса, который передается в качестве параметра методу Select

Dim oArg As New System.Web.UI.DataSourceSelectArguments

AccessDataSource1.Select(oArg)

'связывание полученных данных с компонентом GridView при помощи метода DataBind

GridView2.DataBind()

Me.Button4.Visible = True

Me.Button3.Visible = False

Me.GridView2.Visible = True

Me.DropDownList1.Visible = True

Me.DropDownList2.Visible = True

End Sub

Фильтрация по автору.

'фильтр по автору

Protected Sub DropDownList2_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList2.TextChanged

'когда в поле со списком выбирается тип картины на сервер отправляется запрос на выборку данных

'создание запроса

AccessDataSource1.SelectCommand = "SELECT * FROM Q_picture_Sell WHERE IDAuthor=" & Me.DropDownList2.SelectedValue

'создание класса, который передается в качестве параметра методу Select

Dim oArg As New System.Web.UI.DataSourceSelectArguments

AccessDataSource1.Select(oArg)

'связывание полученных данных с компонентом GridView при помощи метода DataBind

GridView2.DataBind()

Me.Button4.Visible = True

Me.Button3.Visible = False

Me.GridView2.Visible = True

Me.DropDownList1.Visible = True

Me.DropDownList2.Visible = True

End Sub

Гиперссылка <Выбор> в списке картин позволяет назначить картину на выставку.

Процедура выбора картины.

'Назначение картины на выставку

Protected Sub GridView2_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView2.SelectedIndexChanged

'код выставки достаем из сессии

Dim IDExh As Integer = CLng(Session("IDExh"))

Dim idpict As Long

' Строка подключения:

Dim СтрокаПодкл As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("Web.mdb")

' Создание экземпляра объекта Connection:

Dim CONNECTION = New OleDbConnection(СтрокаПодкл)

idpict = Me.GridView2.SelectedValue

Try ' Открытие подключения:

CONNECTION.Open()

Catch ex2 As Exception

Response.Write("<br><br>" & ex2.Message)

End Try

Dim SQL_запрос As String

Dim COMMAND As New OleDbCommand

' ДОБАВЛЕНИЕ ЗАПИСИ В БД:

' Строка SQL-запроса:

SQL_запрос = "INSERT INTO [Exhibition_Picture ](IDpicture, IDexhibition ) VALUES (" & idpict & ", " & IDExh & ")"

' Создание объекта Command с заданием SQL-запроса:

COMMAND.CommandText = SQL_запрос

' Для добавления записи в БД эта команда обязательна:

COMMAND.Connection = CONNECTION

Try ' Выполнение команды SQL, то есть ЗАПИСЬ В БД:

COMMAND.ExecuteNonQuery()

'Response.Write("<br><br>В таблицу добавлена запись")

Me.GridView2.Visible = True

Catch ex3 As Exception

Response.Write("<br><br>" & ex3.Message)

End Try

CONNECTION.Close()

Me.Button4.Visible = True

Me.Button3.Visible = False

Me.GridView2.Visible = True

Me.DropDownList1.Visible = True

Me.DropDownList2.Visible = True

End Sub

После того, как картины были выбраны можно просмотреть список, выбранных картин.

Процедура просмотра картин.

'Просмотр картин на выставке

Protected Sub Button4_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button4.Click

Dim IDExh As Integer = CLng(Session("IDExh"))

Dim crit As String

crit = "SELECT * FROM [Q_Exhibition_Picture] WHERE IDexhibition=" & IDExh

AccessDataSource2.SelectCommand = crit

'создание класса, который передается в качестве параметра методу Select

Dim oArg As New System.Web.UI.DataSourceSelectArguments

AccessDataSource2.Select(oArg)

'связывание полученных данных с компонентом GridView при помощи метода DataBind

GridView3.DataBind()

Me.GridView2.Visible = False

Me.GridView3.Visible = True

End Sub