Знакомство с ASP.NET

Что еще нужно знать об ASP.NET

Взаимодействие с клиентом

Создание интерактивных приложений для intranet-сетей

Расширение функциональных возможностей intarnet

Создание спортивного Web-узла

Управление содержимым Web-узла

Отслеживание действий посетителейa

Виртуальный университет

 Использование специализированных приложений на узлах компаний

Виртуальная риэлтерская контора

Персонализация узла для посетителей

Интерактивные возможности узла

Увеличение посещаемости узла

Создание интерактивного магазина

Создание интерактивного аукциона

Web-службы

Справочник по языку ASP.NET/VB.


Сайт создан по материалам книги Г. Бучека "Учебный курс по ASP.NET". Москва: BHV, 2002.

Создатель сайта-выпускник курсов web-дизайнеров Сафоновского Колледжа Информационных Технологий Максим Котликов


Проект Кабина для голосования
Проект День рождения
Проект Рассылка почты


Как обычно, в первую очередь осуществляется подключение к базе данных, а затем выполняется запрос SQL для получения результатов голосования сотрудника по выбранному вопросу:

    DBCommand = New OleDbDataAdapter _
    ("Select VotelD from Votes " _
    & "Where QuestionID = " _
    & ddlQuestionlD.Selectedltem.Value __
    & " and EmployeelD = " & Session("EmployeelD") _
    , DBConn)

Результат выполнения запроса помещается в объект DataSet:

    DBCommand.Fill(DSPageData, _
    "VotesCast")

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

    If DSPageData.Tables("VotesCast"). _
    Rows.Count = 0 Then

В этом случае элемент управления Panel, предназначенный для голосования, выводится на экран:

    pnlVote.Visible= True

а элемент управления Panel с результатами голосования скрывается:

    pnlResults.Visible = False

Далее производится отбор ответов на вопрос:

    DBCommand - New OleDbDataAdapter _
    ("Select AnswerText from VoteAnswers " _
    & "Where QuestionID = " _
    & ddlQuestionlD.Selectedltem.Value _
    & " Order By AnswerText", DBConn)

Ответы помещаются в объект DataSet:

    DBCommand.Fill(DSPageData, _
    "Answers")

С этим объектом связывается второй элемент DropDownList:

    ddlAnswers.DataSource = _
    DSPageData.Tables("Answers").DefaultView
    ddlAnswers.DataBind()

Если сотрудник проголосовал по выбранному вопросу, то с экрана удаляется элемент управления Panel, предназначенный для голосования:

    pnlVote.Visible = False

и отображается элемент управления Panel с результатами голосования:

    pnlResults.Visible = True

Затем подсчитывается количество вариантов ответа на данный вопрос:

    DBCommand = New OleDbDataAdapter _
    ("Select AnswerText as [Ответ], " _
    & "Count(VotelD) as [Голосов] From Votes " _
    & "Where QuestionID= "
    & ddlQuestionlD.Selectedltem.Value _
    & " Group By AnswerText Order By " _
    & "Count(VotelD) DESC", DBConn)
    DBCommand.Fill(DSPageData, _
    "VoteCount")

Результаты вьполнения запроса помещаются в элемент управления DataGrid:

    dgResults.DataSource = _
    DSPageData.Tables("VoteCount").Defaultview
    dgResults.DataBind()

Третья процедура активизируется, когда пользователь нажимает кнопку ОК, отдавая свой голос:

    Sub SubmitBtn_Click(Sender As Object, E As EventArgs)
    Dim DBConn as OleDbConnection
    Dim DBInsert As New OleDbCoiranand
    Dim DBCommand As OleDbDataAdapter
    Dim DSPageData as New DataSet
    DBConn = New OleDbConnection("PROVIDER=sqloledb;" _
    & server=localhost;" _
    & "Initail Catalog=INETC4;"
    & "User ID=sa;"
    & "Password=yourpassword");
    DBInsert.CommandText = "Insert Into Votes " _
    & "(EmployeelD, QuestionID, AnswerText) values (" _
    & Session("EmployeelD") & ", " _
    & ddlQuestionlD.Selectedltem.Value & ", " _
    & "'" _
    & Replace (ddlAnswers.Selectedltem. Text, ""', '"'")
    & '")"
    DBInsert.Connection = DBConn
    DBInsert.Connection.Open
    DBInsert.ExecuteNonQuery()
    DBCommand = New OleDbDataAdapter _
    ("Select AnswerText as [Ответ], " _
    & "Count(VotelD) as [Голосов] From Votes " _
    & "Where QuestionID " " _
    & ddlQuestionlD.Selectedltem.Value _
    & " Group By AnswerText Order By " _
    & "Count(VotelD) DESC", DBConn)
    DBCommand.Fill(DSPageData, _
    "VotesCast")
    dgResults.DataSource = _
    DSPageData.Tables("VotesCast").Defaultview
    dgResults.DataBind()
    pnlVote.Visible = False
    pnlResults.Visible = True
    End Sub

Сделанный сотрудником выбор фиксируется в таблице Votes:

    DBInsert.CommandText = "Insert Into Votes " _
    & "(EmployeelD, QuestionID, AnswerText) values (" _
    & Session("EmployeelD") & ", " _
    & ddlQuestionlD.Selectedltem.Value & ", " _
    & " ' "
    & Replace (ddlAnswers.Selectedltem. Text, ""', "''")
    & " ') "
    DBInsert.Connection = DBConn
    DBInsert.Connection.Open
    DBInsert.ExecuteNonQuery()

После этого определяется, сколько раз был выбран каждый ответ на вопрос:

    DBCommand = New OleDbDataAdapter _
    ("Select: AnswerText as [Ответ], " _
    & "Count(VotelD) as [Голосов] From Votes " _
    & "Where QuestionID = " _
    & ddlQuestionlD.Selectedltem.Value _
    & " Group By AnswerText Order By " _
    & "Count(VotelD) DESC", DBConn)

Полученные сведения помещаются в объект DataSet:

    DBCoiranand.Fill(DSPageData, _
    "VotesCast")

С этим объектом связывается элемент управления DataGrid:

    dgResults.DataSc%urce = _
    DSPageData:Tables{"VotesCast").DefaultView
    dgResults.DataBind()

Элемент управления Panel, предназначенный для голосования, скрывается:

    pnlVote.Visible - False

Вместо него отображается элемент управления Panel с результатами голосования:

    pnlResults.Visible - True

Изменение кода для Access

Чтобы обеспечить выполнение рассмотренного кода при использовании приложения Access (а не SQL-сервера), необходимо изменить строку, в которой осуществляется подключение к базе данных SQL-сервера:

    DBConn - New 01eDbConnection("PROVIDER=sqloledb;"
    & Server=localhost";
    & Initial Catalog=INETC4;"
    & User ID=sa;"_
    & Password=yourpassword;"

Соединение должно устанавливаться с базой данных Access:

    DBConn = New OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;"
    & "DATA SOURCE=".
    & Server.MapPath("VlNetBook/C4/VotingBooth/" _
    & "Access/C4VotingBooth.mdb;"))

He забудьте указать правильное местоположение вашей базы данных Access.

Hosted by uCoz