Последовательный доступ к файлу




ПРАКТИЧЕСКАЯ РАБОТА №7. ПРОГРАММИРОВАНИЕ В БАЗАХ ДАННЫХ.

Задача 1. Использование стандартных функций.

Решим следующую задачу на использование стандартных функций, в частности на функции для работы с файлами.

Пусть необходимо данные пользовательской формы сохранять в определенный текстовый файл. Также должна быть возможность открытия текстового файла с сохраненными критериями и выполнять отбор записей в форме в соответствии с этими критериями.

Также решим эту задачу путем создания пользовательской панели инструментов и меню.

Решение.

Перейдите на вкладку Модули. Создайте новый модуль.

Создадим две процедуры, одна из которых будет сохранять данные из формы, например Расход. А вторая процедура будет извлекать информацию из текстового файла, и применять в соответствии с этой информацией фильтр для отображения записей в форме.

Для создания первой процедуры (или функции – в нашем случае создание функции будет предпочтительнее, так как потом у нас будет возможность использовать ее для создания макроса) введите ниже объявление вида:

Function SaveFileTextMy()

End Function

 

Для работы с файлами будем использовать стандартные функции Открытия, Закрытия, Чтения и Записи.

Открытие и закрытие файла

Работа с файлом начинается только после его открытия или создания посредством процедуры Open.

Синтаксис процедуры Open следующий:

Open имяФайла For способДоступа [Access доступ] [ограничение] As
[#]номерФайла [Len=длинаЗаписи]

Параметр имяФайла — это строка, содержащая имя открываемого файлам путь к нему. Если указание пути отсутствует, то по умолчанию считается, что файл находится в текущей папке приложения, например «Мои документы». Если указанный файл не существует, то он создается.

После ключевого слова For идет параметр способДоступа, определяющий способ доступа к файлу. Его значением могут быть только следующие константы: Input, Output, Append, Random, Binary.

Следующий необязательный параметр доступ ограничивает набор операций, разрешенных над файлом. Данный параметр может принимать следующие значения:

§ Read (только чтение),

§ Write (только запись),

§ Read Write (и чтение и запись).

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

§ Shared (без ограничений),

§ Lock Read (блокировка чтения),

§ Lock Write (блокировка записи),

§ Lock Read Write (блокировка и чтения, и записи).

Следующий параметр номерФайла — это целое число от 1 до 511, однозначно идентифицирующее файл для других процедур и функций. Для каждой операции открытия этот номер должен быть отличен от уже используемых номеров. Узнать очередной свободный номер можно посредством функции FreeFile.

Необязательный параметр длинаЗаписи — это число не более 32767, задающее длину одной записи в байтах для произвольного доступа; размер буфера для последовательного доступа; параметр игнорируется для бинарного доступа.

 

После открытия файла и работы с ним необходимо его закрыть. Для закрытия файла используются две функции Close и Reset.

Синтаксис процедуры Close следующий:

Close [ [#] номерФайла] [, [#] номерФайла]...

Параметр номерФайла — это номер открытого файла. После его закрытия этот номер можно повторно использовать в процедуре Open. Если этих параметров нет, то закрываются все открытые файлы. Аналогично действует безаргументная функция Reset.

Таким образом, добавим в нашу процедуру код для создания текстового файла с именем FileText.txt.

Open "С:\Мои документы\ FileText.txt " For Output As #1

Close #1

Замечание. Путь к файлу создайте самостоятельно в зависимости от наличия локальных дисков и открытых для использования студентами папок. Например, путь может быть таким

"X:\Users\ МТ-451\Иванов\FileText.txt "

 

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

Последовательный доступ к файлу

Запись информации в файл осуществляется двумя процедурами Print и Write, в зависимости от последующего использования этих данных. Если данные будут использоваться в дальнейшем только для форматированного вывода на экран, то используется процедура Print, если, наоборот, данные будут в последующем считываться, рекомендуется использование процедуры Write.

Синтаксис процедуры Print:

Print #номерФайла, [списокВывода]

Параметр номерФайла — это номер файла, открытого со способами доступа: Append или Output.

Параметр списокВывода — это выражение или список выражений следующего вида:

[{Spc(n) | Tab[(n)]}] [выражение] [позицияСимвола]

Где Spc(n) задает количество вставляемых пробелов, a Tab(n) задает номер столбца, в котором будет начинаться текст, выражение — это строковое или числовое выражение, параметр позицияСимвола задает точку вхождения следующего за выражением символа.

Синтаксис процедуры Write:

Write #номерФайла, [списокВывода]

Здесь смысл параметра номерФайла тот же, а списокВывода — это одно или несколько выражений, разделенных пробелами, запятыми или точками с запятой.

Для некоторых значений (таких как Null, True и т. д.) есть ряд соглашений, однозначно определяющих форму их вывода. Например, значение Null выводится строкой символов #Null#.

Отличие между Print и Write в том, что последний оператор при записи вставляет запятые между соседними значениями и заключает строковые выражения в кавычки.

В нашем случае необходимо записать данные в текстовый файл из формы Расход, а именно значения всех ее полей в текущей записи. Для этого добавьте следующий код:

Dim K1 As String

Dim K2 As String

Dim K3 As String

Dim K4 As String

Dim K5 As String

K1 = Forms![Расход]![Код_расхода].Value

K2 = Forms![Расход]![Код_клиента].Value

K3 = Forms![Расход]![Дата_накладной].Value

K4 = Forms![Расход]![Идентифик№клиента].Value

K5 = Forms![Расход]![ФИОклиента].Value

Open " С:\Мои документы\ FileText.txt " For Output As #1

Write #1, K1, K2, K3, K4, K5

Close #1

Работа с процедурой SaveFileTextMy() закончена, сохраните ее. Выполнить мы ее пока не можем, так как ее нужно прикреплять либо к макросу, либо к обработчику события.

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



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: