Создание базы данных “Библиотека”, страница 2

Первичными данными для БД является таблица «Авторы», таблица «Страны» и таблица «Книги». Существует несколько методов для ввода данных в таблицы, например, можно вводить данные, используя команду append в окне CommandWindow, можно воспользоваться мастером создания форм, который создает необходимые для этого средства. В данной работе для ввода первичных данных было решено использовать самостоятельно созданы формы и вручную прописывать код работы с таблицами.

Рассмотрим формы ввода всех трех таблиц.

Форма ввода данных таблицы «Авторы»

Код, используемый для работы с таблицей:

Активация формы

close tables all

*Открыли таблицу

use authors

*В начало

go top

*Выбор начальных данных для отображения в элементах управления

thisform.lname.value=lname

thisform.aname.value=name

thisform.mname.value=mname

thisform.birth_date.value=birth_date

dimension a(1)

*Находим по связи нужное значение

select countries.country from data1!countries,data1!authors;

  where countries.id_c=authors.id_c AND;

  authors.lname = thisform.lname.value and;         

    authors.name = thisform.aname.value and;        

      authors.mname = thisform.mname.value;         

    into array a

*Найденное значение – в элемент управления

thisform.country.value=a(1)

Нажатие кнопки «Предыдущий»

*Проверки на то, если мы на первой записи таблицы

if recno() > 1 and id_author!=1 then

      skip -1

*Поместили найденные значения в элементы управления

thisform.lname.value=lname

thisform.aname.value=name

thisform.mname.value=mname

thisform.birth_date.value=birth_date

dimension a(1)

*Находим значение по связи

select countries.country from data1!countries,data1!authors;

  where countries.id_c=authors.id_c AND;

  authors.lname = thisform.lname.value and;         

    authors.name = thisform.aname.value and;        

      authors.mname = thisform.mname.value;         

    into array a

*Найденное значение – в элемент управления

thisform.country.value=a(1)

endif

Нажатие кнопки «Следующий»

*Проверки на последнюю запись в таблице

if recno() < reccount() then

  skip

*Поместили найденные значения в элементы управления

thisform.birth_date.value=birth_date

thisform.lname.value=lname

thisform.aname.value=name

thisform.mname.value=mname

dimension a(1)

*Находим значение по связи

select countries.country from data1!countries,data1!authors;

  where countries.id_c=authors.id_c AND;

  authors.lname = thisform.lname.value and;         

    authors.name = thisform.aname.value and;        

      authors.mname = thisform.mname.value;         

    into array a

*Найденное значение – в элемент управления

thisform.country.value=a(1)

endif

Нажатие кнопки «Добавить»

dimension b(1)

*Находим максимальный индекс

select max(id_author) from authors into array b

*Добавляем 1, тем самым обеспечивая уникальность (аналог типа autoincrement в *СУБД Paradox и DBase)

c = b(1)+1

dimension a(1)

*Нашли индекс страны

select countries.id_c from data1!countries,data1!authors;

  where countries.country= thisform.country.value;        

    into array a

*Добавили пустую запись

append blank

*Заменили ее теми данными, которые находятся в элементах управления

replace id_c with a(1)

replace id_author with c

replace lname with thisform.lname.value

replace name with thisform.aname.value

replace mname with thisform.mname.value

replace birth_date with thisform.birth_date.value

Нажатие кнопки «Удалить»

*Помечаем запись на удаление

delete

*Отматываем на одну назад

if (id_author!=1)

  skip -1

*Отображаем запись

  thisform.birth_date.value=birth_date

thisform.lname.value=lname

thisform.aname.value=name

thisform.mname.value=mname

dimension a(1)

select countries.country from data1!countries,data1!authors;

  where countries.id_c=authors.id_c AND;

  authors.lname = thisform.lname.value and;         

    authors.name = thisform.aname.value and;        

      authors.mname = thisform.mname.value;         

    into array a

thisform.country.value=a(1)

endif 

*Физически удаляем запись

pack

Нажатие кнопки «Просмотр»

Browse

Нажатие кнопки «Назад»

thisform.release()

*Вызываем главную форму

do form main

Форма ввода данных таблицы «Страны»

Код, используемый для работы с таблицей:

Активация формы

use

use countries

go top

thisform.country.value=country

Нажатие кнопки «Предыдущий»

if recno() > 1 and id_c!=1 then

      skip -1

    thisform.country.value=country

endif