Смекни!
smekni.com

Разработка прикладного программного обеспечения деятельности отдела аренды ЗАО "Сириус" (стр. 2 из 2)

//Выбор базы

Private Sub UserForm_Activate()

//Добавление базы из папки расположения AutoCAD

TextBox1.Text = ThisDrawing.Path + "\mydatabase.accdb"

//Присвоение переменной пути файла

path_db = TextBox1.Text

End Sub

//Запись в ComboBox Имени пользователя

Private Sub ComboBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

ComboBox1.Text = "Илья"

End Sub

//Обработчик нажатия на OptionButton

Private Sub OptionButton1_Click()

// Меняем значение переменной на ложь. Для второй OptionButton тоже //самое, только присваиваем значение истина

chec = False

End Sub

Private Sub CommandButton2_Click()

//Присвоение переменным значений полей

a = TextBox2.Text

n = ComboBox1.Text

//проверка условия входа базу

If chec = True Then

//Проверка пароля для дальнейшей работы

If (a = 11111) And (n = "Илья") Then

//Установка соединения с базой

Set ThisDrawing.adoConnect = New ADODB.Connection

With ThisDrawing.adoConnect

//Подключение провайдера для работы с базами и привязка базы к чертежу

.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & TextBox1.Text

.Open

End With

Unload Me

UserForm3.Show

Else

// Если пароль введён не верно то выводится сообщение

MsgBox "Возможно пользователь или пароль введёны не правильно!!! Пожалуйста введите пользователя и пароль!!!", vbOKOnly + vbExclamation

End If

Else

Unload Me

End If

End Sub

Форма для регистратуры.

//Объявление глобальных переменных

Private Sub UserForm_Activate()

// Установка соединения

Set ThisDrawing.adoConnect = New ADODB.Connection

With ThisDrawing.adoConnect

.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisDrawing.Path & "\rt.accdb"

.Open

End With

//Установка переменной выборки базы данных

Set record = New ADODB.Recordset

record.ActiveConnection = ThisDrawing.adoConnect

With record

//Текст запроса к базе

//Остальные запросы выполнены по аналогии с той лишь разницей, что //переменные будут другие, поэтому дальше текст запроса рассматривать не //будем

.Source = "Select * from Arendator where CustomerID =1"

.Open

End With

//Функция обновления выведенных данных прописана ниже

print_i

End Sub

Public Sub print_i()

//Присвоение текст боксу значения ячейки выбранной из базы. Код //аналогичен для всех выводов

TextBox1.Text = record!CustomerID

//Определение по логическому полю физическое лицо или юридическое

If (record!CustomerType = True) Then

TextBox2.Text = "Физическое"

Else

TextBox2.Text = "Юридическое"

End If

//Передача переменной Формы 4 параметра выборки для дальнейшего //использования

UserForm4.aa = record1!CustomerID

End Sub

//Переход по базам осуществляется аналогично выполнению запроса в //активации формы. Опишем лишь интересные моменты

//Если выборка достигает конца записи, то параметр i обнуляется

If record.EOF = True Then

i = 0

CommandButton5_Click

//Иначе продолжается выборка по запросам

Else

With record

s = i + 1

//передача параметра s в качестве переменной запроса

.Source = "Select * from Rooms where CustomerID =" & s

.Open

End With

//Далее идут запросы

//Обновление формы

print_i

i = i + 1

End If

End Sub

По большому счёту весь код данных форм практически идентичен предыдущему в силу того, что используются запросы с другими параметрами и из других таблиц, вот и все отличия.

Форма управления слоями

Для того, чтобы в объекте ListBox1 появился список слоёв, необходимо методе инициализации формы прописать следующие строки:

Private Sub UserForm_Initialize()

//Данный цикл выводит существующие слои в ListBox

For I = 2 To ThisDrawing.Layers.Count - 1

ListBox1.AddItem (ThisDrawing.Layers.Item(I).Name)

Next I

End Sub

В результате выполнения данного кода объект ListBox1 будет заполняться названиями существующих слоёв.

В обработчике кнопки «Отключить слой» пропишем следующие строки:

Private Sub CommandButton1_Click()

//проверка условия выбранного поля

If ListBox1.ListIndex = -1 Then

MsgBox "Выберите слой"

Else

//метод для отключения слоя

ThisDrawing.Layers.Item(ListBox1.Text).LayerOn = False

End If

//обновление формы

UserForm1.Refresh

End Sub

Этот участок кода отвечает за выключение выбранного слоя.

Аналогичный код будет и для кнопки «Включить слой». Разница будет лишь в методе:

ThisDrawing.Layers.Item(ListBox1.Text).LayerOn = True

Теперь следует рассмотреть код нажатия по блокам в среде AutoCAD.

//Объявление глобальных переменных

Public adoConnect As ADODB.Connection

Public path_db As String

Public ID As Variant

Public ID_A As Integer

Public a As String

Public n As String

//При загрузке приложения автоматически открывается форма //приветсвтия

Private Sub AcadDocument_Activate()

UserForm6.Show

End Sub

//Обработчик нажатия на блок

Private Sub AcadDocument_SelectionChanged()

//определение локальных переменных

Dim objGen As AcadEntity

Dim i As Integer

//Установка соединения и подключение провайдера

Set ThisDrawing.adoConnect = New ADODB.Connection

With ThisDrawing.adoConnect

.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisDrawing.Path & "\rt.accdb"

.Open

End With

//Именно в этой части кода осуществляется передача данных //переменной objGen от блоков чертежа

If ThisDrawing.PickfirstSelectionSet.Count > 0 Then

Set objGen = ThisDrawing.PickfirstSelectionSet.Item(ThisDrawing.PickfirstSelectionSet.Count - 1)

//Проверка на принадлежность блоку

If objGen.ObjectName = "AcDbBlockReference" Then

Select Case objGen.Name

//По имени нажатого блока определяются параметры которые нужно //передать дальше для выполнения запросов

Case 1

ID_A = 10

//Передача параметров переменной формы 4

UserForm4.aa = ID_A

UserForm4.Show

Case 2

ID_A = 70

UserForm5.aa = ID_A

UserForm5.Show

Case 3

UserForm3.Show

End Select

End If

//Снятие всех выделений

For i = 0 To ThisDrawing.PickfirstSelectionSet.Count - 1

ThisDrawing.PickfirstSelectionSet.Item(i).Highlight (False)

ThisDrawing.PickfirstSelectionSet.Item(i).Update

Next i

ThisDrawing.SendCommand (".Выбрать" & vbCr)

End If

End Sub

Список литературы

1. Гурвиц Г.А. Microsoft Access 2007. Разработка приложений на реальном примере.- СПб.: БХВ-Петербург, 2007. – 672 с.: ил. + CD-ROM

2. AutoCAD 2007. Видео курс.- СПб.: БХВ-Петербург, 2007.