Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Работа с формами VBA и сложными типами данных»




Доверь свою работу кандидату наук!
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Цель: С помощью программных средств VBA создать мини-СУБД, используя заданную вариантом структуру данных.

Постановка задачи: Программа должна уметь выполнять следующие функции:

§ при загрузке показывать заставку (сведения о программе, разработчике);

§ работать в интерактивном режиме с простым и дружественным интерфейсом;

§ вводить новые данные в СУБД;

§ осуществлять вывод данных по избранным объектам на экран в заданном порядке;

§ изменять избранные элементы выбранного объекта;

§ сохранять изменения данных в дисковом файле при завершении работы;

§ производить чтение данных из дискового файла;

§ при необходимости завершать работу без сохранения измененных данных.

 

Для следующего типа данных:

 

 

Для создания формы в VBA достаточно открыть редактор VBA и из выпадающего меню «Вставки» выбрать «UserForm», что добавить форму в существующий проект и позволит работать с формой режиме «WYSIWYG».

 

Добавление формы.

Работа с формой в режиме «WYSIWYG».

 

Программа добавления / изменения записей в БД:

 

'Записываем значения соотв. текстовых полей в соотв. ячейки листа документа

Private Sub NewAdd_Button_accept_Click()

 

Dim i As Integer

For i = 1 To 9 'в соотв. с кол/вом столбцов строки

Cells(Chosen_Cell, i) = frmNewAdd.Controls("TextBox" & i).Value 'позволяет передать значение поля в соотв. с его типом

Next i

 

Call countCurRows 'получаем текущее кол/во записей в БД

ChoiceTheCell.AddItem (countRows + 6) 'добавляем новую строку в список для добавления записи

 

End Sub

 

 

Блок схема программы.

 

Программа поиска данных в БД:

 

'Обработчик кнопки "Искать" на форме поиска

Private Sub FindAccept_Click()

 

Dim i As Integer 'итерационная пременная

Dim iValue As String 'храним ввод с экрана для "поиска по значению"

 

If FindMethod1.Value = True Then 'Если пользователь выбрал первый метод поиска

For i = 6 To countRows + 5

If i < FindFrom Then

rows(i).Hidden = True 'Скрытие ячеек исключенных при выборочном просмотре

ElseIf i > FindTo Then

rows(i).Hidden = True

End If

Next i

End If

 

If FindMethod2.Value = True Then 'Если пользователь выбрал второй метод

FindArray = Split(CustomFind.text) 'преобразуем строку введенную пользователем в массив

For i = 6 To countRows + 5

If Not "~" & Join(FindArray, "~") & "~" Like "*~" & i & "~*" Then

rows(i).Hidden = True 'Скрытие ячеек исключенных при выборочном просмотре

End If

Next i

End If

 

If FindMethod3.Value = True Then 'Если пользователь выбрал третий метод

iValue = iFind.text 'получаем введеное значение

 

'выполняем поиск по введенному значению

For i = 6 To countRows + 5

If Not Cells(i, iColumns).Value Like iValue Then

rows(i).Hidden = True

End If

Next i

End If

 

End Sub

 

 

Блок схема программы.

 

 

Программа сохранения БД в отдельный файл на диске:

 

'Сохранение записей в файл

Private Sub Workbook_BeforeClose(Cancel As Boolean)

 

Dim c As Range, r As Range

Dim output, buf As String 'используем строку в кач/ве символьного массива

 

Call countCurRows 'получаем текущее кол/во записей

buf = "A6:I" & (countRows + 5) 'устанавливаем обьем записываемых данных

 

'цикл заполнения строки

For Each r In Range(buf).rows

For Each c In r.Cells

output = output & c.Value & "," 'формируем текущую строку из значений ячеек

Next c

output = output & vbNewLine 'записываем текущую строку в массив

Next r

 

Open ThisWorkbook.Path & "\backupDB.txt" For Output As #1 'создаем файл

Print #1, output 'записываем в файл

Close 'закрываем файл

 

ThisWorkbook.Close SaveChanges:=True

 

End Sub

 

 

 

Блок схема программы.

 

Программа чтения данных из файла в БД:

 

'Читаем данные из файла

Sub ReadFromDestFile()

 

Dim buffer, str As String 'переменные для чтения из файла

Dim CellsValueArray As Variant 'массив считаных данных

 

Open ThisWorkbook.Path & "\backupDB.txt" For Input As #1 'указываем файл для чтения

 

'читаем данные пока не достигнем конца файла

Do Until EOF(1)

Line Input #1, buffer

str = str & buffer

Loop

Close #1

 

CellsValueArray = Split(str, ",") 'преобразуем строку считанных данных в массив

 

Dim i, x, y As Integer

x = 6 'начальная строка для записи в открытую книгу

y = 1 'начальный столбец записи

For i = 0 To UBound(CellsValueArray) 'записываем данные в книгу пока не выведем последний элемент массива

If y > 9 Then 'при записи в 9й столбец строки преходим в начало следующей

y = 1

x = x + 1

End If

Cells(x, y) = CellsValueArray(i) 'запись текущего значения элемента массива в ячейку

y = y + 1 'переключаем столбцы

Next i

End Sub

 

 

Блок схема программы.







Дата добавления: 2015-06-15; просмотров: 458. Нарушение авторских прав; Мы поможем в написании вашей работы!

Studopedia.info - Студопедия - 2014-2022 год . (0.026 сек.) русская версия | украинская версия