А. Шевелёв

DbfWebServer. Способ эффективной работы с таблицами DBFв среде Интернет


Скачать книгу

кода, совместимых с системой CLIPPER 5.3.

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

      DBFHTM00. Используется CGI-скриптами HRB. EXE (Harbour), CLP. EXE (CLIPPER 5.3), ALS. EXE (Alaska). Скрипты работают под управлением WIN32. Для операционной системы UNIX скрипт находится в разработке, желающие могут скомпилировать его самостоятельно.

      DBFRUN00. Используется программой IXBASE. EXE, созданной системой xHarbour. Работает под управлением WIN32 и WIN64.

      DBFBLO00. Используется программой IXBASE. EXE (CLIPPER 5.3, FiveWin 1.95). Работает под управлением WIN32.

      DBFMEN00. Таблица функциональных клавиш. Используется программой IXBASE. EXE (CLIPPER 5.3, FiveWin 1.95).

      Все таблицы для вышеперечисленных программ находятся в директории

      /ixb/sys/dfw/

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

      ./dbf/

      Немного истории

      Для программы IXBASE. exe (DOS) использовалась директория /ixb/sys/dbf/.

      В связи с тем, что в идеологии системы ixBase произошли большие изменения, пришлось разделить таблицы базы данных на две группы: /DFW и /DBF.

      Динамический загрузчик

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

      первый вид – это текстовый файл dbfWebServer. txt;

      второй вид – это список таблиц: SPIDBF00.dbf, SPIDBF10.dbf, SPIDBF20.dbf (рис. 2.1).

      Таблица SPIDBF00.dbf содержит список наименований таблиц проекта.

      Таблица SPIDBF10.dbf содержит список полей таблиц.

      Таблица SPIDBF20.dbf содержит список ключей сортировок таблиц.

      Рис. 2.1. Экранная форма результата запроса к серверу dbfWebServer

      Порядок работы динамического загрузчика

      Динамический загрузчик построен на обработке ошибки, возникающей при обращении к таблице, которой нет в рабочей области системы CLIPPER (xHarbour), код ошибки subCode = 1002.

      Эта ошибка возникает, как было сказано, при попытке обращения к таблице, которая ещё не открыта. Это может быть, например, в следущих конструкциях:

      – SPIDBF00-> (dbGoTop ())

      – dbSelectArea («SPIDBF10»)

      или других конструкциях, используемых как в исходном программном коде, так и блоках кода.

      При возникновении ошибки программа обрабатывает эту ситуацию следующим образом.

      Сначала сканируется текстовый файл dbfWebServer. dbf. Если запрашиваемая таблица есть в списке этого файла, то она открывается с помощью функции ixOpen (cName). Имя этой таблицы заносится в массив arrDbfOpe. Если таблица отсутствует физически, то она сначала создаётся и затем открывается. Все необходимые атрибуты для этого случая должны находиться в списке в специальном формате, как приведено в файле dbfWebServer. dbf для определённых в нём таблиц.

      Формат этого файла следующий.

      Таблицы разделены специальной строкой из звёздочек —

      *********************************************************

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

      Следующие строки представляют описание индексов таблицы.

      Сколько