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

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

Работа с формами 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; просмотров: 569. Нарушение авторских прав; Мы поможем в написании вашей работы!




Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


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


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

Неисправности автосцепки, с которыми запрещается постановка вагонов в поезд. Причины саморасцепов ЗАПРЕЩАЕТСЯ: постановка в поезда и следование в них вагонов, у которых автосцепное устройство имеет хотя бы одну из следующих неисправностей: - трещину в корпусе автосцепки, излом деталей механизма...

Понятие метода в психологии. Классификация методов психологии и их характеристика Метод – это путь, способ познания, посредством которого познается предмет науки (С...

Гидравлический расчёт трубопроводов Пример 3.4. Вентиляционная труба d=0,1м (100 мм) имеет длину l=100 м. Определить давление, которое должен развивать вентилятор, если расход воздуха, подаваемый по трубе, . Давление на выходе . Местных сопротивлений по пути не имеется. Температура...

Огоньки» в основной период В основной период смены могут проводиться три вида «огоньков»: «огонек-анализ», тематический «огонек» и «конфликтный» огонек...

Упражнение Джеффа. Это список вопросов или утверждений, отвечая на которые участник может раскрыть свой внутренний мир перед другими участниками и узнать о других участниках больше...

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