- •5.05150104 "Дизайн друкованої продукції"
- •Урок 8. Запис і читання даних
- •Робота з ascii -файлами
- •Мал. 8.1. Ascii - файл з роздільниками.
- •Послідовний доступ
- •Мал. 8.2. Зразок послідовного файлу.
- •Мал. 8.3. Перегляд результатів.
- •Довільний доступ
- •Двійковий доступ
- •Проста програма шифрування
- •Мал. 8.4. Запис в текстовому файлі.
- •Мал. 8.5. Форма для програми шифрування.
- •Мал. 8.6. Стандартне діалогове вікно.
- •Елементи даних
- •Використання елементу даних
- •Властивості елементу даних
- •Мал. 8.8. Властивості елементу даних
- •Анатомія бази даних
- •Створення баз даних в Visual Data Manager
- •Мал. 8.9. Вікно бази даних із розширеними властивостями
- •Створення таблиці
- •Конструювання таблиці
- •Мал. 8.10. Діалогове вікно Table Structure.
- •Створення полів
- •Мал. 8.11. Діалогове вікно AddField.
- •Введення даних
- •Створення запиту
- •Мал. 8.12. Діалогове вікно Query Builder.
- •Мал. 8.13. Результати запиту.
- •Первинні ключі
- •Лічильники
- •Числові поля
- •Грошові поля
- •Логічні поля
- •Поля Memo
- •Поля дати/часу
- •Зміна таблиці
- •Технологія ado (ActiveX Data Objects)
- •Мал. 8.14. Моделъ ado.
- •Використання елементу даних ado
- •Мал. 8.15. Діалогове вікно сторінок властивостей елементу даних ado
- •Puc. 8.16. Вибір провайдера
- •Мал. 8.17. Вибір файлу бази даних
- •Мал. 8.18. Завдання властивості RecordSource
- •Використання об'єктів підключення і набору записів ado
- •Puc. 8.19. Створення посилання на бібліотеку типів ado
- •Додавання записів
- •Оновлення записів
- •Видалення записів
- •Що нового ми дізналися?
- •9 Урок. Друкування
- •Виведення даних на друкування
- •Метод Print
- •Перегляд значень у вікні безпосередніх обчислень
- •Перегляд помилок у вікні безпосередніх обчислень
- •Мал. 9.1. Вікно безпосередніх обчислень з інформацією про помилку.
- •Виправлення помилки
- •Метод PrintForm
- •Колекція Printers
- •Мал. 9.2. Виведення вмісту колекції Printers. Використання Crystal Reports в Visual Basic
- •Мал. 9.4. Режим конструктора в Crystal Reports Установка Crystal Reports Pro
- •Створення звіту
- •Мал. 9.6. Зв'язки між таблицями
- •Мал. 9.7. Вкладка Fields
- •Puc. 9.8. Вибір поля для сортування
- •Мал. 9.9. Вкладка Total Мал. 9.10. Фільтрація записів в звіті
- •Мал. 9.11. Вибір стилю звіту
- •Мал. 9.12. Готовий звіт
- •Мал. 9.13. Режим конструювання
- •Використання звіту в додатку
- •Мал. 9.14. Звіт в режимі конструювання. Мал. 9.15. Діалогове вікно Property Pages для Crystal Reports 4.6.
- •Мал. 9.16. Додавання елементу Crystal Report.
- •Мал. 9.17. Виведення звіту з додатка. Друкування початкового тексту програми
- •Мал. 9.18. Діалогове вікно Print. Діалогове вікно Print
- •Перегляд результатів
- •Розшифровка лістингу
- •Що нового ми дізналися?
Довільний доступ
Довільний доступ також застосовується для витягання даних з ASCII - файлів, проте в порівнянні з послідовним доступом він відрізняється більшою гнучкістю. Довільний доступ дозволяє у будь-який момент перейти до будь-якої позиції файлу і прочитати необхідні дані. Що в результаті відбувається більше схоже на операції з базою даних, чим на роботу з послідовним файлом. Крім того, довільний доступ прискорює звернення до даних, оскільки при нім задається конкретна позиція файлового покажчика усередині файлу. Щоб відкрити файл для довільного доступу, задайте параметр Random:
Open "C:\data\test.txt" For Random As FileNo Len=10
Перш ніж задавати параметр Len, необхідно визначити довжину кожного рядка даних в символах. Рядок даних називається записом (по аналогії із записами баз даних). У цьому розділі використовуватиметься саме цей термін. Припустимо, кожен запис містить інформацію про деяку людину - прізвище, ім'я і короткий опис. Усі ці параметри можна об'єднати в один рядок і записати у файл, але це утруднить подальше читання даних і їх перетворення в осмислений формат. Наприклад, якщо скористатися наступним фрагментом:
Private Sub SaveFile()
Dim FileNo As Integer
Dim RecNo As Integer
Dim FName As Integer
Dim LName As Integer
Dim Lineout As Integer
FName = "Джейн"
LName = "Доуу"
Desc = "Чоловіка Джона Доуу"
LineOut = LName & FName & Desc
FileNo = FreeFile
RecNo = 1
Open "C:\test.txt" For Random As FileNo
Put #FileNo, RecNo, LineOut
Close FileNo
End Sub
та прочитаний запис виглядатиме так:
ДоуДжейн супруга Джона Доуу
Негарно! До того ж було б нераціональне писати код для витягання імен з цього рядка, оскільки у різних людей імена мають різну довжину. Замість цього в подібній ситуації слід оголосити свій власний тип змінної за допомогою ключових слів Type..End Type.
Оператор Type призначений для визначення нестандартних типів змінних. Він особливо корисний в ситуаціях на кшталт тієї, що описана вище. Проте перед тим, як використовувати оператор Type, необхідно переконатися, що в проекті є присутній хоч би один програмний модуль. Visual Basic не дозволяє оголошувати типи змінних в модулях форм. Отже, новий тип змінних має бути оголошений в секції(Declarations) програмного модуля. Додайте наступний фрагмент:
Type UserInfoRecord
LName As String * 15
FName As String * 15
Desc As String * 50
End Type
і приведіть процедуру форми до наступного виду:
Private Sub SaveFile()
Dim FileNo As Integer
Dim RecNo As Integer
Dim usr As UserInfoRecord
usr.FName = "Джейн"
usr.LName = "Доуу"
usr.Desc = "Чоловіка Джона Доуу"
FileNo = FreeFile
RecNo = 1
Open "C:\test.txt" For Random As FileNo Len = 80
Put #FileNo, RecNo, usr
Close FileNo
End Sub
Зараз я коротко поясню сенс оператора Type. Щоб створити тип змінної, слід вставити оголошення декількох змінних всередину конструкції Type..End Type. Тип, створений в нашому прикладі, ділиться на три самостійні строкові змінні - LName, FName і Desc. Зверніть увагу на те, що при оголошенні змінної вказується її довжина. LName і FName визначаються як строкові змінні з максимальною довжиною 15 символів, а довжина Desc може досягати 50 символів. Якщо скласти разом усі довжини рядків-компонентів, виходить 80 символів. Оскільки у файл записуватиметься саме ця змінна, сумарна довжина співпадає з розміром запису.
Щоб скористатися змінній типу User.InfoRecord, необхідно оголосити її з ключовим словом Dim, як і будь-яку іншу змінну. Тим самим ви повідомляєте Visual Basic, до якого типу вона відноситься. Потім можна звертатися до будь-якої з внутрішніх змінних, вказавши ім'я складеної змінної, за ним - оператор "точка" і ім'я внутрішньої змінної. Внутрішній змінній можна присвоїти потрібне значення або ж прочитати її оператором Get#. Якщо запустити попередній фрагмент, запис зберігається у файлі. На мал. 8.4 показано, як виглядає вміст цього файлу в програмі Notepad.
