
- •7.050105 “Банківська справа”, 7.050104 “Фінанси”
- •Донецьк 2005
- •1 Створення програм у середовищі Visual Basic 6.0. Основні поняття - об'єкт, властивість, подія.
- •1.1 Візуальне створення програми
- •1.2 Створення вихідного коду
- •1.3 Контрольні запитання
- •1.4 Практичні завдання
- •1.5 Тест
- •2 Основні оператори мови
- •2.1 Організація розгалужених обчислювальних процесів
- •2.1.1 Умовний оператор If
- •If умова Then
- •2.1.2 Оператор варіанти Select Case
- •2.2 Організація циклічних обчислювальних процесів
- •2.2.1 Оператор циклу For . . . Next
- •Частина початкового рядка циклу Step n може бути пропущена, коли крок зміни перемінної циклу дорівнює одиниці. Приклад використання циклу For … Next
- •2.2.2 Оператор циклу Do While . . . Loop
- •2.2.3 Оператор циклу Do. . . Loop While
- •2.3 Контрольні запитання
- •2.4 Практичні завдання
- •2.5 Тест
- •3 Використання елементів управління в програмах. Робота з формами. Поняття методу
- •3.1 Елементи управління - смуги прокручування, перемикачі, прапорці, групи, списки, що розчиняються
- •3.2 Робота з формами. Поняття методу
- •Приклад програми
- •3.2 Контрольні запитання
- •3.4 Практичні завдання
- •3.5 Тест
- •4 Управління програмою за допомогою меню. Робота з масивами елементів управління, змінних
- •4.1 Управління програмою за допомогою меню
- •4.2 Робота з масивами елементів управління, змінних
- •4.3 Контрольні запитання
- •4.4 Практичні завдання
- •Картка кількісного обліку товарів
- •Аналіз виконання плану товарообігу за структурою
- •Відомість розрахунків покупців по кредитах
- •Відомість результатів інвентаризації товарів
- •Рахунок-фактура
- •Відомості про вибірку фондів по плодоовочевим культурам за декаду
- •Відомість залишків основних фондів
- •Реєстр листків по тимчасовій непрацездатності
- •Відомість відрахувань із зарплати
- •Меню на відпустку харчування співробітникам столової
- •Аналіз забезпеченості кадрами
- •4.5 Тест
- •5 Розробка програм з використанням підпрограм – процедур і функцій, вікон повідомлень
- •5.1 Підпрограми – процедури і функції
- •5.2 Вікна повідомлень
- •Коди сполучень кнопок у вікні повідомлення
- •Коди значків у вікні повідомлення
- •Приклад програми з використанням підпрограм, вікон повідомлень
- •5.3 Контрольні запитання
- •5.4 Практичні завдання
- •5.5 Тест
- •6 Робота з файлами
- •6.1 Файли довільного доступу
- •6.2 Файли послідовного доступу
- •6.3 Бінарні файли
- •Приклад виконання програми роботи з файлом
- •5.4 Контрольні запитання
- •5.5 Практичні завдання Завдання №1
- •Завдання №2
- •Завдання №3
- •7 Використання Visual Basic for Application у Microsoft Excel
- •7.1 Основні поняття
- •7.2 Редактор vba
- •7.3 Створення функцій користувача
- •7.4 Автоматизація розрахунків на робочому листі
- •7.5 Робота з формами у середовищі vba
- •7.6 Контрольні запитання
- •7.7 Практичні завдання
- •7.8 Тест
- •Література
- •7.050105 “Банківська справа”, 7.050104 “Фінанси”
6 Робота з файлами
6.1 Файли довільного доступу
Файл довільного доступу містить записи однакового розміру. Кожний запис може включати поля, в яких вміщуються дані. Наприклад, записи файлу з відомостями про співробітників Employees.txt підприємства можуть вміщувати дані про прізвище та ініціали робітника (поле довжиною 15 байт), освіта (поле у 4 байти). Кожний запис буде мати фіксовану довжину, вміщувати два поля, кожне з яких також має фіксований розмір.
Запис 1 |
Запис 2 |
Запис 3 і т.д. |
|||||||||||||||||||||||||||||||||||||||||||||||
поле 1 |
|
поле 2 |
|
поле 1 |
|
поле 2 |
поле 1 |
||||||||||||||||||||||||||||||||||||||||||
І |
в |
а |
н |
ч |
е |
н |
к |
о |
М |
. |
Ф |
. |
|
|
в |
и |
щ |
. |
К |
р |
а |
в |
ч |
е |
н |
к |
о |
В |
. |
Б |
. |
|
|
с |
е |
р |
. |
|
|
|
|
|
Для доступу до файлу його слід розчинити оператором Open:
Open "FileName" For Random As FileNumber Len = RecordLength
FileName - ім'я файлу, можна задавати повне ім'я файлу з маршрутом пошуку (наприклад, "C:\Data.txt");
Random - визначає, що файл буде розчинено в режимі довільного доступу;
FileNumber - номер файлу, ціле число в діапазоні від 1 до 511, яке визначає номер незайнятого в системі в дану мить файлу, так званий дескриптор файлу;
RecordLength - визначення довжини запису файлу.
Наприклад, щоб розчинити файл Employees.txt у режимі довільного доступу коли відомо, що номер файлу 5 не зайнято ніяким іншим файлом, можна виконати команду:
Open "Employees.txt" For Random As 5 Len = 19
Якщо невідомо, який номер файлу в дану мить є незайнятим, можна скористатися функцією FreeFile, яка повертає номер незайнятого файлу.
При записі, зчитуванні даних у файл послідовного доступу, коли один запис вміщує декілька полів, доцільно використовувати тип - запис. Змінна з типом даних запис буде вміщувати дані, які слід записати у файл, або навпаки приймати дані, що прочитано з файлу. У випадку, коли важко визначити довжину запису при роботі з різними типами даних, можна використовувати функцію Len(), яка повертає довжину змінної.
Наприклад, для роботи з файлом Employees.txt буде використовуватись змінна PZ, яка має тип Person. Тип Person оголошено у вікні модуля так:
Type Person
Priz As String * 15
Osv As String * 4
End Type
Для розчинення файлу Workers.txt можна виконати таку послідовність дій:
DZ = Len(PZ)
VF = FreeFile
Open "Employees.txt" For Random As VF Len = DZ
Якщо файл у поточному каталозі не буде знайдено, то створюється новий файл з ім'ям Employees.txt.
При розчинені, створенні файлу довільного доступу обов’язково існує запис файлу з номером 1. Для визначення загальної кількості записів у файлі можна використовувати функцію FileLen(), яка повертає розмір файлу в байтах. Наприклад, щоб привласнити змінній ZKZ значення, яке відповідає загальній кількості записів у файлі, можна виконати таку дію:
ZKZ = FileLen("Employees.txt") / DZ
У коді програми обов'язково слід перевіряти, щоб звернення до записів файлу було коректним, номер запису, до якого здійснюється звернення, повинен бути у діапазоні від першого до останнього запису файлу.
Для запису даних у файл використовується оператор Put
Put # FileNumber, <номер запису файлу>, <змінна>
Якщо <номер запису файлу> відповідає будь-кому з існуючих записів розчиненого файлу, то вміст запису буде змінено на нове значення - значення змінної, яка може бути одного зі стандартних типів, або типу - запис. Для того, щоб додати до файлу новий запис, слід звернутися до запису з номером: <останній запис> + 1.
Наприклад, щоб додати до файлу Employees.txt новий запис про співробітника Матвієнко Л.І. з вищою освітою можна виконати дії:
PZ.Priz = "Матвієнко Л.І."
PZ.Osv = "вищ."
Put #VF, ZKZ + 1, PZ
Зчитування даних з файлу довільного доступу виконується оператором Get:
Get # FileNumber, <номер запису файлу>, <змінна>
Таким чином, можна прочитати будь-який запис файлу в змінну, зазначивши номер запису.
Наприклад, якщо оголосити масив змінних PersZap для зчитування всієї інформації з файлу, можна прочитати дані всього файлу так:
For i = 1 To ZKZ
Get #VF, i, PersZap(i)
Next
При зчитуванні даних з файлу може стати у нагоді функція Eof() (від End of file), яка повертає значення True, якщо досягнуто кінця файлу, і False у зворотному випадку. Прочитати усі записи файлу доки не буде досягнуто кінця файлу можна так:
i = 1
Do While Not EOF(VF)
Get #VF, i, PersZap(i)
txtPriz(i - 1).Text = PersZap(i).Priz
txtOsv(i - 1).Text = PersZap(i).Osv
i = i + 1
Loop
Після виконання операцій з файлом його обов'язково слід зачинити оператором Close:
Close # FileNumber
Знищити записи файлу довільного доступу безпосередньо неможливо. Щоб виконати цю операцію, слід:
Створити тимчасовий файл у форматі, який відповідає формату файлу, що вміщує записи, які треба знищити.
Переписати у тимчасовий файл усі записи, крім тих, що знищуються.
Зачинити файл - джерело даних, знищити його оператором
Kill "FileName"
Зачинити тимчасовий файл, перейменувати його оператором
Name "OldName" As "NewName"
Наприклад, щоб знищити п'ятий запис файлу Employees.txt можна виконати такі дії:
NF1 = FreeFile |
Розчиняється файл Employees.txt |
Open For "Employees.txt" Random As NF1 Len = 19 |
|
NF2 = FreeFile |
Створюється тимчасовий файл Employees.tmp |
Open "Employees.tmp" For Random As NF1 Len = 19 |
|
KZZ = FileLen("Employees.txt") / 19 |
Визначається кількість записів файлу. |
i = 1 |
|
n = 1 |
|
Do While i <= KZZ |
Цикл діє доки і менш або рівно кількості записів файлу |
If i <> 5 Then |
Якщо обробляється не п'ятий запис файлу, то |
Get #NF1, i, PZ |
виконується зчитування і-го запису файлу Employees.txt у змінну PZ |
Put #NF2, n, PZ |
записується n-ий запис у файл Employees.tmp зі змінної PZ |
n = n +1 |
n збільшується на 1 |
End If |
Завершується оператор If |
i = i + 1 |
і збільшується на 1 |
Loop |
кінець циклу - оброблено всі записи файлу Employees.txt |
Close #NF1 |
Зачиняється файл Employees.txt |
Kill "Employees.txt" |
Знищується файл Employees.txt |
Close #NF2 |
Зачиняється файл Employees.tmp |
Name "Employees.tmp" As "Employees.txt" |
Перейменовується файл Employees.tmp у Employees.txt |