Читаем Обработка баз данных на Visual Basic®.NET полностью

Imports System.Data.SqlClient

В теле определения класса для формы frmArchive включите код из листинга 4.10.

Листинг 4.10. Код архивирования данных в новой таблице

Private Sub frmArchive_Load(ByVal sender As System.Object, _

 ByVal e As System.EventArgs) Handles MyBase.Load

 lstYears.Items.Add("1995")

 lstYears.Items.Add("1996")

 lstYears.Items.Add("1997")

 lstYears.Items.Add("1998")

 lstYears.Items.Add("1999")

 lstYears.Items.Add("2000")

 lstYears.Items.Add("2001")

 lstYears.Items.Add("2002")

 ' Указание значения по умолчанию.

 lstYears.SelectedIndex = 0

End Sub

Private Sub btnCancel_Click(ByVal sender As System.Object, _

 ByVal e As System.EventArgs) Handles btnCancel.Click

 Me.Close()

End Sub

Private Sub btnOK_Click(ByVal sender As System.Object, _

 ByVal e As System.EventArgs) Handles btnOK.Click

 Dim sql As String

 Dim result As Integer

 Dim records As Integer

 Dim SelectedYear As String

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

 Dim cnn As SqlConnection = New SqlConnection( _

  "server=localhost;uid=sa;database=novelty")

 Dim cmd As New SqlCommand()

 Dim trans As SqlTransaction

 ' Получение значения года.

 SelectedYear = lstYears.SelectedItem.ToString

 ' Размещение кода внутри блока Try-Catch для

 ' обработки исключительных ситуаций.

 Try

  ' Открытие объекта Connection и запуск транзакции.

  cnn.Open()

  trans = cnn.BeginTransaction

  ' Включение команды в транзакцию.

  cmd.Connection = cnn

  cmd.Transaction = trans

  ' Указание команды SQL для вставки соответствующих

  ' записей в архивную таблицу.

  sql = "SELECT * INTO tblOrder" & SelectedYear & _

   FROM tblOrder WHERE year (OrderDate) = " & SelectedYear

  ' Передача текста команды SQL в транзакцию.

  cmd.CommandText = sql

  result = cmd.ExecuteNonQuery()

  ' Отображение результатов вставки записей в архивную таблицу.

  If result > 0 Then

   records = result MessageBox.Show(records & _

    " records inserted successfully into tblOrder" & SelectedYear)

  Else

   MessageBox.Show( _

    "No records inserted into tblOrder" & SelectedYear)

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

   ' не нужна и транзакцию нужно откатить.

   trans.Rollback()

  End If

  If records > 0 Then

   ' Команда SQL для удаления соответствующих

   ' записей из текущей таблицы.

   sql = "delete FROM tblOrder WHERE year (OrderDate) = " _

    & SelectedYear

   ' Эта команда находится в той же транзакции.

   cmd.CommandText = sql

   result = cmd.ExecuteNonQuery()

   ' Показать результаты удаления записей.

   If result = records Then

    MessageBox.Show(records & _

     " records deleted successfully")

    ' Все действия успешно выполнены, можно фиксировать транзакцию.

    trans.Commit()

   Else

    MessageBox.Show("No records deleted!")

   End If

  Else

   ' Никаких действий.

  End If

Перейти на страницу:

Похожие книги

Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT