Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РАБОТА С ТЕКСТОВЫМИ ФАЙЛАМИ И БАЗАМИ ДАННЫХ.docx
Скачиваний:
13
Добавлен:
10.06.2015
Размер:
29.19 Кб
Скачать

Файлы с прямым доступом

Такие файлы хранят данные в формате, основанном на записи. Этот формат задается пользователем с помощью оператора Type...End Туре в зависимости от количества полей и их типа в записи:

Type recordtype

Variablel As type

Variable2 As type

VariableN As type

End Type

Записи читаются и/или записываются в три этапа: открытие файла, чтение или запись данных, закрытие файла.

Для открытия файла используется оператор Openв следующем формате:

Open "filename" For Random As #number Len = length

Если опустить параметр Len, то длина записи по умолчанию будет равна 128 байтам.

Для того чтобы сделать запись, нужно сначала объявить переменную, которая имеет тип, предварительно определенный пользователем с помощью оператора Type...End Type. Например^

Dim Record As recordtype

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

Record.variablel = выражение1

Record.variable2 = выражение2

Сформированная запись записывается в файлс помощью оператораPutследующего формата:

Put #number, recordnumber, Record

где recordnumber– номер записи, начинающийся с 1 для первой записи. Если номер находится за пределами конца текущего файла, файл расширяется. При этом неиспользованные записи будут содержать «мусор», если их специально не очистить.

Читаются записииз файла с помощью оператораGetследующего формата:

Get #number, recordnumber, Record

Переменные в Record заполняются соответствующими данными из записи и могут использоваться для отображения, печати и др.

Рассмотрим пример работы с файлом прямого доступа. Пусть требуется разработать программу заполнения файла прямого доступа записями заданной структуры с последующим чтением записи заданного номера. Формат записи:

Поле1 – Фамилия

Поле2 – Имя

Поле3 – Номер группы

После разработки формы к проекту необходимо добавить модуль, в котором следует с помощью оператора Туре.. .End Typeввести структуру записи:

Type recordtype

Name As String* 15

Namel As String* 15

NumberGroup As String * 6

End Type

Privat Sub Command1_Click(

Dim Record As recordtype

Dim number As Integer, RetInt As Integer, number1 As Integer

Dim NumberFile As Integer

NumberFile = FreeFile

Open "C:\File.txt" For Random As #NumberFile Len = 36

number =1

Do

Record.Name = InputBox("Введите фамилию", "Окно ввода")

Record.Namel = InputBox("Введите имя", "Окно ввода")

Record.NumtaerGroup = InputBox("Введите группу", "Окно ввода")

Put #NumberFile, number, Record

RetInt = MsgBox("Продолжить ввод? Да или Нет", vbQuestion +vbYesNoCancel)

If RetInt = vbYes Then

number = number + 1

Else

Exit Do

End If

Loop

numberl = InputBox("Введите № записи,которую нужно выдать")

If numberl <= number And numberl <> 0 Then

Get #NumberFile, numberl, Record

Text1.Text = Record.Name

Text2.Text = Record.Name1

Text3.Text = Record.NumberGroup

Else

MsgBox "Запись не найдена", vbCritical, "Ошибка"

End If

End Sub