Студопедия — Работа с формами VBA и сложными типами данных»
Студопедия Главная Случайная страница Обратная связь

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

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



Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

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

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Классификация ИС по признаку структурированности задач Так как основное назначение ИС – автоматизировать информационные процессы для решения определенных задач, то одна из основных классификаций – это классификация ИС по степени структурированности задач...

Внешняя политика России 1894- 1917 гг. Внешнюю политику Николая II и первый период его царствования определяли, по меньшей мере три важных фактора...

Оценка качества Анализ документации. Имеющийся рецепт, паспорт письменного контроля и номер лекарственной формы соответствуют друг другу. Ингредиенты совместимы, расчеты сделаны верно, паспорт письменного контроля выписан верно. Правильность упаковки и оформления....

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

Ваготомия. Дренирующие операции Ваготомия – денервация зон желудка, секретирующих соляную кислоту, путем пересечения блуждающих нервов или их ветвей...

Билиодигестивные анастомозы Показания для наложения билиодигестивных анастомозов: 1. нарушения проходимости терминального отдела холедоха при доброкачественной патологии (стенозы и стриктуры холедоха) 2. опухоли большого дуоденального сосочка...

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