Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ИП 2010-04-04 doc.doc
Скачиваний:
108
Добавлен:
13.05.2015
Размер:
5.96 Mб
Скачать

16.11. Совместная работа с файлами, базами и отчетами

В задаче создаются: основной файл и файлы‑справочники наимено­ва­ний кодов (код и наименование), которые используются для расшиф­ровки кодов при формировании отчетов (значение кода является порядко­вым номером записи справочника при разработке в Quick Basic); прог­рам­мы создания и ведения файлов (базы данных), отчета с итогами, меню вызова этих программ.

При работе в Visual Basic нужно создать:

1. Базу данных из трех таблиц средствами Visual Data Manager.

2. Три формы мастером форм для заполнения таблиц с русифи­циро­ванными кнопками и наименованиями колонок и полей.

3. Базовый запрос и два запроса к справочникам. Запросы оформить в виде форм.

4. Один отчет средствами Crystal Reports и/или DataReport с деталь­ны­ми строками, расшифровками кодов, с итогами по двум указанным уров­ням и по одном отчету ‑ описи на каждую таблицу.

5. Меню из пунктов: формы, запросы, отчеты и выход для вызова раз­­работан­ных форм, запросов, отчетов и выхода из приложения.

Пример задачи для Quick Basic

Разработать комплекс программ учета поставок товаров на склад из программ:

P1 ‑ создание последовательного текстового файла поставок POST.TXT. Каждая строка содержит пять данных о поставке конкретного товара: код товара (целочисленное), дата поставки (строка из 8 символов вида дд.мм.гг), количество (вещественное), наименование единицы измерения (строка из 5 символов), цена (вещественное). Будем считать, что номенклатура товаров составляет не более 10 различных товаров;

P2 ‑ создание пустого файла (форматирование) справочника товаров STOVAR.TXT с прямым методом доступа. Каждая запись этого файла содержит код (целочисленный) и наименование отдельного товара (строка из 20 символов). При форматировании выводятся 10 пустых записей;.

P3 ‑ создание файла справочника товаров STOVAR.TXT с прямым методом доступа. Будем считать, что код товара является порядковым номером записи с наименованием этого товара в справочнике товаров;

P4 ‑ формирование отчета (рис. 16.11.1).

Ведомость поставки товаров лист 1

Наименование

товара

Дата

поставки

Количество

Единица

изм.

Цена,р.

Стоимость

Масло

03.08.96

100.000

кг

2000

2000000.00

...

Итого на складе товаров на сумму 9200000.00

Рис. 16.11.1. Вид отчета

Текст программ

REM P1 ‑ программа создания файла поставок товара

CLS 'очистка экрана

DIM kt AS INTEGER 'код товара ‑ целочисленная переменная

DIM dp AS STRING * 8 'дата поставки ‑ строка вида дд.мм.гг

DIM kol AS SINGLE 'количество ‑ вещественная переменная

DIM ed AS STRING * 5 'наименование единицы измерения, 5 символов

DIM cena AS SINGLE 'цена ‑ вещественная переменная

OPEN “POST.TXT” FOR OUTPUT AS #1 'открытие выходного файла

‘поставок POST.TXT под номером 1

DO WHILE 1 'начало бесконечного цикла ввода данных

INPUT “Введите код товара (0-выход)”, k t 'ввод кода товара в KT

IF kt <= 0 OR kt > 10 THEN EXIT DO 'выход из цикла ввода

INPUT “Введите дату поставки (дд.мм.гг)”, dp 'ввод даты в DP

INPUT “Введите количество “, kol 'ввод количества в KOL

LINE INPUT “Введите единицу измерения “, ed 'ввод единицы в ED

INPUT “Введите цену “, cena 'ввод цены в CENA

'вывод значений полей в файл поставок POST.TXT:

WRITE #1, kt, dp, kol, ed, cena

LOOP 'конец тела цикла ввода данных

CLOSE #1 'закрытие файла поставок POST.TXT

REM P2 - форматирование справочника товара STOVAR.TXT

CLS 'очистка экрана

TYPE stovar 'начало определения типа под именем STOVAR

kt AS INTEGER 'код товара ‑ целочисленное поле

nt AS STRING * 20 'наименование товара ‑ строка из 20 символов

END TYPE 'конец определения типа STOVAR

DIM zstovar AS stovar 'определение записи ZSTOVAR типа STOVAR

DIM i AS INTEGER 'определение целочисленной переменной I

OPEN “STOVAR.TXT” FOR RANDOM AS #1 LEN = LEN(zstovar)

'открытие справочника товаров STOVAR.TXT под номером 1 c прямым

‘доступом с длиной записи, равной длине записи ZSTOVAR.

FOR i = 1 TO 10 ' цикл вывода 10 пустых записей в STOVAR.TXT

PUT #1, i, zstovar 'вывод очередной пустой записи ZSTOVAR в файл

‘STOVAR.TXT в запись этого файла под номером 1

NEXT 'конец тела цикла FOR

CLOSE #1 'закрытие пустого файла справочника товаров STOVAR.TXT

REM P3 ‑ программа создания справочника товара STOVAR

