books.date_writing = thisform.date_writing.value and;
books.cost = thisform.cost.value;
into array b
thisform.author.value=b(1)
endif
pack
Нажатие кнопки «Назад»
thisform.release()
do form main
Нажатие кнопки «Просмотр»
Browse
n 1. Для каждого автора выдать список книг, отсортированный:
n по году выпуска,
n в алфавитном порядке все книги,
n по стоимости.
Форма:
Код:
dimension a(1)
*нашли Id автора
select authors.id_author from authors;
where thisform.author.value=lname into array a
c=a(1)
*выполнили запрос с нужным порядком сортировки
select books.book_name,countries.country,books.date_writing,books.cost from books,countries;
where id_author=c and books.id_c=countries.id_c order by date_writing
Для разных сортировок меняется поле, следующее за ключевым словом ORDER BY
n 2. Найти долю «старых » книг (срок эксплуатации больше заданного, ввод с клавиатуры) от общего числа книг.
Форма:
Код:
close tables all
use books
d=reccount()
*Текущий год
cur_data=YEAR(DATE())-VAL(thisform.age.value)
*Посчитали сколько книг эксплуатируюца столько-то лет
COUNT FOR cur_data>YEAR(date_writing) to c
*Отобразим
MessageBox(STR(c/d*100)+"%")
n 3. Найти самую дорогую книгу (по каждому автору), самую дешевую, среднюю стоимость.
Форма:
Код:
dimension a(1)
dimension b(1)
select authors.id_author from authors;
where thisform.author.value=lname into array a
c=a(1)
*Выбор макс(мин,ср) стоимости
select MAX(books.cost) from books;
where id_author=c into array b
m=b(1)
*Отобразим
MessageBox("MAX cost is "+STR(m))
Для нахождения минимальной и средней стоимостей функция MAX меняется на MIN и AVG, соответственно.
n 4. Найти книги с ценой свыше 100 р. (и любая другая сумма, т.е. предусмотреть ввод цены с клавиатуры).
Форма:
Код:
c=VAL(thisform.cost.value)
select lname,book_name,cost from books,authors;
where cost>c and books.id_author=authors.id_author
n 5. Найти все книги, поступившие из заданной страны (ввод страны), чья стоимость больше заданной (ввод стоимости).
Форма:
Код:
dimension a(1)
select countries.id_c from countries;
where thisform.country.value=country into array a
c=a(1)
d=VAL(thisform.cost.value)
select book_name,cost,country from books,countries;
where cost>d and countries.id_c=c and books.id_c=c
n 6. Найти количество книг, выпущенных за определенный период (год, 5 лет, 10 лет), за этот же период определить среднюю стоимость, самую дорогую, самую дешевую.
Форма:
Код:
dimension b(1)
*Начало периода
s=VAL(thisform.start_year.value)
*Конец периода
e=VAL(thisform.end_year.value)
*Запрос
select MAX(books.cost) from books;
where YEAR(date_writing)>=s and YEAR(date_writing)<=e into array b
m=b(1)
*Отобразим
MessageBox("MAX cost for this interval is "+STR(m))
Для нахождения минимальной и средней wty функция MAX меняется на MIN и AVG, соответственно.
n 7. Найти количество книг в библиотеке (по каждому типу и в целом) с заданным годом выпуска (ввод года).
Форма:
Код:
c=VAL(thisform.year_writing.value)
count for YEAR(books.date_writing)=c to d
MessageBox("В "+STR(c)+" было получено "+STR(d)+" книг(а)(и)")
n 8. Найти долю книг, поступивших из заданной страны (ввод страны) от общего числа книг.
Форма:
Код:
dimension a(1)
select countries.id_c from countries;
where thisform.country.value=country into array a
c=a(1)
dimension b(1)
dimension d(1)
select count(*) FROM books into array b
bb=b(1)
select count(*) FROM books into array d;
where books.id_c=c and countries.id_c=c
dd=d(1)
MessageBox("Доля книг из страны "+thisform.country.value;
+" Составляет "+STR((dd/bb)*100)+"%")
В данной программе был использован отчет, созданный с помощью Мастера Отчетов, с использованием связей между таблицами.
Внешний вид отчета:
Группирование данных осуществляется по полю lname -
«Фамилия автора»
Была освоена в достаточном объеме система управления базами
данных Microsoft Visual FoxPro 6.0, получены навыки по созданию баз данных,
изучены некоторые особенности Local SQL, неизвестные автору ранее.
1. Local SQL Guide (Поставка с Borland Database Engine из Borland C++ Builder 5.0)
2. MSDN v6.0 (Поставка с Visual Studio 6.0)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.