Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
7
Добавлен:
16.12.2013
Размер:
89.09 Кб
Скачать

Передача результаты SQL-запроса средствами языка программирования для дальнейшей математической обработки в Excel

1. Создать элементарный фрагмент базы данных

2. Создать на форме необходимые объекты (поле списка, 3 кнопки, элемент управления CommandDialog).

3. Ввести код, данный ниже.

4. Подключить необходимые библиотеки.

5. Подключить свойство Multiselect=2 lдля поля списка

6. стартовать проект

7. в поле списка маркировать поля, которые необходимо передать в приложение Excel для дальнейшей математической обработки – щелчок на второй командной кнопке.

8. подтвердить желание сохранить в файл, сделать щелчок ОК в окне MsgBox, ввести имя файла.

9. открыть этот файл, просмотреть таблицу.

Option Explicit

Private Sub cmd1_Click()

Dim WS As Workspace, db As Database

Dim tdef As TableDef, i As Integer

Set WS = DBEngine.Workspaces(0)

Set db = WS.OpenDatabase("A:\Kursovik.mdb")

Set tdef = db.TableDefs("svodnia")

For i = 0 To tdef.Fields.Count - 1

lst.AddItem tdef.Fields(i).Name

Next i

db.Close: WS.Close

End Sub

‘Здесь программируется передача таблицы из Access в excel. Сначала объявляются новые объекты Excel, затем – DAO.

Private Sub cmd2_Click()

‘Объект Excel.Application содержит коллекцию WorkBooks

Dim xla As New Excel.Application

‘Объект WorkBook содержит коллекцию Worksheet

Dim xlb As New Excel.Workbook

‘Объект Worksheet содержит ячейки

Dim xls As New Excel.Worksheet

‘Объект Range – непрерывный набор ячеек

Dim xlr As Excel.Range

Dim WS As Workspace, db As Database, rs As Recordset

Dim i As Integer, j As Integer, k As Integer, rc As Integer

Dim r As Integer, c As Integer

‘Описание массива полей таблицы базы данных, выделенных пользователем в ‘поле lst после старта проекта

Dim massFields() As String

‘определить выделенные пользователем в поле списка lst поля (таблицы базы ‘данных) для переноса в Excel и определить размерность массива massFields() ‘для их (выделенных полей) хранения (ReDim – изменить размрность массива)

For i = 0 To lst.ListCount - 1

If lst.Selected(i) = True Then j = j + 1

Next i

ReDim masFields(j - 1)

‘Занести данные в массив massFields(j) из поля списка (свойство ListCount ‘содержит число элементов списка)

j = 0

For i = 0 To lst.ListCount - 1

If lst.Selected(i) = True Then masFields(j) = lst.List(i): j = j + 1

Next I

‘Создать рабочее пространство, открыть базу данных

Set WS = DBEngine.Workspaces(0)

Set db = WS.OpenDatabase("a:\Kursovik.mdb")

‘Создать объекты Excel (экземпляр книги и листа) и активизировать лист Excel

Set xlb = xla.Workbooks.Add

Set xls = xlb.Worksheets.Add

xls.Activate

‘В цикле For Next перебрать выбранные пользователем и занесенные ранее в ‘массив поля. Для каждого поля формируется SQL-запрос. Далее ‘просматривается весть набор записей ля определения количества ‘соответствующих записей.

For i = 0 To UBound(masFields)

Set rs = db.OpenRecordset("select" & "[" & masFields(i) & "]from " & "svodnia")

rs.MoveLast: rs.MoveFirst

‘Выбрать номера столбцов таблицы Excel, где будут размещены выбранные ‘данные. В первую строку поместить названия полей. Ячейки первой строки ‘делаются объектом xlr и выделяются.

c = i + 1

j = 0

xls.Cells(1, c) = masFields(i)

Set xlr = xls.Cells(1, c)

xlr.Select

xlr.Font.Bold = True

‘ограничить набор данных некоторым числом (например, 10)

If rs.RecordCount > 10 Then rc = 10 Else rc = rs.RecordCount

‘В тот же столбец таблицы (аргумент с) перенести все записи. Далее (цикл For ‘Next) – возврат к началу цикла для перебора всех полей