CLS 'очистка экрана

TYPE stovar 'начало определения типа под именем STOVAR

kt AS INTEGER 'код товара ‑ целочисленное поле

Nt AS STRING * 20 'наименование товара ‑ строка из 20 символов

END TYPE 'конец определения типа STOVAR

DIM zstovar AS stovar 'определение записи ZSTOVAR типа STOVAR

OPEN “STOVAR.TXT” FOR RANDOM AS #1 LEN = LEN(zstovar) ‘открытие справочника товаров STOVAR.TXT под номером 1 c прямым

'доступом с длиной записи, равной длине записи ZSTOVAR

DO WHILE 1 'начало бесконечного цикла ввода данных

INPUT “Введите код товара (0-выход) “, zstovar.kt 'ввод кода товара в KT

IF zstovar.kt <= 0 OR zstovar.kt > 10 THEN EXIT DO 'выход из цикла LINE INPUT “Введите название товара “;zstovar.nt 'ввод названия в поле NT

PUT #1, zstovar.kt, zstovar 'вывод записи ZSTOVAR в файл STOVAR.TXT

' в запись этого файла под номером, равным коду товара в поле KT

LOOP 'конец тела цикла ввода данных

CLOSE #1'закрытие созданного файла справочника товаров TOVAR.TXT

REM P4 ‑ программа формирования отчета поставок товара

CLS 'очистка экрана

DIM kt AS INTEGER 'код товара ‑ целочисленная переменная

DIM dp AS STRING * 8 'дата поставки ‑ 8 символов вида дд.мм.гг

DIM kol AS SINGLE 'количество ‑ вещественная переменная

DIM ed AS STRING * 5 'наименование единицы измерения, 5 символов

DIM cena AS SINGLE 'цена ‑ вещественная переменная

DIM itog AS DOUBLE 'счетчик итогов по отчету

OPEN “POST.TXT” FOR INPUT AS #1 'открытие файла под номером 1

TYPE stovar 'начало определения типа под именем STOVAR

kt AS INTEGER 'код товара ‑ целочисленное поле

Nt AS STRING * 20 'наименование товара ‑ строка из 20 символов

END TYPE 'конец определения типа STOVAR

DIM zstovar AS stovar 'определение записи ZSTOVAR типа STOVAR

OPEN “STOVAR.TXT” FOR RANDOM AS #2 LEN = LEN(zstovar) 'открытие ‘справочника товаров STOVAR.TXT под номером 2 c прямым доступом с длиной ‘записи, равной длине записи ZSTOVAR

CALL shapka 'запуск процедуры вывода заголовка первого листа отчета

DO WHILE NOT EOF(1) 'начало цикла чтения файла POST.TXT до ‘конца ‘файла (функция EOF(1) возвращает истину при достижении конца файла)

‘чтение очередных данных из файла поставок POST.TXT

‘в поля KT, DP, KOL, ED, CENA соответственно:

INPUT #1, kt, dp, kol, ed, cena

GET #2, kt, zstovar 'чтение записи из справочника STOVAR.TXT под ‘номером, равным введенному коду товара в поле KT записи ZTOVAR, и ‘помещение прочитанной записи в ZSTOVAR. Таким образом, в поле ‘ZSTOVAR.NT будет находиться наименование прочитанного из POST.TXT ‘очередного товара.

IF CSRLIN >23 THEN 'переход на следующий лист при заполнении листа

PRINT “Esc-закончить вывод; PgDn-перейти на следующий лист”

SLEEP 'остановка работы программы до нажатия любой клавиши.

‘Если была нажата Esc, то выйти из цикла чтения файла, иначе ‑ запустить ‘процедуру вывод заголовка следующего листа:

IF INKEY$ = CHR$(27) THEN EXIT DO ELSE CALL shapka

END IF 'конец оформления заголовка следующего листа отчета

itog = itog+kol*cena ‘увеличение итогового счетчика на стоимость товара

'вывод очередной строки отчета.

PRINT USING “\ \ \ \ ######.### \ \ ###### #######.###”; zstovar.nt;dp; kol; ed; cena; kol*cena

LOOP 'конец тела цикла чтения файла POST.TXT

PRINT USING “Итого по отчету ###########.###”; itog

RESET 'закрытие всех файлов и конец основной программы.

'далее идет текст процедуры SHAPKA ‑ вывода заголовка листа отчета

SUB shapka ‘процедура SHAPKA ‑ вывод заголовка листа отчета.

CLS 'очистка экрана дисплея

STATIC nl AS INTEGER 'определение статической целочисленной ‘переменной NL, в которой формируется номер очередного листа отчета

nl = nl + 1 'номер листа увеличивается на единицу

'далее следуют команды вывода заголовка очередного листа:

PRINT ” Ведомость поставки товаров лист”; nl

PRINT ”----------------------------------------------------------------------------------------------------”

PRINT ”| Наименование | Дата | Количество| Единица |Цена,| Стоимость |”

PRINT ”| товара | поставки | | изм . | р. | |”

PRINT ”---------------------------------------------------------------------------------------------------”

END SUB 'конец тела процедуры SHAPKA

Задачи для программирования