For r = 2 To rc + 1

xls.Cells(r, c) = rs(masFields(i))

rs.MoveNext

Next r

Next I

‘Сообщение пользователю о передаче данных в Excel, вопрос о необходимости ‘сохранения их в файле, ввод в диалоговом режиме имени файла, сообщение о ‘сохранении/несохранении файла, закрыть объект – приложение Excel

If MsgBox("I have transported the Access data " & "to an Excel." & vbCrLf & vbCrLf & "Do you want to save?", vbQuestion & vbYesNo) = vbYes Then

cdlg.FileName = ""

cdlg.ShowSave

xls.SaveAs (cdlg.FileName)

MsgBox "Data has been saved to file:" & vbCrLf & vbCrLf & cdlg.FileName, vbInformation, "Data has been saved"

Else

MsgBox "Data has not been saved!", vbCritical, "Data has not been saved!"

End If

xlb.Saved = True

xla.Quit

End Sub

Репликация и синхронизация баз данных.

Реплицировать означает тиражировать. Если учреждение располагает сетью, тогда целесообразно уметь основную копию базы данных (главная реплика) в главном подразделении фирмы и несколько ее копий (реплик) в других помещениях/ на других территориях. Пользователи баз данных на других территориях в процессе работы делают изменения таблиц в своих копиях (репликах). Позднее каждый должен внести сделанные им изменения в главную реплику и получить информацию об изменениях, сделанных другими пользователями. Это – процесс синхронизации – приведение репликационного набора в состояние, когда реплики одинаковы.

Последовательность действий:

1. Сделать ссылку на библиотеку Microsoft Jet and Replication Objects 2.1 Library

2. Создать на форме необходимые объекты

3. Ввести код процедур Command1_click(), Command2_click() и Command3_click():

Private Sub Command1_Click() ‘ создание главной реплики

Dim dbHaupt As Database, replicaProp As Property

Set dbHaupt = openDatabase("a:\Курсовая97bc.mdb", True)

Set replicaProp = dbHaupt.CreateProperty("Replicable", dbText, "T")

dbHaupt.properties.Append replicaProp

dbHaupt.properties("replicable") = "T"

End Sub

Private Sub Command2_Click() ‘ создание реплики

Dim dbHaupt As Database

Set dbHaupt = openDatabase("a:\Курсовая97bc.mdb", True)

Set replicaProp = dbHaupt.CreateProperty("Replicable", dbText, "T")

dbHaupt.MakeReplica "a:\реплика1.mdb", "Replica of" & "dbHaupt"

dbHaupt.Close

End Sub

Private Sub Command3_Click() ‘ синхронизации

Dim dbHaupt As Database

Set dbHaupt = openDatabase("a:\Курсовая97bc.mdb", True) ‘ открыть базу данных – главную реплику

dbHaupt.Synchronize "a:\реплика1.mdb" ‘ копирование изменений

End Sub

4. стартовать первую процедуру

5. стартовать вторую процедуру

6. поочередно открыть базы данных (главную реплику и реплику) в любом приложении, предназначенном для работы с базами данных и сделать изменения в одной записи какой-либо таблицы.

7. стартовать третью процедуру

8. после остановки выполнения проекта загрузить реплику и главную реплику, наблюдать изменения.

Клавиатура и мышь обеспечивают взаимодействие пользователя с операционной системой и приложением. Клавиатур – средство ввода данных. Мышь позволяет пользователю управлять средой разработки.

Клавиатура, события.

События, генерируемые клавиатурой, получает объект, имеющий фокус (форма получает событие, если ни один объект не имеет фокуса).

События, связанные с клавиатурой:

KeyPress – вызывается только при нажатии клавиш, имеющих ANSI–код. Возвращается код АNSI нажатой клавиши, синтаксис: control_KeyPress (KeyAscii as Integer)

KeyDown – возникает при нажатии любой клавиши, синтаксис: Control_KeyDown (KeyCode as Integer, Shift as Integer)

KeyUp - возникает при отпускании любой клавиши, синтаксис: Control_KeyUp (KeyCode as Integer, Shift as Integer)

ANSI (Американский национальный институт стандартов) используется для обозначения кодов для 256 символов.

Property Let, Property Get

Процедура Property состоит из последовательности инструкций, позволяющих создавать собственные свойства и работать с ними. Существует 3 типа процедур Property: Let Set Get.

Property let – присваивает значение свойству. Property Get – возвращает значение свойства.

Синтаксис процедур

[Public | Private] [Static] property {Get | Let| Set} имя [( список аргументов )] [As тип]

инструкция 1

инструкция к

Public/Private – процедура доступна для всех процедур во всех модулях/ для других проце6дур только того модуля, в котором она описана.

Static – локальные переменные процедуры сохраняются в промежутках времени между вызовами процедуры

Имя – имя процедуры

Список аргументов – список переменных, передаваемых в процедуру при ее вызове

Инструкции Property Let описывают текст программы, составляющей процедуру Property Let, которая присваивает значение свойству, аргументы могут передаваться ByRef и ByVal. Инструкции Property Get описывают текст программы, составляющей процедуру Property Get, считывающую значение свойства, аргументы могут передаваться ByRef и ByVal.

Объекты файловой системы

Пользователь имеет возможность использовать объекты файловой системы с их свойствами, методами и событиями; т. о. Обеспечивает возможность работы с файлами, каталогами, дисковыми устройствами.

  1. Объект «FileSystemObject» - обеспечение доступа к другим объектам и вывода информации о файловой системе

  2. Объект «TextStream» - обеспечение чтения и записи текстовых файлов

  3. «Drive» - обеспечение доступа к дисковым устройствам

  4. «Folder» - обеспечение с использованием методов объекта доступа к каталогам и работы с ними

  5. «File» - обеспечение работы с файлами

Для использования объектов нужно подключить DLL, содержащие эти объекты. Функции DLL не внедряются в приложение. Они представляют собой откомпилированный код (например – диалоговые окна Открыть/Сохранить, выводимые при открытии/сохранении объектов; эти окна вызываются из DLL, поэтому ими можно пользоваться в любой программе). Для подключения – меню разработать Ссылки  щелчок на флажке Microsoft Scripting Runtime (SCRUN.DLL)

Доступ к данным: использование элементов управления DATA и TEXTBOX

Существуют разные технологии доступа к данным: использование Диспетчера связывания данных, использование элементов управления, использование объектов доступа к данным – DAO, программный интерфейс, ADO – объекты данных ActiveX (ADO обеспечивает, например, возможность в режиме клиент – сервер отключения от баз данных набора записей, который после работы с ним/изменений может быть возвращен в базу данных), OLEDB – механизм подключения к таким базам данных, как Access, SQL, Server, Exchange и др.

Элемент управления DATA обеспечивает связь проекта Visual Basic с базами данных. Свойства для реализации связи:

Свойство

Пример значения свойства

Connect

Access

DatabaseName

A:\Илюха2.mdb ‘имя базы данных

RecordSource

CDROM ‘имя таблицы

Для отображения/редактирования данных в простейшем случае может быть использовано текстовое поле, поле списка и т. д. При этом используются следующие свойства:

Свойство

Пример значения свойства

DataSource

Data1’элемент управления с его номером

DataField

Hersteller’имя поля таблицы

ListBox свойства, синтаксис, перемещение элементов списка

В режиме конструирования можно создать список, используя окно свойств (используется свойство List, при этом первый элемент списка имеет индекс 0). В процессе выполнения можно выбирать элементы списка (расширение возможностей программирования), можно добавлять/удалять элементы списка. Использование массивов списков предоставляет большие возможности программисту. Основное событие – Click, создаваемое при маркировке щелчком элемента списка.

  1. Создание элементов списков и комбинированного списка в режиме выполнения процедуры

  2. Ввести код:

Private Sub List1_DbClick()

Label1= “перемещение элементов списка”

List2.AddItem List1’включить элемент в другой список

List1.RemoveItem List1.ListIndex’удалить строку из данного списка

End Sub

Соседние файлы в папке Шпоры по КП за 1 и 2 семестры